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

Вниз

OnClick для TButton   Найти похожие ветки 

 
Wood   (2008-08-12 08:37) [0]

Не пинайте пожалуйста сильно. Вопрос, наверное, ламерский совсем:
TButton создан динамически или в дизайне. При назначении ему parent:=StringGrid не работает обработчик OnClick. Как нужно сделать?


 
AlexanderMS ©   (2008-08-12 08:57) [1]


> При назначении ему parent:=StringGrid

Можно поинтересоваться: а зачем назначать?


 
Wood   (2008-08-12 09:34) [2]


> Можно поинтересоваться: а зачем назначать?

иначе, назначать left, top кнопке относительно положению нужной ячейки с перерасчетом расположения грида на форме?


 
Amoeba ©   (2008-08-12 11:04) [3]

Автору вопроса читать вот это:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
Wood   (2008-08-12 11:26) [4]


> Amoeba ©   (12.08.08 11:04) [3]

спасибо, читал. При parent =TForm onclick работает, при parent=StringGrid - нет


 
brother ©   (2008-08-12 11:58) [5]

есть нехорошее подозрение что он клик теперь отрабатывает не для кнопки, а для грида? проверь а? ;)


 
oldman ©   (2008-08-12 12:08) [6]


> Wood   (12.08.08 09:34) [2]
> иначе, назначать left, top кнопке относительно положению
> нужной ячейки с перерасчетом расположения грида на форме?


А при создании объекта это так долго и сложно?


 
Wood   (2008-08-12 14:13) [7]


> brother ©   (12.08.08 11:58) [5]

нет

> А при создании объекта это так долго и сложно?

В общем-то разница в том, что если парент делать к форме, то к вычислениям месторасположения кнопки добавляется месторасположение грида, а если парент= грид, то достаточно написать bt.left=grid.cellrect(ACol,ARow).left и т.п.
Это я хотел, чтоб кнопка появилась в нужной строке, в нужной ячейке..
В общем, с этим "кликом" я облажался, частенько создавал кнопки, менюшки и т.п. в ран-тайм и ни разу не нарывался на сие положение..


 
oldman ©   (2008-08-12 14:32) [8]


> Wood   (12.08.08 14:13) [7]
> В общем, с этим "кликом" я облажался, частенько создавал
> кнопки, менюшки и т.п. в ран-тайм


ну и продолжай создавать
а Visible:=True(False) еще никто не отменял
:)


 
Wood   (2008-08-12 14:46) [9]


> а Visible:=True(False) еще никто не отменял

Хм.. Свойства не вызывают у меня затруднений:) Вы слегка отклонились от темы.


 
MsGuns ©   (2008-08-12 14:47) [10]

Для того, чтобы кнопку нарисовать поверх грида, вовсе необязательно делать этот грид ее парентом


 
aaaaa   (2008-08-12 14:56) [11]

TMybtn = class(TButton)
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  end;

procedure TMybtn.WMLButtonDown(var Message: TWMLButtonDown);
begin
 ShowMessage("Вы это можете");
end;

:)


 
aaaaa   (2008-08-12 15:08) [12]

А может кто ответит, почему событие не происходит?


 
Wood   (2008-08-12 15:45) [13]


aaaaa   (12.08.08 14:56) [11]

Да, возможно это вариант, не проверял, сейчас дельфей нет под рукой

> MsGuns ©   (12.08.08 14:47) [10]

да я и не спорю, но все же:

> А может кто ответит, почему событие не происходит?
>


 
Leonid Troyanovsky ©   (2008-08-12 15:55) [14]


> 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)


 
aaaaa   (2008-08-12 16:32) [15]


> Leonid Troyanovsky ©   (12.08.08 15:55) [14]

что-то такое я и подозревал. Спасибо.


> Wood   (12.08.08 15:45) [13]


работает


 
Wood   (2008-08-12 18:09) [16]

Cпасибо всем, завтра буду применять:-)



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
3-1206130189
Леонид
2008-03-21 23:09
2008.09.21
база данных Delphi 7 в формате MS Access


15-1217507399
ekto
2008-07-31 16:29
2008.09.21
Подскажите профайлер для D7. Басплатный.


15-1217068149
buzb
2008-07-26 14:29
2008.09.21
Какой программой менять частоту шыны видеокарты?


15-1217745537
Nous Mellon_
2008-08-03 10:38
2008.09.21
Вопрос по регуляркам + php


2-1218531018
kiber0net0
2008-08-12 12:50
2008.09.21
Помогите определиться с выбором СУБД