2011-11-19 18 views
7

मुझे मालिक के रूप में केंद्र में संवाद संवाद प्रदर्शित करने में समस्या है। मॉडल संवाद दिखाने के लिए मेरे कोड है:फ़ायरमॉन्की और मालिक के मॉडल का मॉडल संवाद केंद्र दिखा रहा है

procedure TfrmMain.btnOpenSettingsClick(Sender: TObject); 
var 
    sdSettingsDialog: TdlgSettings; 

begin 
    sdSettingsDialog := TdlgSettings.Create(Self); 
    sdSettingsDialog.Position := TFormPosition.poOwnerFormCenter; 

    try 
     sdSettingsDialog.ShowModal; 
    finally 
    sdSettingsDialog.Free; 
    end; 
end; 

भी डिजाइनर में स्थिति संपत्ति को बदलने के लिए कोशिश की, लेकिन यह संवाद केंद्र के लिए लगता है नहीं करता है।

क्या आप मुझे बता सकते हैं कि यहां क्या गलत है?

उत्तर

8

शोमोडल द्वारा फायरमॉन्की में स्थिति लागू नहीं की गई है। वर्ग सहायक नीचे आप का उपयोग कर सकते हैं: इससे पहले कि आप sdSettingsDialog.UpdateFormPosition फोन ShowModal:

type 
    TFormHelper = class helper for TForm 
    procedure UpdateFormPosition; 
    end; 

procedure TFormHelper.UpdateFormPosition; 
var 
    RefForm: TCommonCustomForm; 
begin 
    RefForm := nil; 

    case Position of 
    // TFormPosition.poScreenCenter: implemented in FMX.Forms (only one) 
    TFormPosition.poOwnerFormCenter: 
     if Assigned(Owner) and (Owner is TCommonCustomForm) then 
     RefForm := Owner as TCommonCustomForm; 
    TFormPosition.poMainFormCenter: 
     RefForm := Application.MainForm; 
    end; 

    if Assigned(RefForm) then 
    begin 
    SetBounds(
     System.Round((RefForm.Width - Width)/2) + RefForm.Left, 
     System.Round((RefForm.Height - Height)/2) + RefForm.Top, 
     Width, Height); 
    end; 
end; 
+0

एक वर्ग सहायक आवश्यक के उपयोग है? –

+0

कठोर सवाल डेविड, यदि आप चाहें तो क्लास हेल्पर आवश्यक नहीं है: प्रक्रिया अद्यतनफॉर्मपॉस (एफ़ॉर्म: टीएफओएम) मेरा अतिथि हो। –

+3

@ArjenvanderSpek धन्यवाद, यह बहुत अच्छा काम करता है! मुझे क्यों लगता है कि फायरमॉन्की अभी तक खत्म नहीं हुआ है और यह आधे बेक्ड मफिन की तरह है ... – evilone

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^