Вниз
Скачать: CL | DM;

Не работают процедуры...   Найти похожие ветки 

← →
Sergey B   (2004-01-20 23:43) [0]

Помогите плиз...
Кидаю Label на форму и кнопку, пару раз кликаю на кнопку, Delphi автоматом прописывает
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
...
procedure TForm1.Button1Click(Sender: TObject);
begin

end;
Я после begin пишу Label1.Caption:= ("TEST")
Потом F9, все работает..
Но если я просто кидаю на форму Label и кнопку, а
procedure Button1Click(Sender: TObject); и т.д. пишу сам, то не работает...И так с любой процедурой, которую я в ручную пишу, просто не работает и все....В чем проблема???


← →
хз ©   (2004-01-20 23:54) [1]

Просто не пиши вручную, вот и вся проблема.


← →
Sergey B   (2004-01-21 00:45) [2]

А если серьезно?


← →
Германн ©   (2004-01-21 00:53) [3]

А вот если ты после этого откроешь Инспектор объектов, выберешь в нем Button1 и назначишь обработчиком события OnClick процедуру Button1Click - обрадуешься. :)))


← →
ЮЮ ©   (2004-01-21 05:35) [4]

Когда это делает Delphi, она об этом пишет в dfm :

object Button1: TButton
Left = 72
Top = 64
Width = 75
Height = 25
Caption = "Button1"
TabOrder = 0
OnClick = Button1Click
end

А из того, что ты написал какую-ту процедуру, вовсе не следует, что кто-то будет использовать её в качестве своего обработчика.

Если же хочется назначить обработчика динамически, то в программе следует написать:

Button1.onClick := Button1Click;
этот же обработчик можно назначить и другой кнопке
Button2.onClick := Button1Click;

Если же в коде обработчика следует отличать, кто его вызвал, то следует анализировать параметр Sender.


← →
olookin ©   (2004-01-21 09:26) [5]

В оригинале так:

type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
...
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Вручную насколько я понял пишется только
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Так вот, надо еще и жирное выделенное вверху написать (разумеется тоже вручную)... И напоследок выбрать в Event кнопки соотв. событие (т.е. привязать написанное к кнопке). Понятно, что проще просто дважды щелкнуть и написать обработчик в возникшей процедуре. Однако если надо написать свою функцию, не привязанную к объектам, то только вручную (еще раз - декларацию процедуры в секции interface, и саму процедуру в секции implementation).


← →
KSergey ©   (2004-01-21 09:31) [6]

> [5] olookin © (21.01.04 09:26)
> Однако если надо написать свою функцию, не привязанную
> к объектам, то только вручную (еще раз - декларацию процедуры
> в секции interface
, и саму процедуру в секции implementation).

Небольшое уточнение: выделенное только для случая, когда к функции необходимо обраться вне этого модуля. Ну ливо, если это не просто функция, а метод некоего класса - тогда, конечно, в декларации класса (которая, в общем случае, не обязана быть в секции interface).


← →
olookin ©   (2004-01-21 09:34) [7]

to KSergey

Я понял вашу мысль. Согласен с ней. С моей стороны тоже уточнение - если процедура находится в динамической библиотеке, то в секции implementation она не нуждается быть прописанной.


← →
Sergey B   (2004-01-21 13:47) [8]

Всем спасибо за помощь!



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

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.984 c
1-2130
PutRsa
2004-01-19 17:06
2004.02.02
чтение двоичных данных из файла и работа с ними


14-2374
ИМХО
2004-01-07 13:43
2004.02.02
Кто дружит с Бейсиком


1-2160
Dysan
2004-01-21 15:08
2004.02.02
regsvr32 и class ?


1-2155
zamkom
2004-01-22 11:32
2004.02.02
Когда система занята


3-1972
Петр
2004-01-09 10:13
2004.02.02
Ошибка с ADOQuery




   Наверх