Tokay Posted June 18, 2021 Share Posted June 18, 2021 Добрый день. Есть ли где-то место в компонентах аналогичное UniGUIMainModuleNewComponent при создании всех форм? В UniGUIMainModuleNewComponent формы, к сожалению, не попадают. Нужно для перевода на другой язык, не хочется на каждой форме явно прописывать переводчик, форм больше ста. Link to comment Share on other sites More sharing options...
x11 Posted June 22, 2021 Share Posted June 22, 2021 Я создал форму (назвал ее TfmParent), в событие создания формы вставил нужный код. А потом уже все остальные формы наследую от этой родительской формы. Так же и с фреймами. Link to comment Share on other sites More sharing options...
x11 Posted June 22, 2021 Share Posted June 22, 2021 On 6/18/2021 at 3:21 PM, Tokay said: форм больше ста теперь уже проблемно, наверное, переделывать Link to comment Share on other sites More sharing options...
Sherzod Posted June 22, 2021 Share Posted June 22, 2021 Рефакторинг? Link to comment Share on other sites More sharing options...
x11 Posted June 23, 2021 Share Posted June 23, 2021 17 hours ago, Sherzod said: Рефакторинг? как? В Delphi разве есть функционал, который легко и просто унаследует много форм от какой-то одной? Вроде бы даже нет вообще никакого способа, даже сложного. Придется менять руками и dfm, и pas файлы и знать что и где менять (добавлять, удалять что-то). И если где-то ошибешься... Я вот недавно попытался довольно простую форму унаследовать. Получились глюки, ошибки, легче было заново создать и унаследовать форму. Link to comment Share on other sites More sharing options...
Tokay Posted June 23, 2021 Author Share Posted June 23, 2021 Ясно, буду думать. Рефакторинг, в целом, возможен. Но боюсь вот проблем с наследованием. Намного удобнее было бы некое единое место, где со всеми (или опционально) создаваемыми формами можно было бы что-то сделать. Link to comment Share on other sites More sharing options...
x11 Posted June 23, 2021 Share Posted June 23, 2021 У серверного модуля есть пару HTTP-событий. Я бы вставил там логирование и проанализировал, может можно парсить оттуда информацию, касающуюся чего-то, что связано с созданием, открытием окон, фреймов и т.д. Link to comment Share on other sites More sharing options...
Tokay Posted June 29, 2021 Author Share Posted June 29, 2021 даже если там будет событие создания, то наверняка там не будет инстанса формы. для перевода нужен именно инстанс, но не событие Link to comment Share on other sites More sharing options...
x11 Posted June 30, 2021 Share Posted June 30, 2021 Наверняка в бэкэнде есть возможность получить имя VCL-формы по js-имени. Link to comment Share on other sites More sharing options...
Sherzod Posted June 30, 2021 Share Posted June 30, 2021 On 6/18/2021 at 5:21 PM, Tokay said: Нужно для перевода на другой язык, не хочется на каждой форме явно прописывать переводчик А каким "инструментом" пользуетесь? Link to comment Share on other sites More sharing options...
Tokay Posted July 1, 2021 Author Share Posted July 1, 2021 17 hours ago, Sherzod said: А каким "инструментом" пользуетесь? У нас собственный переводчик, основан на RTTI. Link to comment Share on other sites More sharing options...
stas Posted July 1, 2021 Share Posted July 1, 2021 On 6/29/2021 at 12:30 PM, Tokay said: даже если там будет событие создания, то наверняка там не будет инстанса формы. для перевода нужен именно инстанс, но не событие Решений несколько 1) Хук на создание формы 2) Потребовать от Фаршада наличие компонента TUniScreen (назрело) 3)В событии UniGUIMainModuleNewComponent обрабатывать каждый компонент, и применять к нему перевод Link to comment Share on other sites More sharing options...
Tokay Posted July 1, 2021 Author Share Posted July 1, 2021 нам проще всего был бы 3й вариант. однако туда, как я уже писал, формы не приходят ну и Screen было бы отлично поддержать, это само собой Link to comment Share on other sites More sharing options...
stas Posted July 1, 2021 Share Posted July 1, 2021 2 minutes ago, Tokay said: нам проще всего был бы 3й вариант. однако туда, как я уже писал, формы не приходят ну и Screen было бы отлично поддержать, это само собой Я обошелся хуком Link to comment Share on other sites More sharing options...
Tokay Posted June 15, 2022 Author Share Posted June 15, 2022 Наконец появились полные рантайм исходники и я себе поправил как хочется в конце TUniBaseForm.Create with TUniGUIApplication(UniApplication).UniSession do if Assigned(UniMainModule) and Assigned(UniMainModule.OnNewComponent) then UniMainModule.OnNewComponent(Self); в конце TUniFrame.Create with UniSession do if Assigned(UniMainModule) and Assigned(UniMainModule.OnNewComponent) then UniMainModule.OnNewComponent(Self); 'Обычный' вызов OnNewComponent убрал, дабы не было массовых вызовов. Благодаря дописанному удалось выкинуть реально гору лишнего кода и uses'ов. Любые вновь созданные формы и фреймы централизованно приходят в MainModule. Фаршад вероятно, сам не догадывается насколько важны полные исходники. Еще не было ни одной компоненты на моей памяти, которые не приходилось бы править под себя. А такие в общем сложные как Унигуй и подавно. У нас сейчас уже с десяток правок в Унигуе и, вижу, будет еще больше. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now