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