Текущий архив: 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.46 MB
Время: 0.044 c