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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2022, 16:54   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию Имеет ли смысл? (Процедура для создания кнопок)

По определенным причинам, некоторые кнопки надо создавать не с формы, а изнутри программы.

Надобности совершать каких-то других действий с этой кнопкой нет. Только реагировать на ее нажатие.

Вопрос: есть ли смысл вынести в отдельную процедуру вот так вот создание этих кнопок?

В плане оптимизации программы. Или процесс ввода данных в процедуру съест всю экономию и лучше все же просто обойтись прописыванием отдельно кода для каждой процедуры?

Код:
type
  ProcedureClick=procedure(Sender: TObject) of object;
Код:
Procedure NewButton(Pr: TPanel; L, t, h, w: integer; s:string; cl: ProcedureClick);
begin
  With TButton.Create(nil) do begin
    Parent:=Pr;
    Top:=t;
    Left:=L;
    Height:=h;
    Width:=w;
    Caption:=s;
    OnClick:=cl;
  End;
End;
Kronos913 вне форума Ответить с цитированием
Старый 06.02.2022, 01:55   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Если обработчик OnClick для всех кнопок создаваемых процедурой NewButton один и тот же, то никакого смысла в этом коде нет.
Если же они разные, то тоже смысла не вижу.
northener вне форума Ответить с цитированием
Старый 06.02.2022, 05:07   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А есть какой-то толк делать так?
Код:
  With TButton.Create(nil) do begin
    Parent:=Pr;
А не так?
Код:
  With TButton.Create(Pr) do begin
Цитата:
Сообщение от Kronos913 Посмотреть сообщение
В плане оптимизации программы.
Если оптимизация по длине исходного кода, то использование процедуры NewButton хотя бы 3 раза (и более) даст сокращение кода.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 06.02.2022, 16:12   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Ради интереса проверил - медленно но сокращается размер программы
Где-то после того как кнопок 20 перевел на такую процедуру - на 1 кб уменьшился таки exe'шник

Ну плюс да, еще и листинг ощутимо уменьшился
Kronos913 вне форума Ответить с цитированием
Старый 06.02.2022, 21:44   #5
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Кстати, у меня вот вопрос
Что означает эта переменная?
в T___.Create(переменная)

Потому что пока видел примеры только с nil и self
Kronos913 вне форума Ответить с цитированием
Старый 07.02.2022, 01:34   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Ради интереса проверил - медленно но сокращается размер программы
Где-то после того как кнопок 20 перевел на такую процедуру - на 1 кб уменьшился таки exe'шник
Т.е. на 0.1%
Стоило ли бороться?

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Что означает эта переменная?
Эта переменная, а говоря грамотно это параметр AOwner метода TComponent.Create(AOwner:TComponent ) - ссылка на владельца данного компонента. Который обязан в случае своего уничтожения грамотно уничтожить созданный вами ранее компонент.
Если передать в качестве этого параметра nil это значит что уничтожение этого компонента с возвратом памяти в ОС - обязанность программиста. Если self то для начинающих это ссылка на форму, в модуле которой написан такой код.
northener вне форума Ответить с цитированием
Старый 07.02.2022, 01:53   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
А есть какой-то толк делать так? А не так?
Да, я не прав. Так как есть разница между Owner и Parent. Владелец отвечает за уничтожение, а родитель за отображение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.02.2022, 01:53   #8
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Ну то есть, если объект не планирует уничтожаться, то без разницы?
Kronos913 вне форума Ответить с цитированием
Старый 07.02.2022, 02:56   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Ну то есть, если объект не планирует уничтожаться, то без разницы?
Теоретически и согласно утверждениям мелкомягких действительно без разницы. Ибо при закрытии приложения все ресурсы включая ранее занятую память будут возвращены ОС.
northener вне форума Ответить с цитированием
Старый 07.02.2022, 03:03   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Да, я не прав. Так как есть разница между Owner и Parent. Владелец отвечает за уничтожение, а родитель за отображение.
Вот только в толк не возьму в чём вы посчитали себя неправым! Может ещё раз подумаете при случае? ТС кидает кнопку на некий компонент. Он же контрол. Так почему бы не назначить именно его и владельцем?
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с чего начать изучать программирование, что конкретно имеет смысл освоить в плане востребованности Лан Свободное общение 46 22.07.2019 19:22
Выход за границы массива, имеет-ли смысл в виртуальных адресах? DakotaZ Общие вопросы C/C++ 4 27.08.2014 16:46
Одна процедура для нескольких кнопок MaxxVer Microsoft Office Excel 14 15.07.2014 18:02
Краткий смысл. В чем цель и смысл вашей жизни? grenles Свободное общение 20 13.09.2010 07:13
Редактор для создания ТАКИХ кнопок. Alex Cones Софт 10 06.06.2009 12:44