Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
2-1218125685
Дамир
2008-08-07 20:14
2008.09.21
Окно


2-1218563419
Mozgan
2008-08-12 21:50
2008.09.21
Разработка инсталлятора


2-1218452773
Connect
2008-08-11 15:06
2008.09.21
Файлы


15-1217338253
проходил мимо решил зайти
2008-07-29 17:30
2008.09.21
QReport


2-1218116675
9899100
2008-08-07 17:44
2008.09.21
Загрузка DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский