Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Внизкак динамически создать форму Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c