powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Место рождения у SpeedButton1
29 сообщений из 29, показаны все 2 страниц
Место рождения у SpeedButton1
    #39519854
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть много форм наследуемых от общего предка.
Код: pascal
1.
2.
3.
4.
5.
TForm1 = class(TForm);
TForm11 = class(TForm1);
TForm2 = class(TForm);
TForm21 = class(TForm2);
TForm211 = class(TForm21);


Как определить что SpeedButton1 которая находится на форме определена в родителе формы, а не в текущем классе?
Как узнать в каком из родителей кнопка появилась?
Пока вижу 2 варианта:
1. Создавать экземпляры всех родителей и затем FindComponent.
Это не самый хороший способ, т.к. в OnCreate может много чего выполняться

2. Прочитать dfm из ресурсов, и затем искать текст в родителях "object SpeedButton1: TSpeedButton"
Идея парсить текст тоже не слишком хороша.
У некоторых форм своей dfm может и не быть

Есть ли способы проще?
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519869
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений> Как определить что SpeedButton1 которая находится на
Шавлюк Евгений> форме определена в родителе формы, а не в текущем классе?
Шавлюк Евгений> Как узнать в каком из родителей кнопка появилась?

Ну щас опять спросят зачем. :)

P.S. Я бы посмотрел в сторону RTTI, если версия не старая.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519871
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

ну тя и плющит.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519880
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В имени SpeedButton указывай родителя Типа: SpeedButton1_TForm1
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519881
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Я бы посмотрел в сторону RTTI, если версия не старая.
Версия старая, D5. Туда и смотрю. Но может кто раньше сможет мне помочь.

чччД,

Не то чтобы сильно плющит.

У меня много есть разных проектов. Есть набор базовых классов, от них уже все дальше наследуется.
Некоторые вещи удобно решать в "общем виде", считая что всю иерархию я не знаю.
В обычном проекте у меня 300-400 различных форм
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519882
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конструкторах форм можно инкрементировать тэги вложенных компонентов. Чем больше наинкрементировали - тем древнее род.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519887
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений> Версия старая, D5. Туда и смотрю.

В D5 не получится, разве что хаками какими-нибудь.
Лучше таки озвучь саму задачу, может, опять через
JCL какое-нибудь решение подскажут.

У тебя нигде в формах/класса нет своих "метаданных"?
Там мог бы и сабж хранить и любые капризы на будущее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519891
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с каждым новым постом автора всё больше и больше склоняюсь к мнению,
что не только стоматология может быть трансректальной ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519894
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кнопка может создаваться и динамически
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519899
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Ну цель-то у меня все та же - локализация.
Не хочу делать переводы каждой из 300 форм, т.к. тексты на 95% наследуются из родителей.
Конечный результат который хочу видеть табличку вида

1. Форма
2. Компонент
3. Главный родитель

Дальше пойдут интересующие меня свойства.
Пока я склоняюсь к парсингу всех дочерних форм.
В этом случае я смогу отслеживать переопределялись ли интересующие меня свойства в наследниках.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519903
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой лютый п....ц, даже комментировать никто не берется.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519910
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений> Ну цель-то у меня все та же - локализация.

Я даже боюсь спрашивать, какое дело локализации до того,
где была объявлена кнопка - в Form1 или в Form1211...

> Конечный результат который хочу видеть табличку вида

А что потом будешь с этой табличкой делать?
Техпису отдашь или что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519918
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамкакое дело локализации до того,
где была объявлена кнопка - в Form1 или в Form1211
Затем, я буду переводить ее один раз, в Form1, а не в остальных N-формах, где есть эта кнопка.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519920
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийГаджимурадов Рустамкакое дело локализации до того,
где была объявлена кнопка - в Form1 или в Form1211
Затем, я буду переводить ее один раз, в Form1, а не в остальных N-формах, где есть эта кнопка.

...вопросы языковой локализации важны, несомненно. Но строить всю структуру проекта вокруг них?
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519925
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНо строить всю структуру проекта вокруг них?
У меня вся базовая функциональность вынесена в родителей, и в наследниках только необходимый минимум.
А где ты увидел что структура проекта вокруг локализации?
Сейчас я ищу наиболее легкий способ переводить минимум текста.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519926
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
А чем не устраивают готовые решения по локализации?
Например, GNU Gettext.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519929
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда я работал в маленькой психиатрической больнице занимался наколенной локализацией, я написал небольшую программу, которая смотрит свойства всех компонентов на всех формах (.dfm) и если они подлежат локализации, генерирует нужный код в соответствующем .pas-файле.
У всех локализуемых классов был метод LocalizeInterface, соответственно, тело этого метода и генерировалось.

