Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

Разноцветный потомок DbGrid   Найти похожие ветки 

 
European   (2003-10-08 01:11) [0]

Уважаемые дамы и господа!
Ниже приведен код потомка DBGrida, в котором я хочу получить все строки одного цвета, отличного от стандартного, а выделенную строку – другим цветом. При компиляции возникает ошибка Declaration of " DrawColumnCell " differs from previous declaration в строке {*****}. Ответьте, пожалуйста, на один вопрос: что изменить чтобы всё заработало. Заранее благодарен!

unit MyDBGrid;
interface
uses Windows, DBGrids, Messages, Classes, Types, DB, Grids, Graphics, QControls, Dialogs;

Type
TMyDBGrid = class (TDBGrid)
Private
FOnDrawDataCell: TDrawDataCellEvent;
Protected
property OnDrawDataCell: TDrawDataCellEvent read FOnDrawDataCell write FOnDrawDataCell;
procedure DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); override; {*****}
public
constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TMyDBGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgRowSelect,dgConfirmDelete,dgCancelOnExit];
DefaultDrawing:=true;
end;

procedure TMyDBGrid.DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender).Canvas do
begin
Brush.Color:=clGreen; Font.Color:=clWhite; FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
end;

if gdSelected in State then
begin TDBGrid(Sender).Canvas.Brush.Color:= clRed; end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

end.


 
gek ©   (2003-10-08 07:10) [1]

procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState); override;


 
European   (2003-10-09 00:05) [2]

to gek
> procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
> Column: TColumn; State: TGridDrawState); override;


В таком случае возникает 2 вопроса:
1 - как добраться без Sender-а до канвы DBGrida?
2 - почему стандартный обработчик события OnDrawDataCell имеет такой прототип как указано в исходном коде?


 
ЮЮ ©   (2003-10-09 02:30) [3]

1. если в DrawColumnCell, то просто Canvas, т.е. св-во самого компонента
2. Не путай метод DrawDataCell и обработчик OnDrawDataCell


 
European   (2003-10-10 00:16) [4]

Да, уважаемые! Вы как всегда правы.
Использовал прототип, представленный gek-ом, а до канвы добрался через Self. Предполагаю что тема закрыта. Если у кого есть соображения - пишите.



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

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
6-98776
alex732
2003-09-03 10:22
2003.10.30
Не ловится событие OnConnectionFailed в TNMMsg


3-98507
Брат
2003-10-09 10:55
2003.10.30
Как на основе 2 вычисляемых полей посчитать третье?


14-98795
DimaK
2003-10-13 12:09
2003.10.30
обломс


1-98740
vvvvvvv
2003-10-20 14:40
2003.10.30
Как у StringGrid сделать Flat SсrollBar?


3-98466
k_len
2003-10-10 06:55
2003.10.30
Одинаковые записи