Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Старый вопрос по Grid


Автор: FlaGmaN 20.3.2008, 18:11
Уважаемые друзья!

мне необходимо сделать так, что при нажатии на ячейку в ней менялся фон и цвет(ehGrid), но есть нюанс. 
Снятие выделения с ячейки должно происходить по повторнуму нажатию на нее и одновременно может быть выделенно несколько ячеек.

пытался вертеть код
Код

if (gdFocused in State) then
  begin
    ClientTaskPhases030JvDBGrid.Canvas.Brush.Color := clBlack;
    ClientTaskPhases030JvDBGrid.Canvas.Font.Color := clWhite;

end ;


Но ничего не вышло. 

P.S. У кого есть какие - либоо соображения по этому поводу прошу высказаться.

Автор: Alix 20.3.2008, 18:37
Цитата(FlaGmaN @  20.3.2008,  18:11 Найти цитируемый пост)
Но ничего не вышло. 

что конкретно не вышло? цвет не изменился, не получается чтобы снималось при повторном клике или что?
покажи, кстати, весь код прорисовки ячейки

Автор: FlaGmaN 21.3.2008, 09:40
В свойство ondrawdatacell компонента TJvDBGrid вставил выше написанный код, но никакой реакции от программы не последовало. На всякий случай вставил этот же код в свойство ON Drawcolumncell. результат то же.

Автор: FlaGmaN 21.3.2008, 09:56
Так, с выделение многих сток. я только что разобрася. option->multiselect = true;

Теперь взник вопрост при этом самом мульти селекте как сделать так чтобы данные из конкретной ячейки передавались в edit на другой форме. Я использую 
 DeliveryForm.Edit7.Text:=cliData.qClientPhases.Fields[2].Text; но как понятно передается только одна последняя выбранная ячейка. А мне нужно сделать так чтобы до восьми значений передавалось с edit2 по edit9.

Мжет кто может подсказать алгоритм или код подбросит.

С уважением,FlaGmaN, 

Автор: Alix 21.3.2008, 10:33
Цитата(FlaGmaN @  21.3.2008,  09:40 Найти цитируемый пост)
В свойство ondrawdatacell компонента TJvDBGrid вставил выше написанный код, но никакой реакции от программы не последовало. На всякий случай вставил этот же код в свойство ON Drawcolumncell. результат то же. 

видимо забыл в св-вах компонента поставить DefaultDraw в false. (точного названия св-ва не помню, но вроде так)

Автор: FlaGmaN 21.3.2008, 11:26
Господа! как можно отследить что строка выбрана? и в какой процедуре это описать

Автор: Alix 21.3.2008, 13:58
Цитата(FlaGmaN @  21.3.2008,  11:26 Найти цитируемый пост)
как можно отследить что строка выбрана? и в какой процедуре это описать 

если используешь TClientDataSet, то это событие OnAfterScroll. Если нет, то должен быть аналог. А выделенные ячейки можно получить, по-моему, в TDBGrid.SelectedRows.

Автор: FlaGmaN 21.3.2008, 14:55
В процессе вышел следующий код

for i:=0 to ClientTaskPhases030JvDBGrid.SelectedRows.Count-1 do
begin
clidata.qclientphases.bookmark:= ClientTaskPhases030JvDBGrid.selectedrows;
stringar:=cliData.qClientPhases.Fields[2].Text;
end;

error :incompatible types: "Strind"and "Tbookmarklist"

Подскажите что сделать чтоб исправить ошибку

Автор: Akella 21.3.2008, 14:58
используй выделение с Ctrl+ЛКМ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)