Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2010, 07:19   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Объясняю на пальцах. TForm1 это самостоятельное государство и лезть туда кому попало не положено. Разрешено только парням с TForm1. в начале имени. В общем твоя форма принадлежит партии с именем TForm1. Форма имеет надпись Label (Label1, как я понял), у которой есть свойство Caption. Поскольку Label1 принадлежит форме, то и все кто к ней может обратиться должны принадлежать этой же самой форме. Соответственно и MyPr тоже. И хотя в программе ты вызываешь ее Mypr, ее полное имя на самом деле TForm1.MyPr, просто у Дельфи есть соглашение, что в теле формы TForm1 можно не указывать, Дельфи самая будет искать среди модулей и также в TForm1. В общем как-то так. Уверен, что именно умолчание Дельфи и сбивает тебя с толку.

Зы. Также не путай TForm1 и конкретный экземпляр формы Form1. Конкретный экземпляр твоей процедуры Form1.MyPr.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 16.08.2010 в 08:45.
Utkin вне форума Ответить с цитированием
Старый 16.08.2010, 09:51   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Utkin абсолютно прав.
Одно маленькое уточнение.

Цитата:
TForm1 это самостоятельное государство и лезть туда кому попало не положено. Разрешено только парням с TForm1.
Если свойства/объекты объявлены в секции паблик, то к ним можно "достучаться" не только парням с TForm1, но и другим. Только им надо указать ПОЛНЫЙ путь:
Код:
procedure KuKu;
begin
   Form1.Label1.Caption := 'куку';
end;
но так можно делать лишь 1) понимая, что ты собственно делаешь 2) в исключительных случаях!

И почитайте основы ООП, занимательно и полезно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.08.2010, 10:54   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Еще одно уточнение :
Код:
procedure KuKu;
begin
   Form1.Label1.Caption := 'куку';
end;
Это конечно интересно, но:
Код:
procedure KuKu(ALabel: TLabel);
begin
   ALabel1.Caption := 'куку';
end;
симпатичней. А вызывать
Код:
Kuku(Form1.Label1);
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.08.2010, 11:32   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Utkin
Это конечно интересно, но:
Код: procedure KuKu(ALabel: TLabel);
симпатичней.
Безусловно. И симпатичнее и точнее и надёжнее.

Только смысл моего примера был проиллюстрировать, как можно обратиться к свойствам "парней" формы извне!

Впрочем, думаю, что TC уже более чем достаточно пищи для размышлений!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему не компилирует? neBu4kaMaXiM Паскаль, Turbo Pascal, PascalABC.NET 9 30.04.2010 23:14
vs 2008 не компилирует Sr.wills Общие вопросы C/C++ 1 21.04.2010 10:37
Dev C++ компилирует, Visual C++ ругается Cookson Visual C++ 7 02.10.2009 10:39
Компилятор не компилирует!((( Тимс Общие вопросы по Java, Java SE, Kotlin 10 11.06.2009 18:35
Devcpp-4.9.9.2 не компилирует. MacTiger Общие вопросы C/C++ 6 20.04.2009 22:15