Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Процедуры и функции [D7, XP]


annn ©   (2007-04-02 16:36:00) 

Люди помогите разобраться. Прочему в procrdure mmm
Button2.Click; работает только так Form1.Button2.Click;
Вопрос: как сделать чтобы всё было норамльно
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure mmm;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure mmm;
begin
Button2.Click;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
mmm;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Color:=clred;
end;

end.


SergGG   (2007-04-03 09:16:00) [1]

> annn   (02.04.07 16:36)  
Если Вам надо, чтобы при нажатии кнопки Button1 выполнялось событие Button2Click (т.е. "нажималась" кнопка Button2), можно сделать намного проще:

type
TForm1 = class(TForm)
  Button1: TButton;
  Button2: TButton;
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Color:=clred;
end;

end.


А для Button2 - необходимо в инспекторе обьектов на событие OnClick установить Button1Click


Ega23   (2007-04-02 17:29:00) [2]


> Да нет, Click у TButton именно так и вызывается. И не имеет
> параметра(ов)....


Хм.. Гляди-ка... В натуре такой метод есть... А в качестве Sender'а онЮ конечно же, себя подставляет...


{RASkov}   (2007-04-02 17:25:00) [3]

> [11] Ega23 ©   (02.04.07 17:20)
> Очевидно по тому, что метод Click выглядит несколько не
> так. И имеет параметр.

Да нет, Click у TButton именно так и вызывается. И не имеет параметра(ов)....
но [4] в силе. Для автора вопроса конечно-ж.


{RASkov}   (2007-04-02 17:23:00) [4]

> [10] annn   (02.04.07 17:11)

А где теперь вызов твоей mmm?


Ega23   (2007-04-02 17:20:00) [5]

Очевидно по тому, что метод Click выглядит несколько не так. И имеет параметр.

Рекомендую ещё раз внимательно ознакомиться с постом [4]


annn   (2007-04-02 17:11:00) [6]

А почему так не работает???
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button2Click(Sender: TObject);
   procedure mmm;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.mmm;
begin
 button2.click;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Color:=clred;
end;

end.


Ega23   (2007-04-02 17:00:00) [7]


> Ну подскажите пожалуйста, просто горит, я непремнно прочитаю


"Утром деньги - вечером стулья."


{RASkov}   (2007-04-02 16:59:00) [8]

> Нажми, в описании метода Формы - mmm, кнопки Ctrl+Shift+C....

Ну да и получится [6] :)


{RASkov}   (2007-04-02 16:58:00) [9]

> [0] annn   (02.04.07 16:36)

Не удачный вопрос с неудачным примером... Что нужно то в итоге?
Пример написанный почти рабочий, но бессмысленный..
А вообще это не должно скомпилится.
Метода одного не хватает. Т.н. его реализации. Нажми, в описании метода Формы - mmm, кнопки Ctrl+Shift+C....


SergGG   (2007-04-02 16:57:00) [10]


procedure TForm1.mmm;
begin
Button2.Click;
end;


annn   (2007-04-02 16:56:00) [11]

Ну подскажите пожалуйста, просто горит, я непремнно прочитаю


Ega23   (2007-04-02 16:46:00) [12]


> А как же тогда написать процедуру потому что много в когде
> нужно
> переделывать везде form1 приписывать? with form1 do begin
> ````````
> тоже что то не помогает
>


Начать следует с книжки. Сначала - простой. Потом - посложнее. Разобраться с тем, что такое область видимости процедур(функций) и переменных. Потом понять, что такое класс и что такое его метод и чем метод отличается от процедуры.


annn   (2007-04-02 16:43:00) [13]

annn:=Alll


Alll   (2007-04-02 16:41:00) [14]

А как же тогда написать процедуру потому что много в когде нужно
переделывать везде form1 приписывать? with form1 do begin
````````
тоже что то не помогает


Ega23   (2007-04-02 16:38:00) [15]

Потому, что procedure TForm1.Button2Click(Sender: TObject); не является процедурой, а является методом класса TForm1. А Button2 является полем класса TForm1.


Наверх

Титульная страница Поиск, карта сайта Написать письмо