Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-2132
Man
2004-01-19 16:39
2004.02.02
компилирование


14-2368
Rauf
2004-01-13 01:59
2004.02.02
Есть ли в Дельфи оптимизация кода?


3-2018
belkova
2004-01-06 09:44
2004.02.02
SQL-запрос из разных БД


14-2315
goga
2004-01-11 18:40
2004.02.02
Я бы добавил в FAQ следующее.


7-2398
Duk_777
2003-11-10 22:23
2004.02.02
Директивы компилятора