पर कॉल करते समय मेरा विवरण फ़ॉर्म मुख्य रूप के पीछे छिपा हुआ है मेरा आवेदन मेनफॉर्म, विवरणफॉर्म और डायलॉगफॉर्म पर आधारित है। टास्कबार पर मैं मेनफॉर्म बटन और विवरणफॉर्म भी देख सकता हूं। इसलिए मैं का उपयोग करें:TsaveDialog
procedure <DetailForm>.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent:= GetDesktopWindow;
end;
मैं डेल्फी 2010 का उपयोग और मैं Application.MainFormOnTaskbar निर्धारित किया है: = सच; जब मैं विवरणफॉर्म में PromptForFileName या TSaveDialog का उपयोग करता हूं तो DetailForm मेनफॉर्म के पीछे जाता है। डायलॉगफॉर्म संवाद बंद करने के बाद वापस आ गया।
जब मैं डायलॉगफॉर्म (संपत्ति पॉपअपमोड: पीएमएटो के साथ टीएफओएम का शोमोडल) का उपयोग करता हूं तो मेरा विवरणफॉर्म मुख्य और संवाद के बीच रहता है। मैं कैसे संपत्ति PopupMode के साथ एक showmodal तरह TSaveDialog मजबूर कर सकते हैं: pmAuto या मैं कैसे है कि मेरे detailform MainForm
डेमो पीछे चला जाता है रोका जा सकता है:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ImgList, ActnList;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
oForm: TForm;
begin
oForm:= Unit2.TForm2.Create(Self);
oForm.Show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
SaveDialog1: TSaveDialog;
procedure cxButton1Click(Sender: TObject);
private
protected
procedure CreateParams(var Params: TCreateParams); override;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent:= 0; // --> Testing
end;
procedure TForm2.cxButton1Click(Sender: TObject);
begin
self.SaveDialog1.execute();
end;
end.
नहीं, काम नहीं करता है। मैंने wndparent = 0 को बदल दिया है, WS_EX_APPWINDOW को भी छोड़ दिया है और विस्तार के मुख्य मालिक को बनाया है। विस्तृत – Ravaut123
के पीछे विस्तार करें यदि आप 'WNDParent' को' 0' पर सेट करते हैं तो आपके पास एक अनूठी विंडो है। 'WNDParent' सेट करना यह है कि आप विंडो स्वामित्व को कैसे नियंत्रित करते हैं। याद रखें कि विंडो स्वामित्व डेल्फी के घटक स्वामित्व से बिल्कुल अलग है। डेल्फी में विंडो स्वामित्व को 'पॉपअपपेरेंट' संपत्ति द्वारा नियंत्रित किया जाता है। मुझे संदेह है कि आपने ऐसा किया था। उत्तर से कोड का प्रयोग करें। आप एक खिड़की चाहते हैं जो मुख्य रूप से स्वामित्व में है। ऐसा करने के लिए 'पॉपअप पेरेंट' का उपयोग करें। और फिर टास्कबार पर अपनी विंडो प्राप्त करने के लिए, 'WS_EX_APPWINDOW' जोड़ें। –
मुझे मुख्य पर भी मुख्य और मुख्य रूप पर क्लिक करना होगा। जब मैं टास्कबार पर विस्तार से क्लिक करता हूं तो विवरण शीर्ष पर आता है। – Ravaut123