Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-98841
pasha_golub
2003-10-11 14:47
2003.10.30
Безопасность чата


3-98523
nortsov
2003-10-08 08:50
2003.10.30
проблема, update для обновления записей в связанных таблицах


1-98609
kukuikar
2003-10-14 18:08
2003.10.30
Как WinAmp


14-98809
undert
2003-10-12 13:20
2003.10.30
Желающим ...


14-98839
sagchat
2003-10-11 15:32
2003.10.30
Посоветуйте сотку в пределах 100$





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский