Главная страница
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.018 c
4-98930
Davinchi
2003-08-25 18:51
2003.10.30
Интерфейс TWebBrowser.Document


1-98556
TurburatoR
2003-10-20 12:02
2003.10.30
Очистка String


6-98771
Finger
2003-09-04 12:04
2003.10.30
MAC


1-98691
denis24
2003-10-21 12:11
2003.10.30
вызов внешнего приложения


1-98541
Silver_
2003-10-20 13:27
2003.10.30
TDateTimePicker - звездец какой-то