Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизРазноцветный потомок 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c