Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
ВнизОбработчик для SpeedButton Найти похожие ветки
← →
Student_ (2007-02-04 01:49) [0]Возникла такая ситуация - не вызывается обработчик для SpeedButton, созданного в Runtime. Если SpeedButton в той же программе на той же форме создавать в DesignTime - все работает.
Сначала установил на форму обычный SpeedButton с палитры компонент, написал для него обработчик onClick, после чего переименовал обработчик в SpeedButtononClick(...) используя CodeExplorer (чтобы ничего не забыть по невнимательности). Затем установленный компонент удалил, оставив только обработчик. Его и задаю для создаваемых в Runtime кнопок:
TempSpBt.onClick:=speedButtonClick;
Однако созданные кнопки игнорируют щелчки мышью. Что я забыл или сделал не так?
P.S: они даже не подсвечиваются при наведении мыши, как это делают обычные статически установленные кнопки при использовании XPManifest.
← →
Германн © (2007-02-04 01:56) [1]
> P.S: они даже не подсвечиваются при наведении мыши, как
> это делают обычные статически установленные кнопки при использовании
> XPManifest.
>
Очень интересное P.S. ! Кстати никак не зависящее от обработчика OnClick.
Может не там ищем?
← →
Wind © (2007-02-04 07:49) [2]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons;
type
TForm1 = class(TForm)
procedure FormActivate(Sender: TObject);
procedure SpeedBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
var
SpeedBtn: TSpeedButton;
begin
SpeedBtn:=TSpeedButton.Create(self);
with SpeedBtn do
begin
Name:="Sp1";
OnClick:=SpeedBtnClick;
Parent:=Form1;
Left:=50;
Top:=50;
end;
end;
procedure TForm1.SpeedBtnClick(Sender: TObject);
begin
ShowMessage("Óðà âñ¸ ðàáîòàåò!");
end;
end.
← →
Student_ (2007-02-04 10:59) [3]>Очень интересное P.S. ! Кстати никак не зависящее от обработчика OnClick.
>Может не там ищем?
Очень даже может быть. Если бы я знал, где искать - я бы, вероятно, не спрашивал :) Просто раньше в runtime работать с созанием элементов формы вообще не приходилось.
Спасибо за код, надеюсь, он поставит все на свои места.
← →
Student_ (2007-02-04 11:32) [4]В общем вот мой код (привожу процедуру полностью на всякий случай)
procedure TForm1.Button1Click(Sender: TObject);
var TempEd : TEdit;
TempSpBt: TSpeedButton;
TempChBx: TCheckBox;
begin
TempEd:=TEdit.Create(self);
with TempEd do
begin
Tag:=CompList.Add(TempEd);
Top:=LastTop+29;
Left:=GroupBox1.Left+10;
Width:=350;
end;
Form1.Panel3.InsertControl(TempEd);
LastTop:=TempEd.Top;
TempSpBt:=TSpeedButton.Create(self);
with TempSpBt do
begin
Tag:=CompList.Add(TempSpBt);
Width:=21;
Height:=21;
Top:=LastTop;
Left:=TempEd.Left+360;
OnClick:=SpeedButtonClick;
end;
Form1.Panel3.InsertControl(TempSpBt);
TempChBx:=TCheckBox.Create(Form1);
with TempChBx do
begin
Tag:=CompList.Add(TempChBx);
Top:=TempEd.Top+2;
Left:=TempSpBt.Left+31;
Caption:="OK";
Width:=50;
end;
Form1.Panel3.InsertControl(TempChBx);
Button1.Top:=LastTop+29;
Form1.repaint;
end;
В чем здесь может быть ошибка? Я знаю, что ошибка скорее всего очень простая и незначительная, просто сейчас возникла необходимость работать именно в Delphi - приходится разбираться...
И еще, если несложно, подскажите какие-нибудь статьи или другие материалы по созданию элементов формы в runtime.
← →
Anatoly Podgoretsky © (2007-02-04 12:16) [5]> Student_ (04.02.2007 11:32:04) [4]
Справка:
Applications should not need to call InsertControl directly.
← →
Student_ (2007-02-04 12:48) [6]Ну значит у меня пример кривой, по которому я разбираюсь...
А как иначе? Я же и прошу какой-нибудь материал, который покажет правильный подход, потому что автору примера я и сам не слишком доверяю - уже слишком много "ляпов" за ним замечено.
← →
Anatoly Podgoretsky © (2007-02-04 12:52) [7]> Student_ (04.02.2007 12:48:06) [6]
Примеры есть в справке.
← →
Student_ (2007-02-04 13:00) [8]Вроде понял - при присвоении значения полю Parent все отрабатывает как положено...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c