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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2022, 01:48   #31
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
К ответу northener можно ещё добавить
А нужно ли?
northener вне форума Ответить с цитированием
Старый 11.09.2022, 01:53   #32
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А тут уже работают правила перечисления/вложения.
Да если в конструкции with .. do перечислено более одного объекта, то способ Arigato не справится. Всегда будет браться значение ссылки одного и того же объекта. Первого или последнего не могу сходу сообразить.
Но со вложенными with .. do проблем не будет.
Так смысл создавать зарезервированное слово, которое обеспечивает доступ только к одному объекту из множества. Решать задачу надо над всеми вариантами использования конструкции, а не только для некоторого (частичного) множества.
macomics вне форума Ответить с цитированием
Старый 11.09.2022, 01:56   #33
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А нужно ли?
Ну а вдруг человек заинтересуется и почитает современные книжки/стандарты по языку :D И сразу добрая половина вопросов отпадёт, на том-же официальном сайте embarcadero был даже пример именно по хэлперам, где примерно подобное что ТС нужно и реализуется
DIONISKA вне форума Ответить с цитированием
Старый 11.09.2022, 02:04   #34
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Так смысл создавать зарезервированное слово, которое обеспечивает доступ только к одному объекту из множества. Решать задачу надо над всеми вариантами использования конструкции, а не только для некоторого (частичного) множества.
Не надо создавать то, что никому не нужно. У ТС был конкретный вопрос и ответ на него он получил. Пригодится он ему или нет не наше дело.
У меня вот возникла впервые эта тема, когда из разных мест программы по велению оператора нужно было послать некую команду внешнему железу. Посылать команду сразу непосредственно на железо нельзя. Нужна была очередь команд. Команду создать и заполнить её поля с помощью with .. do я мог, а вот чтобы её включить в список мне нужна была переменная. И не то чтобы это очень мне досаждало, но...
northener вне форума Ответить с цитированием
Старый 11.09.2022, 02:05   #35
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Ну а вдруг человек заинтересуется и почитает современные книжки/стандарты по языку :D И сразу добрая половина вопросов отпадёт, на том-же официальном сайте embarcadero был даже пример именно по хэлперам, где примерно подобное что ТС нужно и реализуется
А вы уверены, что это что-то подобное?
northener вне форума Ответить с цитированием
Старый 11.09.2022, 02:32   #36
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А вы уверены, что это что-то подобное?
Что-то подобное это примеры в онлайн справке по delphi, конкретно добавление для стандартного класса полей/функций и тп с помощью class/record helpers. Что до хэлперов, то это инструмент и использовать его или например переопределение класса или любой другой метод это уже на усмотрение.
Ведь с чего всё началось? ТС нужно получить объект/ссылку на tbutton внутри конструкции with..do не присваивая его никакой переменной.
DIONISKA вне форума Ответить с цитированием
Старый 11.09.2022, 02:40   #37
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Ведь с чего всё началось? ТС нужно получить объект/ссылку на tbutton внутри конструкции with..do не присваивая его никакой переменной.
Прочитайте ещё раз вопрос автора. Но более внимательно.
northener вне форума Ответить с цитированием
Старый 11.09.2022, 04:38   #38
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Прочитайте ещё раз вопрос автора. Но более внимательно.
Прочитал. Или мы друг друга не понимаем, или телега не едет(с)
Это понятно что ТС хочет стандартными средствами языка получить tbutton/ссылку на неё внутри конструкций with ... do, чтобы использовать внутри процедуры типа
Код:
 someprocedure(волшебное_слово)
но то что хочет ТС (а возможно и все мы) не реализовано от слова совсем.
Чтобы решить проблему и получить объект/ссылку на объект есть разные выходы:
- добавить поле/функцию в класс (в конкретный класс tbutton, родительский н-р twincontrol, наследника) которое вернёт искомое. Можно использовать свой собственный класс, наследника класса, использовать переопределение или как предложил я хэлперы.
- перечислять элементы родительского контейнера (н-р components[] главной формы или панели) и искать нужную кнопку. При создании компонента/назначении родителя объект всё-же сохраняется в массиве, который находится на стороне родителя (FComponents: TList<TComponent> Но это справедливо для tbutton и в целом компонентов внутри контейнера.
- возня c winapi и прочие извращения (этот вариант серьезно даже не стоит рассматривать)
- пересмотреть свои взгляды и начать использовать дженерики, переменные, контейнеры и тп
- и т.п.
Что в моём предложении использовать class helpers не так?
И к слову если создать хэлпер для Tobject примерно такого вида:
Код:
  pers = class helper for TObject
    function this:TObject;
  end;
//...
{ pers }
function pers.this: TObject;
begin
  Result:=Self;
end;
То к объектам, которые наследуют от TObject, можно будет обращаться так:
Код:
   with TButton.Create(form1) do
    begin
      Parent:=Form1;
      Caption:='Fuckin'' AwsomeButton ' +this.ClassName;
      Left:=0;
      top:=0;
      Width:=150;
      Height:=40;
      someprocedure(this as TButton);
    end;
viva de la ООП~ Жаль что в этом случае что "this" всегда будет возвращать объект как TObject, но всегда можно указать класс явно, сделать перезагрузку, использовать указатели или по-другому всячески себе усложнять жизнь.
DIONISKA вне форума Ответить с цитированием
Старый 11.09.2022, 12:43   #39
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Но в таком случае ответ на вопрос ТС
Да, но в случае класса TButton это не прокатит, там-то такого свойства нет.

Цитата:
Сообщение от northener Посмотреть сообщение
Но со вложенными with .. do проблем не будет.
Будет, если потребуется из вложенного with обратиться к объекту на уровень выше.
Arigato на форуме Ответить с цитированием
Старый 12.09.2022, 01:08   #40
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Да, но в случае класса TButton это не прокатит, там-то такого свойства нет.
Ах да. Был невнимателен, думал о том что у меня раньше болело, а не о болячке ТС.
Но если ТС хочет кнопки создавать динамически, то что мешает написать простую обертку/наследник TButton, в который включить это свойство?

Цитата:
Сообщение от Arigato Посмотреть сообщение
Будет, если потребуется из вложенного with обратиться к объекту на уровень выше.
Ну на первый раз достаточно хотя работы внутри одного уровня. И то плюс.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к динамически созданному объекту, изменить его? 2bfree Общие вопросы Delphi 3 24.07.2011 14:06
Обратиться к объекту фрейма без id'а SkrudjMakdak JavaScript, Ajax 1 11.06.2011 21:46
Как обратиться к объекту формы из другого класса java micha-r Общие вопросы по Java, Java SE, Kotlin 1 03.10.2009 21:07
Можно ли обратиться к объекту, запустившему событие? ekesar Microsoft Office Excel 7 14.12.2008 21:17
Как обратиться к объекту который был только что создан Arassir Помощь студентам 5 24.10.2008 20:42