![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диалоги [D5, WinXP]
Галинка © (2004-10-06 11:56:00)Доброго всем времени суток...
Мне надо выкинуть один диалог из автокреата. Как его потом использовать?
Заранее спасибо всем, кто ответит.
Anatoly Podgoretsky (2004-10-07 15:23:00) [1]Галинка © (06.10.04 12:38) [22]
Лучше так
procedure ... . FileNewExecute (...);
begin
with TMyDlg1.Create(Application) do
try
if ShowModal = mrOK then
begin
with MyDlg2.Create(Application) do
try
if ShowModal = mrOK then
begin
....
CreateMDIChildWin....
end;
finally
Free;
end;
end;
finally
Free;
end;
end;
Плохиш (2004-10-07 15:14:00) [2]
> wisekaa © (07.10.04 15:06) [28]
А FormDialog во втором варианте обнилять дядя Вася будет?
wisekaa (2004-10-07 15:06:00) [3]Во первых все модальные диалоги, после их использования необходимо освобождать.
Во вторых вот ответ на твой вопрос
Вариант с использованием логальных переменных формы
procedure ShowDialogDBInput()
var
Dialog: TFormDialog;
begin
Dialog := TFormDialog.Create(Application);
try
if Dialog.ShowModal = mrOk then begin
end;
finally
Dialog.Free;
end;
end;
procedure ShowDialogDBOutPnput()
var
Dialog: TFormDialog;
begin
Dialog := TFormDialog.Create(Application);
try
if Dialog.ShowModal = mrOk then begin
end;
finally
Dialog.Free;
end;
end;
Вариант с использованием переменной Юнита Формы
procedure ShowDialogDBInput()
begin
if Assigned(FormDialog) then FormDialog.Free;
FormDialog := TFormDialog.Create(Application);
try
if FormDialog .ShowModal = mrOk then begin
end;
finally
FormDialog .Free;
end;
end;
procedure ShowDialogDBOutPnput()
begin
if Assigned(FormDialog) then FormDialog.Free;
FormDialog := TFormDialog.Create(Application);
try
if FormDialog .ShowModal = mrOk then begin
end;
finally
FormDialog .Free;
end;
end;
Галинка (2004-10-07 13:51:00) [4]Для Амёбы. А зачем так сложно? На фига нужны эти проверки и обниление? Ведь это же диалог - модальная форма! При модальном показе 2-й экземпляр (если программер не полный идиот и сам не будет себе подкладывать грабли) создать не должно приходить в голову.А придется. Вот придется создать второй экземпляр формы, в которой просматриваются таблицы. Сначала для просмотра и редактирования исходных таблиц, а потом для тех же действий, только с результирующими...
Мастер (2004-10-06 13:35:00) [5]
begin
with TMyDlg1.Create(Application) do
try
if ShowModal=mrOK then
with TMyDlg2.Create(Application) do
try
if ShowModal=mrOK then
begin
....
CreateMDIChildWin....
end;
finally
Free;
end;
finally
Free;
end;
end;
Amoeba (2004-10-06 12:48:00) [6]С учетом begin...end © (06.10.04 12:45) [23]да.
Галинка (2004-10-06 12:47:00) [7]to begin...end а все остальное правильно?
begin...end (2004-10-06 12:45:00) [8]
> [22] Галинка © (06.10.04 12:38)
Вместо
> MyDlg2.ShowModal;
> if MyDlg2.ModalResult=mrOK then
можно писАть:
if MyDlg2.ShowModal = mrOk then
Галинка (2004-10-06 12:38:00) [9]Для Амёбы: (извините если что не так)
У меня пока так
procedure ... . FileNewExecute (...);
begin
MyDlg1.ShowModal;
if MyDlg1.ModalResult=mrOK then
begin
MyDlg2.ShowModal;
if MyDlg2.ModalResult=mrOK then
begin
....
CreateMDIChildWin....
end;
end;
end;
Значат ли Ваши высказывания то, что это превратиться в
procedure ... . FileNewExecute (...);
begin
MyDlg1:=TMyDlg1.Create(Application);
try
MyDlg1.ShowModal;
if MyDlg1.ModalResult=mrOK then
begin
MyDlg2:=MyDlg2.Create(Application);
try
MyDlg2.ShowModal;
if MyDlg2.ModalResult=mrOK then
begin
....
CreateMDIChildWin....
end;
finally
MyDlg2.Free;
end;
end;
finally
MyDlg1.Free;
end;
??????????
TUser (2004-10-06 12:28:00) [10]
> А что делать, когда из одного диалога надо вызвать другой?
Так же и делай, какая разница гду ты создаешь?
Amoeba (2004-10-06 12:28:00) [11]
> Галинка © (06.10.04 12:25) [17]
Я так и предчувствовал, что вопросы теперь посыплются как из худого мешка...
Вызов другого диалога из диалога (во время его модального показа) делается в обработчике нажатия какой-либо кнопки на нем. Схема прежняя. Естественно, никаких вложенных циклов.
Галинка (2004-10-06 12:28:00) [12]Еще один вопрос на засыпку. А что делать, когда из одного диалога надо вызвать другой? В какой последовательности их надо будет создавать/уничтожать? По принципу вложенных циклов?
Мастер (2004-10-06 12:26:00) [13]>Галинка © (06.10.04 12:25) [17]
А ты попробуй и узнаешь.
Amoeba (2004-10-06 12:25:00) [14]Похоже, что авторша вопроса далеко не продвинется в программировании.
Галинка (2004-10-06 12:25:00) [15]Еще один вопрос на засыпку. А что делать, когда из одного диалога надо вызвать другой? В какой последовательности их надо будет создавать/уничтожать? По принципу вложенных циклов?
begin...end (2004-10-06 12:23:00) [16]Не хватает заменить TMyDialog на TIntervalsDlg
Amoeba (2004-10-06 12:22:00) [17]
> Галинка © (06.10.04 12:20) [12]
Что еще непонятно? Чего нехватает до "всего синтаксиса конструкции"?
Amoeba (2004-10-06 12:21:00) [18]Можно еще и так:
with TMyDialog.Create(Application) do
try
ShowModal;
finally
Free;
end;
или
with TMyDialog.Create(Application) do
try
if ShowModal = mrOk then
begin
...
end;
finally
Free;
end;
Sorry, в [2] в спежке забыл дописать параметр конструктора.
Галинка (2004-10-06 12:20:00) [19]Удалено модератором
Галинка (2004-10-06 12:19:00) [20]Может кто-нибудь напишет все таки весь синтаксис конструкции...