Главная страница
    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.011 c
2-1145953129
Vladgen
2006-04-25 12:18
2006.05.14
DBGrid - редактирование данных, полученных из двух таблиц.


1-1144246078
d3777
2006-04-05 18:07
2006.05.14
Файл и динамический массив


2-1146117984
IntruderLab
2006-04-27 10:06
2006.05.14
DLL


2-1146142887
VeB
2006-04-27 17:01
2006.05.14
Набор иконок для одной программы


8-1134758124
Джон
2005-12-16 21:35
2006.05.14
Как заставить TMediaPlayer воспроизводить видео?





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