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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 10:29   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Сообщение Правильное применение методов формы

Доброго времени суток.
Стало интересно как правильно обращаться к методам формы, в коротой пишем код. Какой из способов более приемлем?
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form1.Showing then Form1.Caption := '.''.'; // 1
  if Self.Showing then Self.Caption := '.''.'; // 2
  if Showing then Caption := '.''.'; // 3
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form1.Close; // 1
  Self.Close; // 2
  Close; // 3
end;
Shouldercannon вне форума Ответить с цитированием
Старый 15.10.2013, 10:43   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

третий вариант
на http://docwiki.embarcadero.com все примеры написаны именно так

хотя как по мне, так лучше первый или второй, так нагляднее, сразу понятно к чему относится метод/свойство
Пишу на Delphi за еду

Последний раз редактировалось Toxa; 15.10.2013 в 10:47.
Toxa вне форума Ответить с цитированием
Старый 15.10.2013, 10:46   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Третий вариант - нет необходимости использовать маслянное масло при обращении из метода объекта к методам того же объекта.

Первый вариант чреват тем, что Form1 не обязательно всегда содержит указатель на форму.

Наверняка при использовании 1-го варианта и exe будет больше, возможно и 2-го, если только компилятор не умничает и не оптимизирует
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.10.2013, 10:52   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Первый метод наиболее приемлем.
Второй вариант может работать так же как констракция this в js, т.е.
Код:
procedure of FORM
begin
 self.formmethod - тут self обозначает саму форму т.к. внутри её метода вызывается

 with OtherObject do
 begin
  self.Formethod - тут self может работать уже как метод объекта OtherObject, а компилятор не находят formMethod в OtherObject - изменяет self на ссылку перемнной формы. 
 end; 

end;
3 й вариент такой же как и 2й, но без права на помилование в with .. do
Человек_Борща вне форума Ответить с цитированием
Старый 15.10.2013, 10:59   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Человек_Борща, безусловно для SELF есть своя область применения. Но это совсем не значит, что его, а также Form1 нужно тулить без разбору где требется и не требуется. Или любитель километровых строк в коде? И загляньте в юниты дельфей - много ли там увидите бестолкового применения этих указателей

ADD

Добавлю еще, что глобальную переменную Form1 вообще нельзя использовать в дочерней MDI-форме, если создается несколько экземпляров этой формы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.10.2013 в 11:08.
Аватар вне форума Ответить с цитированием
Старый 15.10.2013, 13:35   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

1 в топку
2 и 3 равнозначны, применение зависит от принятого стиля
у нас, например, 2 принят
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильное отображение в ie stainer HTML и CSS 3 07.04.2013 14:07
Объявление и определение методов.Напишите функции в виде методов (подпрограмм). Напишите тестирующую программу с выдачей результа Vika_0_0 C# (си шарп) 0 04.10.2012 15:21
Правильное добавление маГГ85 SQL, базы данных 5 14.01.2012 23:26
Решение правильное маГГ85 PHP 2 15.12.2011 21:30
условный оператор, правильное применение к заданию my_sappho_story Помощь студентам 13 01.12.2010 12:44