2014-05-16 125 views
0

我正在嘗試執行一個簡單的程序,該框架將在單擊其他框架/窗體上的按鈕時顯示框架。爲了更清楚我想要一個MessageDialogBox,而不是MessageDialogBox,我想顯示一個框架。單擊按鈕時顯示框架

我到目前爲止所嘗試的是OnClickEvent上的這段代碼。

procedure TFrame3.SpeedButton1Click(Sender: TObject); 
var 
    frm : TfrmVizorFunctii; // This is the frame I want to be appear; 
begin 
    frm := TfrmVizorFunctii.Create(nil); 
    frm.Parent := nil; 
    frm.ABDBGrid1.ActiveColumn:=2; 
    frm.Left:=(Screen.Width-Width) div 2; 
    frm.Top:=(Screen.Height-Height) div 2; 
    frm.Show; 


end; 

我在做什麼錯?

+4

由於該框架沒有父項,因此它將不可見。嘗試用'frm.Parent:= Self'代替。 –

+0

@AndreasRejbrand如果我這樣做,它會顯示我的框架,但框架顯示在我的父框架上,我不想要這個,我希望它是獨立的。 – CiucaS

+0

這是不可能的。 –

回答

7

您無法在沒有父級的情況下顯示框架。您必須設置一個現有的形式(或窗體上的任何TWinControl)作爲父母,或創建一個新的空形式,並設置爲母象這樣:

Form := TEmptyForm.Create (Application); 
Frame := TMyFrame.Create (Form); 
Frame.Parent := Form; 
Frame.Align := alClient; 
Form.Show; 

TEmptyForm可能有BorderStyle設置爲bsNone,如果你真的只想顯示框架。

+0

謝謝!它是這樣工作的。但是現在我想知道是否在使用Frame這樣的思考方面有優勢,或者只是使用Form。 – CiucaS

+0

如果你總是這樣使用它,我只會使用一個表單。如果您想在多個表單上重複使用相同的用戶界面,該框架只會帶來好處。 – jpfollenius

+0

我同意jpfollenius。例如,您可以使用主窗體和兩個框架:一個用於顯示一組記錄(一個DBGrid),另一個用於顯示所選記錄的詳細信息。 – Eros