Главная страница
    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.01 c
6-1137064976
Dark Lord
2006-01-12 14:22
2006.04.30
Проблема с динамическим WebBrowser


15-1144309289
Семен Сорокин
2006-04-06 11:41
2006.04.30
Телефонное мошенничество


15-1144170845
Andy BitOff
2006-04-04 21:14
2006.04.30
Стоит ли продолжать развитие проекта?


1-1143211551
Германн
2006-03-24 17:45
2006.04.30
Координаты SubItem в TListView


2-1144814057
Novi4ek
2006-04-12 07:54
2006.04.30
Доброго времени суток, Уважаемые! Передача файла TCP





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