Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - создание форм в Delphi

Ответить
Настройки темы
Delphi - создание форм в Delphi

Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:18, 06-07-2006

 

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


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

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 14:45, 06-07-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для programmist72

Пользователь


Сообщения: 78
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

-------
Если моё сообщение тебе помогло, срочно жми ссылку "Полезное сообщение" внизу этого самого сообщения...


Отправлено: 08:26, 07-07-2006 | #3


Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:38, 07-07-2006 | #4


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


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;
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 07-07-2006 | #5


Аватара для programmist72

Пользователь


Сообщения: 78
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

-------
Если моё сообщение тебе помогло, срочно жми ссылку "Полезное сообщение" внизу этого самого сообщения...

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:43, 07-07-2006 | #6


Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


Спасибо большое!

Отправлено: 12:50, 07-07-2006 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - создание форм в Delphi

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Создание форм для регистрации hunter Вебмастеру 0 11-11-2009 05:07
Delphi - Создание на Delphi компонентов с непрямоугольной областью реакции на события мыши Andrik Программирование и базы данных 7 02-12-2007 16:34
Delphi - Delphi создание объекта ferrum2688 Программирование и базы данных 3 28-02-2007 22:04
Delphi - Delphi | создание окна и его элементов средствами WinAPI Savant Программирование и базы данных 14 18-01-2005 14:15
Delphi - CPPB or Delphi:Как отследить создание reg ключа? SuperMaximus Программирование и базы данных 10 08-03-2004 15:48




 
Переход