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

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

процедуры в делфи


Страницы:   1 2

SarDoX ©   (2006-01-12 20:08:00) 

ростенький вопросик.
создаю процедуру.
в ней идет обращение к какому нить компоненту.
но без "form1." перед названием компоненты работать не хочет, т.к не може найти, скажем, label1(приходится писать form1.label1.....)
что где дописать надо?


SarDoX   (2006-01-13 15:54:00) [1]

разбираемся-с..


Плохиш   (2006-01-13 15:41:00) [2]


> procedure CheckIt;
> begin
> //Создаем экземпляр
> with TForm1.create(Application) do Show;
> //Вызываем процедуру - не метод класса
> Abc; //Упс!!!!!!

Достаточно на кнопку кликнуть, эффект будет тот же ;-)

А автору можно только посоветовать разобраться с ООП хорошенько.


SarDoX   (2006-01-13 15:11:00) [3]

Ega23, я ж бегин забыл засунуть, выше написал об этом. все работает, сенкс :)


Ega23   (2006-01-13 14:56:00) [4]


> 2Ega23 : гм. ошибку и сейчас выдает


Какую ошибку?
Код - в студию!


Reindeer Moss Eater   (2006-01-13 14:56:00) [5]

ты хотел сказать, что там и нельзя НЕ указывать form1?
<Цитата>
Не только хотел, но и сказал.


Там нужна ссылка на экземпляр класса, а она не обязана быть в переменной form1.

Вот краткая иллюстрация. Скомпилируй и вызови CheckIt;
type
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure abc();
begin
form1.button1.caption:='1';
end;

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

procedure CheckIt;
begin
//Создаем экземпляр
with TForm1.create(Application) do Show;
//Вызываем процедуру - не метод класса
Abc; //Упс!!!!!!
end;


SarDoX   (2006-01-13 14:56:00) [6]

сенкс Ega23
сам пока писал, и не заметил, что бегина нету..
тема закрыта


SarDoX   (2006-01-13 14:54:00) [7]

2Ega23 : гм. ошибку и сейчас выдает


Ega23   (2006-01-13 14:51:00) [8]

Примечание к [12]

Конечно же
procedure TForm1.abc();
begin
button1.caption:='1';  //Теперь НЕ выдаст ошибку, что нужно писать  

end;


Reindeer Moss Eater   (2006-01-13 14:50:00) [9]

ты хотел сказать, что там и нельзя НЕ указывать form1?

<Цитата>

Не только хотел, но и сказал.


SarDoX   (2006-01-13 14:49:00) [10]

ты хотел сказать, что там и нельзя НЕ указывать form1?


Ega23   (2006-01-13 14:49:00) [11]

type
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);

private
  { Private declarations }

public
  { Public declarations }
  procedure abc();
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.abc();
button1.caption:='1';  // Теперь НЕвыдаст ошибку, что нужно писать  form1.button1.caption:='1';
begin

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


Reindeer Moss Eater   (2006-01-13 14:46:00) [12]

как сделать так, что б внутри abc() не надо было бы укзывать form1

А там и нельзя указывать form1.
Потому что в общем случае ссылка на экземпляр класса TForm1 не обязана быть в переменной form1.


SarDoX   (2006-01-13 14:44:00) [13]

что т не понял...
например
type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);

 private
   { Private declarations }

 public
   { Public declarations }

 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure abc();
button1.caption:='1';  //выдаст ошибку, что нужно писать  form1.button1.caption:='1';
begin

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

-----------
как сделать так, что б внутри abc() не надо было бы укзывать form1


Ega23   (2006-01-13 09:17:00) [14]


> Прямо-таки и формы ?


на [0] посмотри.


msguns   (2006-01-13 09:15:00) [15]

Прямо-таки и формы ?

;)


Ega23   (2006-01-13 09:11:00) [16]


> Прямо-таки и Private ?
>


Прямо-таки как метод класса формы. А private он или public - дело аффтара.


msguns   (2006-01-13 09:05:00) [17]

>Ega23 ©   (13.01.06 08:53) [4]
>Опиши (помести) эту процедуру (функцию) в секции Private класса формы

Прямо-таки и Private ?


Ega23   (2006-01-13 08:53:00) [18]


> Опиши (помести) эту процедуру (функцию) в секции Private
>


Опиши (помести) эту процедуру (функцию) в секции Private класса формы


Alarm   (2006-01-12 21:25:00) [19]

Опиши (помести) эту процедуру (функцию) в секции Private


vrem   (2006-01-12 21:14:00) [20]

with в справке почитать


Страницы:   1 2

Наверх

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