![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите пожалуйста с написанием компонента!
qwerty2 © (2003-01-26 14:12:00)Создаю свой компонент на основе DBCheckBox. Поведене компонента должно отличаться от стандартного только тем что при отображении значения NULL в базе в DBCheckBoxе отображать не серую галочку а серый квадратик. Создаю компонент наследник от DBCheckBox и переписываю метод Repaint:
procedure TDBCheckBoxGr.Repaint;
var cbhwnd:HWND;
cbdc:HDC;
R1:TRect;
Br:HBrush;
begin
inherited;
if State=cbGrayed then
begin
cbhwnd:=Handle;
cbdc:=GetDC(cbhwnd);
Br:=CreateSolidBrush(clMedGray);
R1.Left:=2;
R1.Top:=3;
R1.Bottom:=13;
R1.Right:=12;
fillrect(cbdc,R1,Br);
end;
end;
после чего поведение моего компонента ничем не отличается от стандартного хотя переписан метод Repaint. Подскажите пожалуйста что не так!
MXA (2003-01-26 16:25:00) [1]procedure BMSETCHECK(var Message: TMessage); message BM_SETCHECK;
...
procedure TMyDBCheckBox.BMSETCHECK(var Message: TMessage);
begin
if Message.WParam=ord(cbGrayed) then
Message.WParam:=ord(cbUnchecked);
inherited;
end;
// может можно как-то проще?
Юрий Зотов (2003-01-26 15:55:00) [2]Вероятно, метод Repaint просто не вызывается в те моменты, которые Вам нужны. Заместите не Repaint, а обработчик сообщения WM_PAINT - вот там уж точно все сработает.
qwerty2 (2003-01-26 15:38:00) [3]Неужели никто не знает?