powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Место рождения у SpeedButton1
25 сообщений из 29, страница 1 из 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
25 сообщений из 29, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Место рождения у SpeedButton1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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