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

Вниз

как динамически создать форму   Найти похожие ветки 

 
Dober_m@N   (2004-02-27 05:26) [0]

есть прилодение с формой, надо динамически создать 2-ю форму form2 наприм?


 
ЮЮ ©   (2004-02-27 06:04) [1]

>2-ю форму form2 наприм?
т.е. один экземпляр класса TForm2 уже создан, а ссылка на него хранится в глбальной переменной form2 модуля form2? Или в чем проблема?


 
ЮЮ ©   (2004-02-27 06:11) [2]

Может тебе ещё рано думать о динамическом создании? Даже созданная статически, она не покажется, пока не вызовешь метод Show(Modal). А для добаления ещё оной формы в проект нажми кнопку New Form.


 
Gero ©   (2004-02-27 07:12) [3]

Form2 := TForm2.Create(Application);


 
ЮЮ ©   (2004-02-27 07:27) [4]

Gero ©   (27.02.04 07:12) [3]
 если 2-я форма form2 это не второй экземпляр формы TForm2. Но автор молчит, что он подразумевал под 2-я форма


 
Dober_m@N   (2004-02-27 07:27) [5]

:)   нажми кнопку New Form
у меня неизвестное кол-во форм должно быть т е надо динамически...
через kol всё работает, но kol плохо дружит в модулями forms, extctrl, короче пишет ошибки при закрытии программы  не из делфи а при самостоятельной работе. Поэтому надо средствами делфи.


 
Dober_m@N   (2004-02-27 07:29) [6]

кстати по поводу экземпляров и переменных, их как массивы(array[] TForm) что ли делать? чтоб для неизвесного кол-ва окон?


 
Gero ©   (2004-02-27 07:32) [7]

> Dober_m@N
Создал бы свою ветку.

> чтоб для неизвесного кол-ва окон
TList


 
ЮЮ ©   (2004-02-27 07:45) [8]

>кстати по поводу экземпляров и переменных, их как массивы(array[] TForm) что ли делать? чтоб для неизвесного кол-ва окон?

Хоть массивы, хоть список, особой разницы нет. А из модуля описания формы TForm2 глобальную переменную form2 убрать во избежания будущих недоразумений.


 
Dober_m@N   (2004-03-02 05:32) [9]

вот так cоздаю(пока для 1-й формы):

var Form2: TForm;
begin
 Form2 := TForm.Create(application);
 Form2.Left :=200;
 Form2.Top := 200;
 Form2.WindowState := wsNormal;
 Form2.BorderStyle := bsNone;
 Form2.Name := "Form2";
 Form2.Show;

....

создаётся нормально
дальше(примерный код):

 form2.Canvas.Pen.Color := clLime;
 form2.Canvas.Pen.Width := 3;
 form2.Canvas.Brush.Color := clGray;
 form2.Canvas.Rectangle(0,0,100,100);
 form2.Canvas.Font.Color := cllime;
 form2.Canvas.TextOut(2,2, "gggg");

-> acces violation at addr  

нерисует ничего  пишет только ошибки..
я так понял нада ещё и canvas тоже создавать?
вопрос: напишите плз   код   как его создавать? и как привязывать к форме?

var Ca: TCanvas;
begin
Ca := TCanvas.Create;  
некатит :(


 
ЮЮ ©   (2004-03-02 06:06) [10]

> создаётся нормально дальше(примерный код):

Этот "примерный код" должен быть написан в обработчике TForm2.OnPaint а вовсе не там, где ты пишешь (кстати следует приводить имя обрабочика, а не только код).

Если всё-таки намерен создавать несколько экземпляров TForm2, то никахих form2. См [8]


 
Алексей Петухов   (2004-03-02 07:01) [11]

function TForm1.myFormCreate(Own:TComponent): TForm;
begin
 Result:=TForm.Create(Own);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 myFormCreate(self).Show;
end;


 
Dober_m@N   (2004-03-02 08:58) [12]

да понятно что буде не form2   а что то типа   forms[i].name  наприм


 
Dober_m@N   (2004-03-02 09:00) [13]

Алексей я непонял  ,  я сanvas спрашивал..


 
Алексей Петухов   (2004-03-02 09:06) [14]


> Алексей я непонял  ,  я сanvas спрашивал..

Про Canvas смотри [10]

А я на это ответил:
> есть прилодение с формой, надо динамически создать 2-ю форму
> form2 наприм?


 
Dober_m@N   (2004-03-04 07:43) [15]

форма создаётся нормально в процедуре click,
но при любой попытке обратиться к canvas   -> acces violation at adress и тд.

OnPaint тут неспасёт :( ,пробовал
да и вызываться он будет неправильно, только при данном событии, а мне надо чтоб по таймеру к примеру рисовал произвольную линию,для теста, что работает :)


 
Dober_m@N   (2004-03-05 07:39) [16]

всё разобрался   всем thx



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

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

Наверх




Память: 0.5 MB
Время: 0.029 c
7-1071524872
maxfiles
2003-12-16 00:47
2004.03.28
Можно ли создать точный таймер с интервалом в 1 мкс?


3-1074853124
nejest
2004-01-23 13:18
2004.03.28
как сделать если нету записей, удовлетворяющих условию выводило 0


1-1078948667
tim5
2004-03-10 22:57
2004.03.28
Дата и время


1-1078484177
PiratA
2004-03-05 13:56
2004.03.28
Динамическое создание компонент...


1-1078617415
Lena19
2004-03-07 02:56
2004.03.28
указатель на переменную