Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.49 MB
Время: 0.048 c
1-1108460010
Timofey
2005-02-15 12:33
2005.02.27
HTML


14-1107436677
Delta
2005-02-03 16:17
2005.02.27
Сим Сим откройся


3-1106688519
TheEd
2005-01-26 00:28
2005.02.27
Cannot transliterate character between character sets :(


9-1101142814
DeFenix
2004-11-22 20:00
2005.02.27
Кто нибудь! Как работать с DelphiX?!


14-1106517183
ArMellon
2005-01-24 00:53
2005.02.27
Кто из вас прошел "Соло на клавиатуре" ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский