संक्षेपण करता है बस के रूप में:उसके मालिक प्रपत्र के शीर्ष पर एक मॉडल फार्म दिखाने के लिए कैसे (उसके मालिक fsStayOnTop या नहीं करने के लिए सेट किया जाता है), TOpenDialog
कृपया क्रेग और Sertac से नीचे उपयोगी टिप्पणियों को देखने।
============================================== ========
जैसा कि निम्न न्यूनतम कोड में दिखाया गया है, TForm10
fsStayOnTop
होने के लिए सेट है। TForm10.btnTryDlgClick
कॉल dlgOpen1.Execute
, और दिखाया गया संवाद अपेक्षित है। हालांकि, जब मैं को TForm10.btnTryFormClick
के अंदर कॉल करता हूं, तो फॉर्म TForm10 के पीछे छिपा हुआ है। मैं सोच रहा हूं कि इस व्यवहार को कैसे समझें, और क्यों मानक TOpenDialog अपेक्षित के रूप में दिखाया जा सकता है? किसी भी टिप्पणी की सराहना की है!
पीएस: एक वर्कअराउंड TForm11 की CreateParams प्रक्रिया को ओवरराइड करना है, और Params.wndParent को 0 पर सेट करना है, लेकिन मुझे लगता है कि इस वर्कअराउंड का उपयोग करके विंडो पदानुक्रम तोड़ दिया जाएगा।
procedure TForm11.CreateParams(var Params: TCreateParams); // override;
begin
inherited;
params.wndParent := 0;
end;
पुनश्च: एक और वैकल्पिक हल पृष्ठों अतः नीचे प्रासंगिक में रेमी द्वारा उल्लेख किया गया है: setting the modal Form's PopupParent property to be the StayOnTop Form
। लेकिन बाद की टिप्पणियों में, सर्टैक ने उल्लेख किया कि इस कामकाज में खिड़की पदानुक्रम भी टूट जाएगा।
पुनश्च: संभवतः प्रासंगिक अतः पृष्ठों:
Modal forms hidden by fsStayOnTop forms
How Can I Keep the FindDialog from Staying on Top (Delphi)?
How to make sure a dialog is always front of the main window
Form is hidden behind other forms when ShowModal is called
Make 2 forms able to overlap each other?
Multiple form Delphi applications and dialogs
Newly created modal window loses focus and become inacessible in Windows Vista
Delphi - How to prevent Forms/MsgBoxes to move under prior form?
How to allow Delphi secondary forms behind the main form
Unit10 के लिएFake modal dialog using Show?
Delphi MainFormOnTaskBar Modal windows bug
स्रोत:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm10 = class(TForm)
btnTryDlg: TButton;
dlgOpen1: TOpenDialog;
btnTryForm: TButton;
procedure FormCreate(Sender: TObject);
procedure btnTryDlgClick(Sender: TObject);
procedure btnTryFormClick(Sender: TObject);
end;
var
Form10: TForm10;
implementation
{$R *.dfm}
uses
Unit11;
procedure TForm10.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
end;
procedure TForm10.btnTryDlgClick(Sender: TObject);
begin
dlgOpen1.Execute;
// dlgOpen1.Execute(Self.Handle);
end;
procedure TForm10.btnTryFormClick(Sender: TObject);
begin
TForm11.Create(Self).ShowModal;
end;
end.
Unit10 के लिए DFM: Unit11 के लिए
object Form10: TForm10
Left = 0
Top = 0
Caption = 'Form10'
ClientHeight = 255
ClientWidth = 414
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object btnTryDlg: TButton
Left = 32
Top = 24
Width = 153
Height = 201
Caption = 'Try dialog'
TabOrder = 0
OnClick = btnTryDlgClick
end
object btnTryForm: TButton
Left = 224
Top = 24
Width = 153
Height = 201
Caption = 'btnTryForm'
TabOrder = 1
OnClick = btnTryFormClick
end
object dlgOpen1: TOpenDialog
Left = 96
Top = 168
end
end
स्रोत:
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm11 = class(TForm)
end;
implementation
{$R *.dfm}
end.
Unit11 के लिए DFM:
0,123,object Form11: TForm11
Left = 0
Top = 0
Caption = 'Form11'
ClientHeight = 183
ClientWidth = 203
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end
Xichen - [प्रश्न जो आप देखें] (http://stackoverflow.com/questions/3408594/modal-forms-hidden-by-fsstayontop-forms) अलग है कि एक मॉडल प्रारूप 'fsNormal' से लॉन्च किया गया है फॉर्म में एक और 'fsStayOnTop' फॉर्म है जबकि फॉर्म।उस प्रश्न में यदि आप ऑन-टॉप फॉर्म के रूप में मोडल फॉर्म के पॉपअपपैंट को सेट करते हैं तो यह स्पष्ट रूप से ऑन-टॉप फॉर्म के स्वामित्व में होगा, लेकिन इसे उस फॉर्म के स्वामित्व में होना चाहिए जिसे इसे एप्लिकेशन डिज़ाइन के अनुसार लॉन्च किया गया था। पदानुक्रम तोड़कर मेरा यही मतलब था। –
बीटीडब्लू, मैंने प्रतिलिपि आपके कोड को चिपकाया है और समस्या को डुप्लिकेट नहीं कर सकता है, जब मैं btnTryForm पर क्लिक करता हूं तो मोडल फॉर्म फॉर्म 10 से ऊपर है। लिंक संग्रह (शोध) के लिए +1 हालांकि .. –
@Sertac: 'विंडो पदानुक्रम' के बारे में आपके समय और सहायक टिप्पणियों के लिए बहुत बहुत धन्यवाद! वर्तमान प्रश्न के बारे में, मुझे खेद है कि इसे पुन: उत्पन्न नहीं किया जा सकता है। "यह मेरी मशीन पर काम करता है ..." अनुसंधान प्रयास के लिए ओ_ओ – SOUser