Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диалоги [D5, WinXP]


Страницы:   1 2

Галинка ©   (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]

Может кто-нибудь напишет все таки весь синтаксис конструкции...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо