2011-01-31 9 views
5

डिफ़ॉल्ट रूप से, BorderStyle = bsSizeable वाले एक फॉर्म में एक सिस्टम मेनू (बाईं ओर) और एक करीबी बटन (दाईं ओर 'एक्स') है। मैं सिस्टम मेनू से छुटकारा पाने और बंद बटन रखना चाहता हूं।सिस्टम मेनू के बिना डेल्फी फॉर्म लेकिन बंद बटन

सीमावर्ती संपत्ति मुझे सिस्टम मेनू (biSystemmenu के माध्यम से) को हटाने देता है, लेकिन अब बंद बटन भी चला गया है।

क्या ऐसा करने का कोई तरीका है?

का उपयोग डेल्फी XE

पुनश्च: यह जहाँ तक विंडोज का सवाल है संभव हो जाना चाहिए: IE8 के "InPrivate छनन सेटिंग्स" खिड़की बड़ा है, एक करीबी बटन है और कोई व्यवस्था मेनू है।

+6

अजीब, डिफ़ॉल्ट मेरे लिए 'बॉर्डर आइकन' में निर्दिष्ट है। रेड एक्स दिखाने के लिए 'द्विसिस्टममेनू' की आवश्यकता है। –

+0

आप सही हैं, bsDialog जिस तरह से मैं चाहता हूं काम करता है। ब्लश ;-) मैंने सवाल अपडेट किया है: मैं चाहता हूं कि यह bsSizeable के लिए भी काम करे। – Giel

+0

विंडोज मीडिया सेंटर –

उत्तर

0

मुझे नहीं लगता कि आपके गैर-क्लाइंट क्षेत्र को कस्टम बनाने के बिना ऐसा करने का कोई तरीका है जो ग्लास शामिल होने पर बहुत मुश्किल है।

इस विधि पर विचार करें।

procedure TMyForm.DeleteSystemMenu; 
var 
    SystemMenu: HMenu; 
begin 
    SystemMenu := GetSystemMenu(Handle, False); 
    DeleteMenu(SystemMenu, SC_CLOSE, MF_BYCOMMAND); 
end; 

हाँ, यह प्रणाली मेनू से करीब आइटम से छुटकारा पाने में सफल होता है, लेकिन यह भी बंद करें बटन अक्षम किया जा रहा में परिणाम है। तो ऐसा लगता है कि आप एक के बिना एक नहीं हो सकता है।

+2

ऐसा लगता है कि अनुरोध के * विपरीत * क्या लगता है। यह स्पष्ट रूप से सिस्टम मेनू रखता है (क्योंकि आप इसे संशोधित कर रहे हैं), लेकिन यह बटन को अक्षम करता है। –

+0

'DeleteMenu (SystemMenu, SC_SIZE, MF_BYCOMMAND) के लिए वही बात;' यह आकार मेनू आइटम को हटा देता है और परिणामस्वरूप आप फ़ॉर्म का आकार बदल नहीं सकते हैं। –

+0

@Rob मेरा जवाब फिर से पढ़ें। जिस बिंदु को मैं बना रहा हूं वह यह है कि यदि आप सिस्टम मेनू के हिस्सों से छुटकारा पा लेते हैं, तो कैप्शन बार पर मिलान करने की कार्यक्षमता भी अक्षम है। वास्तव में, आप क्यू पर टिप्पणी करते हैं कि एक समान बिंदु बना रहा है। –

0

BorderStyle := bsSizeToolWin एक्स बटन की थोड़ी अलग उपस्थिति के साथ आप जो चाहते हैं वह करता है।

+0

-1। यह बहुत अलग है, और यह अवांछित अंतर आवश्यक नहीं है। –

0

"सिस्टम मेनू" से आपका शीर्षक शीर्षक बार के बाईं ओर आइकन है? या पॉपअप मेनू दायाँ क्लिक के माध्यम से बुलाया?

यदि यह आइकन है कि आप निकालना चाहते हैं - इस कोड का उपयोग करें: के लिए `BorderStyle = bsDialog` करता ** नहीं ** एक प्रणाली मेनू है क्या की परवाह किए बिना है

const 
    WM_ResetIcon = WM_APP - 1; 

type 
    TForm1 = class(TForm) 
    procedure FormShow(Sender: TObject); 
    protected 
    procedure WMResetIcon(var Message: TMessage); message WM_ResetIcon; 
    end; 

implementation 

procedure TForm1.FormShow(Sender: TObject); 
begin 
    PostMessage(Handle, WM_ResetIcon, 0, 0); 
end; 

procedure TForm1.WMResetIcon(var Message: TMessage); 
const 
    ICON_SMALL = 0; 
    ICON_BIG = 1; 
begin 
    DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_BIG, 0)); 
    DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_SMALL, 0)); 
end; 
संबंधित मुद्दे