![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OnClick для TButton [D7, XP]
Wood © (2008-08-12 08:37:00)Не пинайте пожалуйста сильно. Вопрос, наверное, ламерский совсем:
TButton создан динамически или в дизайне. При назначении ему parent:=StringGrid не работает обработчик OnClick. Как нужно сделать?
Wood (2008-08-12 18:09:00) [1]Cпасибо всем, завтра буду применять:-)
aaaaa (2008-08-12 16:32:00) [2]
> Leonid Troyanovsky © (12.08.08 15:55) [14]
что-то такое я и подозревал. Спасибо.
> Wood (12.08.08 15:45) [13]
работает
Leonid Troyanovsky (2008-08-12 15:55:00) [3]
> aaaaa (12.08.08 15:08) [12]
> А может кто ответит, почему событие не происходит?
Tstringgrid has not been designed to be a parent to other controls, so it does
not properly reflect WM_COMMAND messages back to the control. You need to
derive a new class from TStringgrid and use that:
unit ControlStringgrid;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TControlStringgrid = class(TStringgrid)
private
{ Private declarations }
Procedure WMCommand( var msg: TWMCommand ); message WM_COMMAND;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('PBGoodies', [TControlStringgrid]);
end;
{ TControlStringgrid }
procedure TControlStringgrid.WMCommand(var msg: TWMCommand);
begin
If EditorMode and ( msg.Ctl = InplaceEdit.Handle ) Then
inherited
Else
If msg.Ctl <> 0 Then
msg.result :=
SendMessage( msg.ctl, CN_COMMAND,
TMessage(msg).wparam,
TMessage(msg).lparam );
end;
end.
Peter Below (TeamB) 100113.1101@compuserve.com)
Wood (2008-08-12 15:45:00) [4]
aaaaa (12.08.08 14:56) [11]
Да, возможно это вариант, не проверял, сейчас дельфей нет под рукой
> MsGuns © (12.08.08 14:47) [10]
да я и не спорю, но все же:
> А может кто ответит, почему событие не происходит?
>
aaaaa (2008-08-12 15:08:00) [5]А может кто ответит, почему событие не происходит?
aaaaa (2008-08-12 14:56:00) [6]TMybtn = class(TButton)
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
end;
procedure TMybtn.WMLButtonDown(var Message: TWMLButtonDown);
begin
ShowMessage('Вы это можете');
end;
:)
MsGuns (2008-08-12 14:47:00) [7]Для того, чтобы кнопку нарисовать поверх грида, вовсе необязательно делать этот грид ее парентом
Wood (2008-08-12 14:46:00) [8]
> а Visible:=True(False) еще никто не отменял
Хм.. Свойства не вызывают у меня затруднений:) Вы слегка отклонились от темы.
oldman (2008-08-12 14:32:00) [9]
> Wood (12.08.08 14:13) [7]
> В общем, с этим "кликом" я облажался, частенько создавал
> кнопки, менюшки и т.п. в ран-тайм
ну и продолжай создавать
а Visible:=True(False) еще никто не отменял
:)
Wood (2008-08-12 14:13:00) [10]
> brother © (12.08.08 11:58) [5]
нет
> А при создании объекта это так долго и сложно?
В общем-то разница в том, что если парент делать к форме, то к вычислениям месторасположения кнопки добавляется месторасположение грида, а если парент= грид, то достаточно написать bt.left=grid.cellrect(ACol,ARow).left и т.п.
Это я хотел, чтоб кнопка появилась в нужной строке, в нужной ячейке..
В общем, с этим "кликом" я облажался, частенько создавал кнопки, менюшки и т.п. в ран-тайм и ни разу не нарывался на сие положение..
oldman (2008-08-12 12:08:00) [11]
> Wood (12.08.08 09:34) [2]
> иначе, назначать left, top кнопке относительно положению
> нужной ячейки с перерасчетом расположения грида на форме?
А при создании объекта это так долго и сложно?
brother (2008-08-12 11:58:00) [12]есть нехорошее подозрение что он клик теперь отрабатывает не для кнопки, а для грида? проверь а? ;)
Wood (2008-08-12 11:26:00) [13]
> Amoeba © (12.08.08 11:04) [3]
спасибо, читал. При parent =TForm onclick работает, при parent=StringGrid - нет
Amoeba (2008-08-12 11:04:00) [14]Автору вопроса читать вот это:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
Wood (2008-08-12 09:34:00) [15]
> Можно поинтересоваться: а зачем назначать?
иначе, назначать left, top кнопке относительно положению нужной ячейки с перерасчетом расположения грида на форме?
AlexanderMS (2008-08-12 08:57:00) [16]
> При назначении ему parent:=StringGrid
Можно поинтересоваться: а зачем назначать?