Как-то так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TdlgEditUser.LocalizeInterface;
begin
  inherited;
  { Globalizer generated code }
  Self.Caption := GetResourceString(TdlgEditUserSelfCaption, Self.Caption);
  Label1.Caption := GetResourceString(TdlgEditUserLabel1Caption,
    Label1.Caption);
  Label2.Caption := GetResourceString(TdlgEditUserLabel2Caption,
    Label2.Caption);
  Label3.Caption := GetResourceString(TdlgEditUserLabel3Caption,
    Label3.Caption);
  Label4.Caption := GetResourceString(TdlgEditUserLabel4Caption,
    Label4.Caption);
  Label5.Caption := GetResourceString(TdlgEditUserLabel5Caption,
    Label5.Caption);
  Label6.Caption := GetResourceString(TdlgEditUserLabel6Caption,
    Label6.Caption);
  Label7.Caption := GetResourceString(TdlgEditUserLabel7Caption,
    Label7.Caption);
  Label8.Caption := GetResourceString(TdlgEditUserLabel8Caption,
    Label8.Caption);
  {/ Globalizer generated code }
end;
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519934
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519944
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДschi,

все давно украдено.

Видишь ли, в чем дело, поругавшись на встроенный в D2006 ITE, я понял на тот момент, что проще написать простую программку из ста строк, чем тыкатся в готовые продукты по цене до 1840 евров.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519946
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiчччДschi,

все давно украдено.

Видишь ли, в чем дело, поругавшись на встроенный в D2006 ITE, я понял на тот момент, что проще написать простую программку из ста строк, чем тыкатся в готовые продукты по цене до 1840 евров.
Там же и бесплатных полно.
Главный принцип - при проектировании приложения уже знать, что будешь использовать конкретно вот такой локализатор, и научиться работать с ним.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519951
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийЕсть ли способы проще? Есть - не заморачиваться этим.

1. Ты не сам будешь переводить (я надеюсь). Поэтому пофиг сколько раз кнопки будут повторятся. На крайняк перевод можно автоматизировать в тулзе для перевода.
2. Контекст у наследуемых кнопок может меняться и на разных языках по разному переводиться. Поэтому всегда есть оставлять возможность переводить по разному.
3. Я бы послушал других и не изобретал бы великов, благо есть много проверенных инструментов.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39519998
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДschiпропущено...


Видишь ли, в чем дело, поругавшись на встроенный в D2006 ITE, я понял на тот момент, что проще написать простую программку из ста строк, чем тыкатся в готовые продукты по цене до 1840 евров.
Там же и бесплатных полно.
Главный принцип - при проектировании приложения уже знать, что будешь использовать конкретно вот такой локализатор, и научиться работать с ним.

Ты считаешь, что платные там для понтов перечислены или как ?

У меня была несколько иная ситуация, приложение уже было спроектировано и возникла нужда в его локализации. Поэтому взвесив все за и против, было решено, что проще написать заплатки к готовому коду.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520000
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем выход наверх через "parent" не прет?
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520003
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.09.2017 17:09, rgreat пишет:
> А чем выход наверх через "parent" не прет?

ты сейчас об чём?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520007
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий12.09.2017 17:09, rgreat пишет:
> А чем выход наверх через "parent" не прет?

ты сейчас об чём?

Слово подходящее. inheritance-child-parent.
А так - да, ни о чем.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520015
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat> А чем выход наверх через "parent" не прет?

Выйти чтобы что? Два варианта выхода ТС сам
выше и описал - создавать и чекать и dfm чекать.

P.S. Есть ещё, наверное, вариант через OTA.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520115
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёт мне кажется ТС делает редактор компонентов, и хочет их знать - где его компоненты, и где динамически созданные.

Тогда следует хранить динамически созданные объекты в списке (не важно в каком), главное что бы была база.

И тогда проблем с поисками жабы в поле не будет проблем.
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520116
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, насчёт локализации. Всегда ведь все делали, что - то типа {ИмяСвойства - Содержащее текущую локализацию.}

Потом делался foreach по всем компонента, и текст с компонента сверялся с базой ? ...

Всё это делается буквально в пару строк кода,а базу можно сделать через XML
...
Рейтинг: 0 / 0
Место рождения у SpeedButton1
    #39520232
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну цель-то у меня все та же - локализация. И только ради этого такие извращения ??????
Этому посвящено несколько топиков. Там есть реально работающие советы.
Локализация проекта(разноязычные надписи на контролах) делается за один день одной несложной процедурой (Карл !).
Еще пару дней - ресурсы и всякие месаджи.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Место рождения у SpeedButton1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]