Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

Модальные формы в MDI   Найти похожие ветки 

 
Дырчик ©   (2006-04-12 07:51) [0]

Из MDI формы пытаюсь открыть форму модально - вылетает ошибка "Cannot make a visible window modal". Кто-нибудь знает в чем проблема?


 
Сергей М. ©   (2006-04-12 08:11) [1]

MDI-child-форму нельзя показать модально.


 
Дырчик ©   (2006-04-12 08:14) [2]

А если рна не MDIchild a Normal, но вызывается из MDIForm?


 
Сергей М. ©   (2006-04-12 09:03) [3]

Тогда можно.
Но на момент вызова метода ShowModal() показываемая модально форма должна иметь св-во Visible = False.


 
Плохиш ©   (2006-04-12 11:03) [4]


> Кто-нибудь знает в чем проблема?

В 17й строке.


 
Мессер   (2006-04-13 10:51) [5]

Обычная форма имеет два конструктора один для MDI режима другой для обычного поведения формы
Разберись сам:

unit uCF;

interface

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

type
 TfCF = class(TForm)
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
 protected
   procedure CreateParams(var Params : TCreateParams); override;
   procedure Loaded; override;
 public
   { Public declarations }
   isChild : boolean;
   constructor Create (AOwner: TComponent); override;
   constructor CreateChild(AOwner: TComponent); virtual;
 end;

 TChildFormClass = class of TfCF;

var
 fCF: TfCF;

implementation

{$R *.DFM}

constructor TfCF.Create(AOwner: TComponent);
begin
 isChild:=False;
 inherited;
end;

constructor TfCF.CreateChild(AOwner: TComponent);
begin
 isChild:=True;
 Inherited Create(AOwner);
 FormStyle:=fsMDIChild;
end;

procedure TfCF.CreateParams(var Params: TCreateParams);
begin
 inherited;
end;

procedure TfCF.Loaded;
begin
 inherited;
 if isChild then
 begin
   BorderStyle:=bsSizeable;
   BorderIcons:=[biSystemMenu,biMinimize,biMaximize];
   Position:=poDesigned; // poDefault;
 end else
     begin
       BorderStyle:=bsSizeToolWin;
//        BorderStyle:=bsSizeable;
       BorderIcons:=[biSystemMenu];
       Position:=poDesigned; // poDefault;
//        Position:=poScreenCenter;
     end;
end;

procedure TfCF.FormClose(Sender: TObject;
 var Action: TCloseAction);
begin
 if isChild then Action:=caFree;
end;

end.


 
Мессер   (2006-04-13 11:02) [6]

Второй способ более простой но обладает побочным действиемprocedure TMainForm.CreateMDIModal;
var
 Child: TMDIChild;
begin
 { create a new MDI child window }
 Child := TMDIChild.Create(Application);
 Child.FormStyle := fsNormal;
 Child.Visible:=False;
 Child.Position:=poScreenCenter;
 Child.ShowModal;
end;

форма перед тем как появится модально появляется в другом месте,  и только потом становиться допустим в центре экрана - это связано с тем, что MDI в момент создания сразу появляется и чтоб показать модально ее надо сначала скрыть. Получается некоторый эффект мерцания.
см ниже



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

Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.018 c
2-1145011481
diwww
2006-04-14 14:44
2006.04.30
Как оперировать строками DBGrid-а?


2-1144773545
vasya2006
2006-04-11 20:39
2006.04.30
пароли и Excel


3-1141391413
ANB
2006-03-03 16:10
2006.04.30
Как настроить ядро BTrieve ?


6-1137093319
Volf_555
2006-01-12 22:15
2006.04.30
Как сохранить интернет-страницу из TWebBrowser с рисунками?


2-1144931377
Кир
2006-04-13 16:29
2006.04.30
Классическая такая задачка...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский