Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.029 c
1-1135589157
DVM
2005-12-26 12:25
2006.01.29
StretchBlt на канву формы - искажение изображения


15-1136460512
V-A-V
2006-01-05 14:28
2006.01.29
Просмотр графических файлов


2-1136992050
гвест
2006-01-11 18:07
2006.01.29
TWebBrowser


15-1136072053
Cerberus
2006-01-01 02:34
2006.01.29
Помогите найти человека.


15-1136373097
Sergey Masloff
2006-01-04 14:11
2006.01.29
Проблемы программизма как профессии. Временные ли?




   Наверх