Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.034 c
15-1136384621
iamdanil
2006-01-04 17:23
2006.01.29
красивые компоненты


3-1133243727
Lex_!
2005-11-29 08:55
2006.01.29
XMLDataSource - примерно что-то такое есть? ..


4-1131982364
Grief
2005-11-14 18:32
2006.01.29
Выполняется ли exeшник?!


15-1136400484
Константинов
2006-01-04 21:48
2006.01.29
Перекодирование DVD


6-1127938364
Klim
2005-09-29 00:12
2006.01.29
Проблема создания TServerSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский