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

Вниз

Обработка события дочернего компонента   Найти похожие ветки 

 
Сатир   (2006-03-13 13:54) [0]

Здраствуйте уважаемые!
На днях столкнулся с такой ситуацией.
Создаю в runtime экземпляр объекта TButton

 btn:=TButton.Create(Form1);
 btn.Parent:=Form1;
 btn.OnClick:=Button3Click;
 btn.BoundsRect:=StringGrid1.CellRect(1,1);
Когда Owner и Parent кнопки заданы как Form1, всё чудестно работает и вызывается обработчик Button3Click.(кнопка Button3 создана на форме в designtime и для неё написан статический обработчик клика на ней тоже в designtime)

Но стоит задать Owner и Parent как StringGrid1, обработчик клика на этой кнопке перестает работать.
 btn:=TButton.Create(StringGrid1);
 btn.Parent:=StringGrid1;
 btn.OnClick:=Button3Click; <---НЕ РАБОТАЕТ!!!
 btn.BoundsRect:=StringGrid1.CellRect(1,1);

Вопрос к знатокам:
как назначить обработчик клика динамически создаваемой кнопке, которая будет принадлежать компоненту StringGrid1?
Заранее благодарен.


 
MBo ©   (2006-03-13 13:57) [1]


 TControlgrid = class(TStringgrid)
 private
   { Private declarations }
   Procedure WMCommand( var msg: TWMCommand ); message WM_COMMAND;
 protected
   { Protected declarations }
 public
   { Public declarations }
 published
   { Published declarations }
 end;

procedure TControlgrid.WMCommand(var msg: TWMCommand);
begin
 If EditorMode and ( msg.Ctl = InplaceEditor.Handle ) Then
   inherited
 Else
   If msg.Ctl <> 0 Then
     msg.result :=
       SendMessage( msg.ctl, CN_COMMAND,
                    TMessage(msg).wparam,
                    TMessage(msg).lparam );
end;



 
balepa ©   (2006-03-13 13:59) [2]


>  btn.OnClick:=Button3Click

btn.OnClick:=Form1.Button3Click ?
А как описана Button3Click ?


 
MBo ©   (2006-03-13 14:03) [3]

>balepa ©   (13.03.06 13:59) [2]
>А как описана Button3Click ?

в данном случае проблема не в этом, а в том, что StringGrid, как родитель, не передает сообщений своим деткам, за исключением инплейса.


 
Сатир   (2006-03-13 14:30) [4]

MBo ©   (13.03.06 13:57) [1]
Большое спасибо!
Я приблизительно так и догадывался.
И ещё вопрос по StringGrid"y:
Как вызвать его метод Invalidate, когда закончилось событие прокрутки горизонтального или вертикального ScrollBar"a?


 
MBo ©   (2006-03-13 14:52) [5]

>Как вызвать его метод Invalidate, когда закончилось событие прокрутки горизонтального или вертикального ScrollBar"a?

???
при этом автоматически перерисовка вызывается


 
Сатир   (2006-03-13 16:57) [6]


> при этом автоматически перерисовка вызывается

дело в том, что в моём стрингриде в конце некоторых строк в ячейках есть по две кнопки "+" и "-". они нужны для реализации возможности размножения строк в стринггриде. но когда эти кнопки уходят из области видимости, иногда их изображения остаются в двух местах, в предыдущем месте и в том, где они нанисовались после прокрутки.
Вот я и подумал, что после окончания прокрутки стринггрида нужно вызвать какой-то метод, который сможет убрать вот эти "размазанные" по стринггриду кнопки.
Не подскажите, как это лучше сделать?


 
Сатир   (2006-03-13 17:40) [7]

как называется событие окончания прокрутки и как его перегрузить и добавить свои методы?


 
pasha_golub ©   (2006-03-13 18:01) [8]

WM_HSCROLL & WM_VSCROLL


 
pasha_golub ©   (2006-03-13 18:05) [9]

Соответственно:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarmessages/wm_vscroll.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarmessages/wm_hscroll.asp



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

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

Наверх




Память: 0.49 MB
Время: 0.047 c
3-1139399572
Mishenka
2006-02-08 14:52
2006.04.02
Поля соответствия в таблице связанной сама с собой


3-1139309450
John_Doe
2006-02-07 13:50
2006.04.02
Referential Integrity,не пускает удалить.


2-1142890507
carcinogen75
2006-03-21 00:35
2006.04.02
Добавить кнопку в чужую программу


3-1139400405
Ega23
2006-02-08 15:06
2006.04.02
Как лучше всего пинговать сервер?


15-1141896338
Зм1й
2006-03-09 12:25
2006.04.02
Проблемы с локалкой