Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Hi All! Как динмически вставить из кода на Delphi кусочек DFM. Нажно что то типа- type tMyForm= class(Tform) тут что-то своё родное...:-)) end; const mydfm= ' object DBGrid1: TDBGrid Align = alClient DataSource = DataSource1 TabOrder = 0 end'; var frm:TMyform; begin frm:= TMyform.Create(nil); frm.LoadDfm(mydfm);//????? С уважением Михаил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 16:20 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
А пример вообще запутал............. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 16:27 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Я уже советовал здесь Брать JVCL 2.0 в который включен RALIB. Тама специальный компонентик есть, который загружет форму. Можно в базе хранить формы http://jvcl.sourceforge.net/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 16:47 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Пардон за путаницу! Короче - в Delphi каждая форма это новый unit. В крупном проекте крошечных окошек, отличающихся друг от друга пустяшным контролом, набирается огромное количество. Поэтому возникает идея - иметь одну форму (или вообще создавать её динамически), а нужные контролы подгружать из кусочкок DFM которые храняться в нужных константах. Проблема в том как? С уважением Михаил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 08:41 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Про наследование слыхал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 08:47 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Ну здесь можно и без загрузки всего DFM. Зделай базовый класс- форму, а от него пронаследуй формы которые отличаются на один контрол ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 08:47 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
А причем тут вообще DFM ??????????? Он служит только для того, чтобы скомпилять dcu. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 10:52 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
А еще можно фреймы прикрутить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 12:15 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
2MBorovik 1. Сделай базовую форму-шаблон и включи ее в проект Например type tMyForm= class(Tform) тут что-то своё родное...:-)) end; 2. Дальше ты можешь включать динамически сколько угодно экземпялров этой формы f1=tMyForm.Create(self); 3. В случае необходимости можно динамически создавать экземпляры компонент и помещать их на экземпляры форм (с указанием parent) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 12:44 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
В принципе можно и в коде писать Код: plaintext И на форму кидать новые контролы 2Tigra Оказывается DFM может служить не только для компиляции В RaLib мжно программно загружать формы из DFM - этакий интерпритатор форм и модулей. Смотреть можно здесь http://ralib.hotbox.ru/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 14:14 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Оказывается DFM может служить не только для компиляции В RaLib мжно программно загружать формы из DFM - этакий интерпритатор форм и модулей. Смотреть можно здесь http://ralib.hotbox.ru/ Это для интереса, когда начинаешь изучать программирование, Delphi - все можно и интересно, только не нужно оно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 14:29 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Как знать... Задачи бывают разные как и способы решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 14:38 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Ещё раз - в чем проблема. Некоторые думают что такой код работает Type TmyForm = class(Tform) end; var MyForm:TmyForm; begin MyForm:= TmyForm.Create(self); end; Если его попробовать выполнить то появится сообщение об ошибке - "Ресурс не найден"!!! В Дельфи есть единственую форма, которую можно создавать динамически - это Tform. Использую функцию ReadComponentFromTextStream( sInitDfm, Self, Self ); можно вставлять не визуальные элементы - сonst sInitdfm: string = 'object TDataSet ' + 'object OU_DEBCRED:TIntegerField ' + и так далее Михаил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 14:50 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
to MBorovik Ещё раз - в чем проблема. Некоторые думают что такой код работает Type TmyForm = class(Tform) end; var MyForm:TmyForm; begin MyForm:= TmyForm.Create(self); end; Самое интересное, что такой код работает :) Только при выполенение след условий 1. Класс TmyForm сформирован в отдельном dfm 2. dfm - включен в проект 3. Из вызываемой формы ресурс виден - есть uses Тогда генери динамически форм столько, сколько хочешь:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 15:00 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Тогда я уж и не пойму, чего нужно???????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 15:54 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Формулировка проблемы - как динамически подключать DFM разработанные конечным пользователем ПОСЛЕ того как им отдали Ваш проект. Пользователь, как правило, хочет перенастроить форму ввода. Первый вариант - если бы мы ему могли предоставить нашу форму, он в Delphi потаскал бы элементы куда нужно, нажал кнопочку и получил то, что ему нужно без нашего участия. Второй вариант -написать простенькую программу которая сохраняет в DFM ( в текстовом формате) любое активное окно не проблема. Более того, там же легко дать возможность исправит названия кнопок, лейблов, закладок и так далее но "куды ложить" так что бы после нового открытия этого окна вся правка сохранилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 16:43 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Так тут Dfm ни при чем Сохраняй положение всех контролов, оттуда выставляй. И давай тогда возможность перемещать их спец. приблудой какой-нибудь А вообще - странная задача. Может тогда юзер, если такой умный, и программы сам писать будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 16:48 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
2MBorovik Если Вы хотите дать возможность изменять форму в Run-Time, то могу предложить след схему 1. Определяете псевдоязык возможных изменений типа - добавить визуальный компонент с именем - расположить его в верхнем углу - передать управление стандарнтому обработчику и т.п. 2. Сделать tool-bar menu - в котором пользователь может настраивать это все под себя (или, скажем, читать из текстового файла или таблицы сервера) 3. Разработать соответсвующий универсальный интерпретатор 1. 4. Сделать соответствующий универсальный интерпретартор 2 Скомпилировать все это - и пошло... Однако, такая работа требует очень серьезного опыта и квалификации. На первых порах сложности 1-4 будут существенно превышать прост модификацию проекта. Но портенциально - при достаточном упорстве, знаниях и спасобностях такой подход весьма перспективен ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 16:52 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Кстати, прочитал еще коментарий. Эта задача существенно проще. И вариантов "куды положить" море - на взлет StartUp файл (типа ini), Registry, текстовый файл, таблица сервера .... И все прекрасно работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 16:54 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
2MBorovik Хм, ссылку на RaLib вроде давал, чем не устраивает? Там и дизайнер форм и загрузчик dfm есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 18:04 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Про raLib - скачать скачал, но где дизайнер и прочее - там море, в котором утонуть не проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 19:12 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
такой код работает!!! Кнопка "Привет" появляется!!! const sInit:string= 'object _1 '+ 'object TBitBtn'#13#10+ 'Left = 180'#13#10+ 'Top = 24'#13#10+ 'Width = 75'#13#10+ 'Height = 25'#13#10+ 'Caption = ''Привет'''#13#10+ 'TabOrder = 0'#13#10+ 'OnClick = BitBtn1Click '+ 'end'#13#10+ 'end'; procedure TForm1.BitBtn1Click(Sender: TObject); begin ReadComponentFromTextStream( sInit, Self, Self ); end; появляется кнопка. Процедура ReadComponentFromTextStream посроена на двух преобразованиях ObjectTextToBinary( TextStream, BinaryStream ); Result := ReadComponentFromBinStream( BinaryStream, AOwner, Instance ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 19:15 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
награда нашла героя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 19:23 |
|
||
|
Динамическая вставка DFM
|
|||
|---|---|---|---|
|
#18+
Последний пример работает (то есть добавляет элемент) если на форме уже есть такой же - можно добвать кнопку если есть кнопка и так далее. Кто нибудь знает где документированы ReadComponent и прочее ??? >:-((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2002, 10:16 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2119423]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 522ms |

| 0 / 0 |
