Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

Как создать форму из dfm?   Найти похожие ветки 

 
AndrewK   (2003-04-16 14:15) [0]

Есть желание динамически создавать формы. Можно ли как-нить грузить формы из dfm или придется описывать ограниченный набор контролов и писать свой формат для создания форм?


 
evvcom   (2003-04-16 14:51) [1]

А
Form1 := TForm.Create;
Button1 := TButton.Create(Form1);
Button1.Parent := Form1;

и так далее не устраивает?


 
kull   (2003-04-16 15:52) [2]

Смотри в Help: TCustomForm.CreateNew

Может это тебе нужно?


 
Shirson   (2003-04-16 16:09) [3]

По ходу AndrewK другое спрашивает. В dfm набрасывать болванки форм, используя Delphi как редактор форм, а потом эти формы цеплять к проге динамически. Т.е. смысл в том, чтобы прога не перекомпилировалась при добавлении новых форм.
IMHO задачка та ещё...


 
kull   (2003-04-16 16:18) [4]

Description

Use CreateNew instead of Create to create a form without using the associated .DFM file to initialize it. Always use CreateNew if the TCustomForm descendant is not a TForm object or a descendant of TForm.

WriteComponentResFile("Temp.dfm", Form1);


Form2 := TForm.CreateNew(Application);

ReadComponentResFile("Temp.dfm", Form2);



 
AndrewK   (2003-04-18 09:49) [5]

Че то не работает... :(


 
savva   (2003-04-18 11:00) [6]

я делал так:

проект
program Project1;
uses
Forms,
Classes,
Unit1 in "Unit1.pas" {Form1};

{$R *.RES}

//{$DEFINE REFRESH_FORM}
begin
Application.Initialize;
{$IFDEF REFRESH_FORM}
Application.CreateForm(TForm1,Form1);
WriteComponentResFile("Test.dfm", Form1);
Form1.free;
{$ENDIF}
Form1 := TForm1.CreateNew(Application);
ReadComponentResFile("Test.dfm", Form1);
Form1.Show;
repeat
Application.HandleMessage
until Application.Terminated;
Form1.free;
end.

форма
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
btnSaveForm: TButton;
Memo1: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnSaveFormClick(Sender: TObject);
begin
WriteComponentResFile("Test.dfm", Form1);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;

end.

выделены важные моменты:
1) директива REFRESH_FORM используется чтоб обновит форму, если вы ее модифицировали (в частности новые компоненты и обработчики событий)
2) Так как форма в примере одна, то есть она главная, когда мы ее закрываем будем считать что приложение завершается (здесь возможны вариации).


 
savva   (2003-04-18 11:09) [7]

хотя толку тоже не много - максимум что можно делать - перемещать, менять текст и т.д. То есть ТОЛЬКО менять свойства. Для обработки событий код должен присутствовать в теле программы. Даже если будет добавлена на форму кнопка (или другой любой управляющий элемент) то связать события будет очень трудно (предусмотреть все возможные вариант сложно)..



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
14-780
Shadow
2003-04-13 20:28
2003.05.01
Ну вот.


14-719
Giemgo
2003-04-13 17:01
2003.05.01
Повторная загрузка программы


3-394
xxxCrazyManxxx
2003-04-11 11:57
2003.05.01
Помогите с UNION в MS SQL 7


3-431
gary5555
2003-04-12 15:25
2003.05.01
Как сделать неизменной нумерацию строк???


1-543
tv
2003-04-21 10:58
2003.05.01
TreeView & Unicode





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский