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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.01 c
3-1142876984
beglec
2006-03-20 20:49
2006.05.14
Как типизированый поток записать в TMemTableEh


15-1145536258
Суслик
2006-04-20 16:30
2006.05.14
Вышел второй update для bds2006


15-1145286125
Yegorchic
2006-04-17 19:02
2006.05.14
Дневники


2-1145685513
jiny
2006-04-22 09:58
2006.05.14
Функция возвращает кол-во секунд, прошед. после полуночи


6-1137857835
GanibalLector
2006-01-21 18:37
2006.05.14
(Berkeley-style sockets) теория





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский