Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Раскраска dbgrideh

Автор: Olga_vlas
Дата сообщения: 02.03.2009 11:40
Необходимо пользователю предоставить возможность выделять цветом строки
Делаю так : завела дополнительный столбец и две кнопки одна выделить (в ней в этот столбец пишется 1) и другая- отменить выделение (в ней в этот столбец пишется 0).
С этим проблем нет . В событие procedure TForm38.DBGridEh1GetCellParams(Sender) идет прорисовка. Чтобы пользователь увидел что строка выделена передергиваю запрос. А это достаточно медленно. Можно ли каким нибудь другим способом отрисовать цвет шрифта в ячейке ? Нашла временное выделение строки но как только курсор меняет свое местоположение выделение пропадает? Подскажите плиз

Добавлено:
Люди подскажите можно ли как-нибудь расскарить строки кроме как DBGridEh1GetCellParams(Sender)?
Автор: Tantos
Дата сообщения: 03.03.2009 01:53
Olga_vlas
А чем плохи события OnDraw*Cell? Код для раскраски в студию!
Автор: ShIvADeSt
Дата сообщения: 03.03.2009 02:50

Цитата:
Необходимо пользователю предоставить возможность выделять цветом строки
Делаю так : завела дополнительный столбец и две кнопки одна выделить (в ней в этот столбец пишется 1) и другая- отменить выделение (в ней в этот столбец пишется 0).
С этим проблем нет . В событие procedure TForm38.DBGridEh1GetCellParams(Sender) идет прорисовка. Чтобы пользователь увидел что строка выделена передергиваю запрос. А это достаточно медленно. Можно ли каким нибудь другим способом отрисовать цвет

Изначально неправильный подход с передергиванием запроса (сам вначале так делал - постоянные мерцания при выделении и снятии). Как я делаю, в базе данных создаю таблицу tMark состоящую из 2 столбцов SPID и ID
В SPID пишу значение @@SPID для вашей программы (оно уникально в рамках одновременно запущенных сессий), а ID - это айдишник (ключевое поле) записей.
Далее при выделении ты добавляешь запись в эту таблицу insert into tMark spid=@@spid, Id="тут айдишник твоей записи". При снятии выделения соотв удаляешь из таблицы. При старте программы грохаешь все записи со spid=@@spid (вдруг чужой мусор). Далее в момент отрисовки ты смотришь есть ли текущая (отрисоываемая) запись в это таблице (через Query.Locate('ID',qrCards.FieldByName('CardID').AsInteger,[]); примерно так, если есть то закрашиваешь иначе нет. Самый лучший способ ИМХО, работает быстро и качественно.

Страницы: 1

Предыдущая тема: VBS: Сменить сетевые настройки в альтернативной конфигурации


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.