EOR Posted October 1, 2020 Share Posted October 1, 2020 Пробую написать редактор форм для UniGUI контролов для последующей динамической подгрузки файла формы в run-time. Но после размещения на форме дизайнера некоторые компоненты UniGUI не правильно отображаются (только как рамки). Контролы UniGUI - в design mode. Свойства VCLMode = true, WebMode = false, csDesigning in ComponentState = true Как сделать нормальное отображение компонента при вставке и изменении свойств в инспекторе объектов? Редактор форм написан с использованием пробной версии LMD DesignPack https://www.lmdinnovative.com/products/vcl/lmddesignpack/ Демо проект UniGUIandLMDDesigner.zip работает только при запущеном Delphi Заранее спасибо. Quote Link to comment Share on other sites More sharing options...
EOR Posted October 2, 2020 Author Share Posted October 2, 2020 Может кто подскажет почему в IDE Delphi в режиме проектирование формы UniGUI uniMemo1 - отображается нормально. Тот же контрол UniGUI uniMemo1 после запуска приложения Как включить отображение UniGUI uniMemo1 на обычной форме в режиме VCLMode = true на обычной VCL форме TForm??? Спасибо. Quote Link to comment Share on other sites More sharing options...
x11 Posted October 2, 2020 Share Posted October 2, 2020 Никогда не использовал LMDDesigner, просто домыслы: возможно LMDDesigner ничего не знает о нестандартных компонентах. Возможно, где-то, в каких-то свойствах нужно прописать соответствие, что TuniMemo = TMemo и т.д. Quote Link to comment Share on other sites More sharing options...
EOR Posted October 2, 2020 Author Share Posted October 2, 2020 LMD Designer использует для редактирования формы в общем случае потомков обычной стандартной формы TForm. Поэтому вопрос состоит в том, что как нормально отобразить на обычной форме TForm контролы UiniGUI в том виде в котором мы его видим в редакторе форм Delphi IDE. Но при запущенном приложении отображение нормально не происходит: Может есть какое-то свойство компонента UniGUI которое отвечает за отображение его в дизайн тайме типа VCLControl, которое почему-то не работает. В выражении TMemo(UniMemo1.VCLControl).Lines.Text := '111'; // TMemo(UniMemo1.VCLControl).Lines = nil Что как мне кажется не правильно. Нет? И вообще при вставке любого UniGUI компонента с палитры UniGUI Standard (см. рисунок) выясняется, что имя класса (c.VCLControl.ClassName) у всех один и тот же: TCustomTransparentControl И соответственно нормально не приводится к соответствующим типам TMemo, TButton Quote Link to comment Share on other sites More sharing options...
x11 Posted October 2, 2020 Share Posted October 2, 2020 Тут ничего не понял про 10 minutes ago, EOR said: свойство компонента UniGUI которое отвечает за отображение его в дизайн тайме типа VCLControl а тут почему нельзя просто UniMemo1.Lines.Text := '111' ? Quote Link to comment Share on other sites More sharing options...
EOR Posted October 2, 2020 Author Share Posted October 2, 2020 37 minutes ago, x11 said: Тут ничего не понял про ? Это было просто для примера. Чтобы понять что у UniMemo1лежит в VCLControl. Теоретически у компонентов UniGUI есть ссылка на компонент, отображаемый в дизайнере Delphi IDE вместо реального компонента UniGUI. То есть вместо TuniMemo будет отображен TMemo и т.п. Согласно документации http://www.unigui.com/doc/online_help/api/!!MEMBERTYPE_Properties_uniGUIBaseClasses_TUniGUIBaseControl.html Свойство VCLControl VCLControl is a design time instance of a VCL control which visually represent UniGUI control in designer. This control is provided to enhance developer's experience when designing forms. For some controls such as TUniDBGrid VCLControl also provide additional functionalities such as column re-sizing. Что примерно означает: VCLControl - это экземпляр элемента управления VCL во время разработки, который визуально представляет элемент управления UniGUI в дизайнере. Этот элемент управления предназначен для повышения удобства разработки форм для разработчиков. Для некоторых элементов управления, таких как TUniDBGrid, VCLControl также предоставляет дополнительные функции, такие как изменение размера столбца. Таким образом здесь должны быть ссылки на экземпляры TMemo, TButton и т.д. а здесь мы имеем TCustomTransparentControl. Это не работает, или я просто не умею его готовить :) ЗЫ. А вот в дизайнере Delphi IDE это работает Quote Link to comment Share on other sites More sharing options...
stas Posted October 4, 2020 Share Posted October 4, 2020 Если я правильно понял, Вы хотите в десктопной версии проектировать веб интерфейс? Если так, то использовать vcl контролы Фаршада у Вас не получится . Решение простое, но трудоёмкое. Для Unigui Tsomebutton=class(Tunibutton) Для десктопа TSomebutton=class(Tbutton) Дальше, думаю, понятно Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.