Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Динамическое создание окна   Найти похожие ветки 

 
Lucifer ©   (2006-04-26 13:44) [0]

Здравствуйте!
К меня такой вопрос: допустим у меня есть таймер в обработчике которого стаит следующее:
- надо показать форму (с имеющимися, допистип,  на ней label1 и пару кнопочек)
- присвоить значение (допустим) label1.caption ну, к примеру, текущего времени.
Но долно все выполняться так, что бы после каждого выполнения обработчика таймера создавалось новое окно, а не изменялось старое!

Заранее благодарен за любой ответ!


 
AbrosimovA ©   (2006-04-26 14:00) [1]

А имечко у тебя подходящее для таких вопросов.


 
lucifer ©   (2006-04-26 14:12) [2]

Ну а если серьезно? Имя это не главное! (по райней мере сейчас) Лучше бы проблему помог решить, чем к имени придераться! Извини если обидел!


 
AbrosimovA ©   (2006-04-26 14:20) [3]

А ответь на вопрос: "Сколько окон достаточно создать по секундному таймеру , для того, чтобы, в прямом смысле, повесить напрочь компьютер?"
Поэтому, см. [1]


 
lucifer ©   (2006-04-26 14:24) [4]

Ну, к примеру, если он даже и секундный, то окон будет столько сколько нужно и ничего не повеситься, лучше скажи как создать динамически форму и прикрати издеваться!


 
Плохиш ©   (2006-04-26 14:26) [5]


> lucifer ©   (26.04.06 14:24) [4]

Книжка "Делфи для чайников за 21 секунду".


 
lucifer ©   (2006-04-26 14:31) [6]

Блин ну давайте вы не буддете издеваться а просто подскажете меленьки кусок кодя для выполнения поставленой мной задачи раз она такая лёгкая. Просто у меня нет сейчас под рукой подходяшей литературы, а время очень сильно поджимает!


 
Юрий Зотов ©   (2006-04-26 14:31) [7]

> как создать динамически форму

Создать - точно так же, как и любой другой объект, вызовом конструктора.

А чтобы показать - вызвать Show или ShowModal.


 
lucifer ©   (2006-04-26 14:35) [8]

Хорошо создал я форму!
Дальше у меня в некоторой процедуре (допустим это у меня был таймер)
стоит Как ты сказа , к примеру, Show. и тогда у меня будет открываться одно и тожже окно! Но мне надо что бы у меня каждый раз открывалось новое и я не знаю какое максимальное количество нужно будет вывести!
Мне надо что то типа ShowMessage но так что бы на нем были некоторые компоненты и что бы я мог изменять на них значения при создани


 
Плохиш ©   (2006-04-26 14:37) [9]


> lucifer ©   (26.04.06 14:35) [8]

Создавай новую форму каждый раз. Книжка "Основы ООП в делфи для чайников за 10 секунд"


 
lucifer ©   (2006-04-26 14:38) [10]

КАК!!!!!


 
lucifer ©   (2006-04-26 14:38) [11]

Мне надо что бы они создавались в рантайме !


 
Плохиш ©   (2006-04-26 14:39) [12]


> Просто у меня нет сейчас под рукой подходяшей литературы,
>  а время очень сильно поджимает!

Надо было учиться во время семестра, а не спать.


 
lucifer ©   (2006-04-26 14:40) [13]

И что бы были выполнены по какомой-то заранее пригатовленой форме. Т.е. у меня есть форма созданая до компиляции, а во время работы програмы создаються ее копии с некоторыми значениями компонентов


 
lucifer ©   (2006-04-26 14:47) [14]

На лекциях мы такого не проходили! И я не сплю на лекция так как предпочитаю лучше прогулять и спать дома чем на жесткой парте!:-))

Как? Ну ответе плиз!


 
balepa ©   (2006-04-26 14:59) [15]

program Project1;

uses
 windows,
 messages;

{"модули windows и messages  самые необходимые — они обязательно должны быть
объявлены в начале каждой Вашей программы!}
var
 wc : TWndClassEx;  //Переменная шаблона класса окна
 MainWnd : HWND;   //Описатель главного окна
 Mesg : TMsg;          //Переменная для цикла сбора сообщений
{  Далее следует оконная процедура главного окна. Обратите внимание на служебное
 слово stdcall оно вынуждает компиллятор генерировать особый вид кода, который

 может быть вызван любой windows-программой, без этого служебного слова
 программа не сможет  работать вообще!}

function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult;
stdcall;
Begin
 {Далее происходит цикл обработки сообщений}
 case msg of
 wm_destroy :  //Сообщение посылаемое при уничтожении окна
   Begin
    postquitmessage(0); exit;

    Result:=0;
   End
  else Result:=DefWindowProc(wnd,msg,wparam,lparam);
 end;
End;

{Переменные xPos,yPos,nWidth,nHeight в принципе не нужны, однако я их завел
(и вам рекомендую) для лучшей читабельности программы}

var
 xPos,yPos,nWidth,nHeight : Integer;
begin //Тело программы
{  Далее идет заполнение шаблона класса окна}

wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw or cs_noclose;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;

wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="WinMin : Main";
RegisterClassEx(wc); //Регистрация нового класса в системе

{"заполнение переменных xPos,yPos,nWidth,nHeight}

xPos:=100;
yPos:=150;
nWidth:=400;

nHeight:=250;

{ Создание главного окна}
MainWnd:=CreateWindowEx (
0,                    //флаги расширенных стилей
"WinMin : Main",    //имя класса окна, данное при заполнении структуры wc
"Simple Window",          //заголовок окна
ws_overlappedwindow, //флаги стилей окна
{подробнdее о стилях см. после текста программы}
xPos,               //горизонтальная позиция окна
yPos,               //вертикальная позиция окна

nWidth,             //ширина окна
nHeight,            //высота окна
0,                  //описатель родительского окна (parent) или окна-владельца (owner)
0,                  //описатель меню окна (меню нет, нет и описателя)
Hinstance,          //описатель приложения
nil                 //address of window-creation data
);
ShowWindow(MainWnd,CmdShow); //Отображаем окно

//Цикл обработки сообщений
//он может слегка видоизменяться, но эти строчки присутсвуют всегда

While GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
end;
end.


 
AbrosimovA ©   (2006-04-26 15:06) [16]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   procedure CloseNewForm(Sender: TObject; var CanClose: Boolean);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CloseNewForm(Sender: TObject; var CanClose: Boolean);
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
var NewForm: TForm;
begin
NewForm:=TForm.Create(Application);
NewForm.OnCloseQuery:=CloseNewForm;
NewForm.Show;
end;

end.


 
AbrosimovA ©   (2006-04-26 15:11) [17]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   procedure ShowNewForm(Sender: TObject);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var NewForm: TForm;
begin
NewForm:=TForm.Create(Application);
NewForm.OnShow:=ShowNewForm;
NewForm.Show;
end;

procedure TForm1.ShowNewForm(Sender: TObject);
var
   NewButton: TButton;
   NewLabel: TLabel;
begin
NewButton:=TButton.Create(TForm(Sender));
NewButton.Parent:=TForm(Sender);
//и т.д.
end;

end.



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

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.036 c
2-1146141713
Начинающий5
2006-04-27 16:41
2006.05.14
Начинающий5


2-1145709298
Ку Ку
2006-04-22 16:34
2006.05.14
Дополнительная кнопка


1-1144302805
AlexeyT
2006-04-06 09:53
2006.05.14
Слетает форматирование RichEdit


15-1145420452
ORMADA
2006-04-19 08:20
2006.05.14
Определение программы упаковки файла


8-1134812696
Фео
2005-12-17 12:44
2006.05.14
Драм-машина