Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

DBGRID. Узнать State для остальных ячеек строки в DrawColumnCell   Найти похожие ветки 

 
SergP ©   (2004-11-04 14:42) [0]

Старался всегда поменьше юзать DBGRID (какой-то он в отличии от всего остального неудобный). Но вот понадобился он мне.Поэтому приходится задавать вопросы (возможно и тупые). Ногами только не бейте плиз...

В данном случае хочу сделать чтобы строка в гриде выделялась например светло-синим цветом, а редактируемая ячейка темно-синим.
Если настроить грид так чтобы выделялась вся строка, то он становится readonly

А если пытаться отрисовывать ячейки в OnDrawColumnCell то мне, чтобы сделать ячейку светло-синим цветом нужно знать нет ли в данной строке ячеек с dgSelected в State.
Как в OnDrawColumnCell узнать State для остальных ячеек этой строки?


 
SergP.   (2004-11-04 18:27) [1]

Удалено модератором


 
MORA   (2004-11-04 18:42) [2]

Я всегда думал, что State это свойство записи, а не ячейки.
Или я чего-то не понимаю?


 
SergP.   (2004-11-04 19:02) [3]


> MORA   (04.11.04 18:42) [2]
> Я всегда думал, что State это свойство записи, а не ячейки.
> Или я чего-то не понимаю?


Я тоже сначала так думал...
Может это я что-то не понимаю, но работать не хочет...
Когда проверяю или dgSelected in State и затем рисую эту ячейку каким-нить цветов то в итоге этот цвет имеет не вся строка (запись) а только одна ячейка.

Проверю еще или я не намутил что-нить в коде.


 
MORA   (2004-11-04 19:25) [4]

У меня так всё работает:

...
dbgOrderDetails.Canvas.Brush.Color := clBlue; // на голубом фоне
dbgOrderDetails.Canvas.Font.Color := clWhite; // белыми буквами
if gdSelected in State then
 dbgOrderDetails.Canvas.Brush.Color := clHighlight;
 dbgOrderDetails.Canvas.Font.Color := clHighlightText;
end;
(Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
...


 
MORA   (2004-11-04 19:30) [5]

Читай http://www.delphikingdom.com/helloworld/dbgridcolor.htm


 
SergP ©   (2004-11-04 20:16) [6]

procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if gdSelected in State then DBGrid1.Canvas.Brush.Color := $ffc0ff;
 DBGrid1.DefaultDrawColumnCell(rect,Datacol, Column, state);
end;

Окрашивается только ячейка которая имеет фокус. Остальные какие были, такие и остались...


 
SergP ©   (2004-11-04 22:34) [7]


> Читай http://www.delphikingdom.com/helloworld/dbgridcolor.htm


Это я знаю, но здесь абсолютно ничего нет по поводу сабжа.
Мне нужно отрисовать другим цветом ячейки текущей записи, не переводя при этом грид в readonly. А вот как в onDrawColumnCell узнать, ячейка текущей записи или нет отрисовывается в данный момент?


 
ЮЮ ©   (2004-11-05 06:23) [8]


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if
   (Column.Field.DataSet.Fields[0].AsInteger = Column.Field.DataSet.Tag) and
   // "текущая" запись DataSet-а
   not (gdSelected in State)
   // ячейка не выбрана
 then begin
   TDBGrid(Sender).Canvas.Brush.Color := clBlue; // на голубом фоне
   TDBGrid(Sender).Canvas.Font.Color := clWhite; // белыми буквами
 end;
 TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
 DataSet.Tag := DataSet.Fields[0].asInteger;
   // запоминаем значение ключевого поля
end;


 
SergP ©   (2004-11-05 14:51) [9]


> [8] ЮЮ ©   (05.11.04 06:23)


  (Column.Field.DataSet.Fields[0].AsInteger = Column.Field.DataSet.Tag)

Компилятор это проглотил, но в ран-тайме вылезали эксепшены...
х/з в чем дело, но ключевое поле у меня есть.

Вобщем основываясь на Ваших мыслях, сделал по другому:

type TSGrid = class(TDBGrid)

....

if  TSGrid(Sender).row=TSGRID(sender).DataLink.ActiveRecord+1  then ...

Теперь работает...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
9-1091466928
Xerx
2004-08-02 21:15
2004.12.05
как покрыть плиткой круг


6-1095857699
Lomaster
2004-09-22 16:54
2004.12.05
Как послать файл на e-mail посредством delphi?


3-1099982571
diabolik_krsk
2004-11-09 09:42
2004.12.05
Удаление записей из подчиненной таблицы


10-1069923058
hellmachine
2003-11-27 11:50
2004.12.05
Программный выбор dll с com-классами


1-1100702009
AlexxGold
2004-11-17 17:33
2004.12.05
Перевод ресурсов делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский