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

Вниз

Смена модального окна   Найти похожие ветки 

 
Zloy ©   (2005-02-08 13:39) [0]

Суть в общем такая, вызывая Form2.ShowModal потом из Form2 вызываю Form3.ShowModal, затем мне требуется на закрывая Form3 сдлать модальной Form2, вот здесь у меня возникает ошибка, подскажите как ее правильновызвать, если обе они были вызваны как модальные


 
Zloy ©   (2005-02-08 15:24) [1]

Ну не уж то ни кто не знает решения этой задачи


 
icWasya ©   (2005-02-08 15:57) [2]

Единственное, что могу посоветовать

//Unit1

type
 TForm1 = Class(TForm)
 ...
 public
   MForm:TForm;
 ...
 end;

...
procedure TForm1.Button1Click(Sender:TObject);
begin
 MForm:=Form2;
 ModalForms;

end;
procedure TForm1.ModalForms;
var
 Form:TForm;
begin
 while MForm<>Nil do begin
   Form:=MForm;
   MForm:=Nil;
   Form.ShowModal;
 end;
end;
......
//Unit2
procedure TForm2.ShowForm3Click(Sender:TObject);
begin
 Form1.MForm:=Form3;
 Close;
end;

......
//Unit3
procedure TForm3.ShowForm2Click(Sender:TObject);
begin
 Form1.MForm:=Form2;
 Close;
end;



 
GanibalLector ©   (2005-02-08 16:34) [3]

> подскажите как ее правильновызвать, если обе они были вызваны как модальные

А никак! Ты противоречишь законам винды.


 
Defunct ©   (2005-02-08 16:56) [4]

> Form2.ShowModal потом из Form2 вызываю Form3.ShowModal, затем мне требуется на закрывая Form3 сдлать модальной Form2

Что за бред?
Form2 и так модальная в чем проблема?


 
msguns ©   (2005-02-08 17:39) [5]

ИМХО, в данном случае надо либо обе формы вызывать немодально, либо вообще создавать их как MDIChild. Модальная форма она для того и модальная, чтобы не давала "проехать", как знак кирпича на дороге.


 
vvllaadd   (2005-02-08 18:01) [6]

используй одну модальную форму на ней две Panel:
1. Panel1.Visible:=True;
  Panel2.Visible:=False;

2. Panel1.Visible:=False;
  Panel2.Visible:=True;


 
Zloy ©   (2005-02-09 09:23) [7]

Ну все очень просто, мне нужно чтобы form3 потеряла свою модальность, а вторая ее снова приобрела


 
Anatoly Podgoretsky ©   (2005-02-09 09:28) [8]

Zloy ©   (09.02.05 09:23) [7]
Очень просто Form3.Close


 
Zloy ©   (2005-02-09 09:50) [9]

но мне надо чтобы она не закрылась а стала неактивной, соот-но чтобы ее было видно но за form2


 
КаПиБаРа ©   (2005-02-09 09:53) [10]

Zloy ©   (09.02.05 9:50) [9]
Ваша концепция приложения не привязана к платформе. Отсюда сложности с реализацией. Рекомендую пересмотреть коцепцию.


 
Anatoly Podgoretsky ©   (2005-02-09 10:08) [11]

Модальная форма это стек


 
Плохиш ©   (2005-02-09 10:12) [12]


>Anatoly Podgoretsky ©   (09.02.05 10:08) [11]

Не надо давать повод для новых вопросов :-)


 
Anatoly Podgoretsky ©   (2005-02-09 10:15) [13]

Почему бы и нет, вроде не пятница.


 
Zloy ©   (2005-02-09 11:13) [14]

Я к сожалению не знаю как это реализовать, но по сути что требуется. Расрушить модальную форму, затем сделать ее видимой, и вызвать другую форму и сделать ее модальной, разве это настолько нереализуемо


 
КаПиБаРа ©   (2005-02-09 11:33) [15]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

const
 WM_ShowModalForm = WM_User + 101;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   procedure ShowModalForm(var Msg: TMessage); message WM_ShowModalForm;
 end;

var
 Form1: TForm1;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.ShowModal;
end;

procedure TForm1.ShowModalForm(var Msg: TMessage);
begin
 case Msg.WParam of
 1: Form2.ShowModal;
 2: Form3.ShowModal;
 end;
end;

end.

----------------------------

unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm2 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

uses Unit3, Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
 Close;
 PostMessage(Form1.Handle, WM_ShowModalForm, 2, 0);
end;

end.

--------------------------

unit Unit3;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm3 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form3: TForm3;

implementation

uses Unit2, Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
 Close;
 PostMessage(Form1.Handle, WM_ShowModalForm, 1, 0);
end;

end.




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

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

Наверх




Память: 0.5 MB
Время: 0.045 c
1-1108003250
vidiv
2005-02-10 05:40
2005.02.27
Защита программы от копирования.


3-1106741308
AbramovVi
2005-01-26 15:08
2005.02.27
Где найти документацию по созданию процедур в Interbase


4-1105893442
Piter
2005-01-16 19:37
2005.02.27
Реализация функций обратного вызова


1-1108365633
leonidus
2005-02-14 10:20
2005.02.27
Рисование на канве без обновления


1-1108439249
dp200
2005-02-15 06:47
2005.02.27
Тип запуска службы