Главная страница
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.026 c
14-2297
}|{yk
2004-01-12 16:33
2004.02.02
Вопросы из харьковского ЧГК. №4


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


1-2158
Vinter
2004-01-21 12:13
2004.02.02
как разом все настройки одной компоненты передать другой?


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


4-2413
independant
2003-11-21 16:01
2004.02.02
Поиск директорий.