Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

процедуры в делфи   Найти похожие ветки 

 
SarDoX   (2006-01-12 20:08) [0]

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


 
Зм1й ©   (2006-01-12 20:20) [1]

Если процедура не является методом класса формы, то "Form1" придётся дописывать всегда


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

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


 
Alarm ©   (2006-01-12 21:25) [3]

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


 
Ega23 ©   (2006-01-13 08:53) [4]


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


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


 
msguns ©   (2006-01-13 09:05) [5]

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

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


 
Ega23 ©   (2006-01-13 09:11) [6]


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


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


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

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

;)


 
Ega23 ©   (2006-01-13 09:17) [8]


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


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


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

что т не понял...
например
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


 
Reindeer Moss Eater ©   (2006-01-13 14:46) [10]

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

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


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

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


 
Ega23 ©   (2006-01-13 14:49) [12]

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:50) [13]

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

<Цитата>

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


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

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

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

end;


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

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


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

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


 
Reindeer Moss Eater ©   (2006-01-13 14:56) [17]

ты хотел сказать, что там и нельзя НЕ указывать 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;


 
Ega23 ©   (2006-01-13 14:56) [18]


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


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


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

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


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


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

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

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


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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.058 c
4-1132137579
SergGG
2005-11-16 13:39
2006.01.29
Запуск EX E-шки при открытии папки


2-1136810258
BiggieSmalls
2006-01-09 15:37
2006.01.29
И еще немного реестра


1-1134906341
Kerk
2005-12-18 14:45
2006.01.29
одинаковые значения свойств


2-1136963652
vinali
2006-01-11 10:14
2006.01.29
Вопрос по созданию таблиц????????????


4-1132573751
JLes
2005-11-21 14:49
2006.01.29
Печать через DLL и управление принтером