Здравствуйте, atomAltera, Вы писали:
A>Привет всем! A>Как мне из form1 открыть несколько копий form2 но с разными настройками (width, top, image1.picture, button1.caption)??? A>И неплохо было бы, если после закрытия одной из форм (form2.close), память из под неё освобождалась... A>Спасибо заранее!
Привет всем!
Как мне из form1 открыть несколько копий form2 но с разными настройками (width, top, image1.picture, button1.caption)???
И неплохо было бы, если после закрытия одной из форм (form2.close), память из под неё освобождалась...
Спасибо заранее!
Re: Как открыть окно сразу в нескольких экземплярах?
Здравствуйте, atomAltera, Вы писали:
A>И неплохо было бы, если после закрытия одной из форм (form2.close), память из под неё освобождалась...
Не заметил второй вопрос — если нужно чтобы конкретный экземпляр формы самоуничтожался при закрытии формы юзером, нужно сделать примерно такой обработчик OnClose:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Sender = Form2_1 then Action:= caFree;
end;
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re[2]: Как открыть окно сразу в нескольких экземплярах?
Здравствуйте, wallaby, Вы писали:
A>>И неплохо было бы, если после закрытия одной из форм (form2.close), память из под неё освобождалась...
W>Не заметил второй вопрос — если нужно чтобы конкретный экземпляр формы самоуничтожался при закрытии формы юзером, нужно сделать примерно такой обработчик OnClose:
W>
W>procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
W>begin
W> if Sender = Form2_1 then Action:= caFree;
W>end;
W>
Нафига? OnClose и так придет в тот экземпляр формы, для которого определен. Просто Action:=csFree и фсе.
Если уж очень нужна проверка, то if (Sender=Self) then...
Кстати: вот я держу форму в отдельном модуле (MyForm2), а вызываю из главной формы (модуль MainForm). Чтобы сделать твою проверку мне надо:
1) сделать CrossRef в MyForm2 на MainForm
2) сделать Form2_1...Form2_NNNN переменными, доступными из MyForm2
3) озаботится, когда NNNN достигнет 1000, созданием отдельной структуры/класса для хранения и мониторинга
Дальше обьяснять?
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[3]: Как открыть окно сразу в нескольких экземплярах?
Здравствуйте, DarkMaster, Вы писали:
DM>Нафига? OnClose и так придет в тот экземпляр формы, для которого определен. Просто Action:=csFree и фсе.
Не понял. Что значит прийдет в экземпляр формы? ИМХО прийдет в обработчик OnClose, общий для всех экземпляров. И по Sender там можно решить, что с каким экземпляром делать. Практической пользы от этого мало, но в принципе так.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re[5]: Как открыть окно сразу в нескольких экземплярах?
Здравствуйте, DarkMaster, Вы писали:
W>>Не понял. Что значит прийдет в экземпляр формы? ИМХО прийдет в обработчик OnClose, общий для всех экземпляров.
DM>Экземпляр класса формы. Обработчик не ОБЩИЙ! Одинаковый — да, но не общий. Сделай и посмотри: DM>
DM>Procedure TForm2.OnClose(Sender:TObject);
DM>begin
DM> if (Sender is TComponent) then ShowMessage((Sender as TСomponent).Name);
// ПОПРАВКА, конечно же ShowMessage('From:'(Sender as TComponent).Name+' To:'+Self.Name);
DM>end;
DM>
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[5]: Как открыть окно сразу в нескольких экземплярах?