Delphi - создание форм в Delphi

Ответить
Аватара пользователя
Surround

Delphi - создание форм в Delphi

Сообщение Surround »

Подскажите, как создать форму по классу? То есть не делая ее предварительно, а непосредственно в ходе выполнения программы создать, разместить на ней компоненты и показать новое окошко.
Аватара пользователя
DillerInc

Re: Delphi - создание форм в Delphi

Сообщение DillerInc »

Surround

Ну,в принципе можно в коде настроить необходимые свойства будущего окна,а потом показать его с помощью метода Show.

А
CreateWindowEx
не подойдёт??
Аватара пользователя
programmist72

Re: Delphi - создание форм в Delphi

Сообщение programmist72 »

Вообще-то форма создаётся так:





Код:

Код: Выделить всё

var F:TForm;
begin
F:=TForm.Create(self);
F.Parent:= //родитель формы;
F.Top:= //координата 1
F.Left:= //координата 2;
F.Show;// - показ формы
end;
Аватара пользователя
Surround

Re: Delphi - создание форм в Delphi

Сообщение Surround »

programmist72

а как тогда еще разместить на форме всякие Label'ы и прочее?
Аватара пользователя
Surround

Re: Delphi - создание форм в Delphi

Сообщение Surround »

Surround

Вот код на Delphi только без использования VCL:



Код:

Код: Выделить всё

var
 Instance : Cardinal;
 Handle : HWND;
 hbtnOpen : HWND;
 hbtnRun : HWND;
 hStatic : HWND;
 hMemo : HWND;
 hLabel : HWND;
 WindowClass : TWndClass;
begin 
 Instance := GetModuleHandle(nil);
 { Заполняем структуру WindowClass класса TWndClass }
 WindowClass.style := CS_HREDRAW or CS_VREDRAW;
 WindowClass.lpfnWndProc := @WindowProc;
 WindowClass.hInstance := Instance;
 WindowClass.hIcon := LoadIcon(0, IDI_APPLICATION);
 WindowClass.hCursor := LoadCursor(0, IDC_ARROW);
 WindowClass.hbrBackground := COLOR_BACKGROUND;
 WindowClass.lpszClassName := 'Example';
// Регистрируем класс окна
 RegisterClass(WindowClass);
// Создаём окно
 Handle := CreateWindow('Example', 'Пример создания окна без VCL',
                          WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX,
                          350, 300, 400, 250, 0, 0, Instance, NIL);
// Показываем окно
 ShowWindow(Handle, SW_SHOW);
 UpdateWindow(Handle);
// Создаём кнопку
 hbtnOpen := CreateWindow('BUTTON', 'Open',
                           WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,
                           15, 185, 60, 25, Handle, 0, 0, NIL);
// Ещё кнопка
 hbtnRun := CreateWindow('BUTTON', 'Run',
                     WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON,
                     100, 185, 60, 25, Handle, 0, 0, NIL);
// Типа дельфийский Memo
 hMemo := CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, 'EDIT', '',
     WS_VISIBLE or WS_CHILD or WS_VSCROLL or ES_LEFT or
     ES_MULTILINE or ES_READONLY or ES_AUTOVSCROLL,
                           10, 45, 350, 130, Handle, 0, 0, NIL);
// Типа дельфийский label
 hLabel := CreateWindow('STATIC', 'Это компонент Label',
                      WS_VISIBLE or WS_CHILD or SS_RIGHT or SS_SIMPLE,
                      240, 200, 150, 20, Handle, 0, 0, nil);
end;
Аватара пользователя
programmist72

Re: Delphi - создание форм в Delphi

Сообщение programmist72 »

Тем же самым способом: создание экземпляра объекта требуемого класса, задание его параметров и показ на форме. С лейблом это будет выглядеть примерно так (пример исходного кода):





Код:

Код: Выделить всё

var lbl:TLabel;
begin
 lbl:=TLabel.Create(self);
lbl.Parent:=Form1;
lbl.Top:=50;
lbl.left:=50;
lbl.Caption:='Надпись на метке';
lbl.Show;
end;
Ответить

Вернуться в «Программирование и базы данных»