के साथ एक फॉर्म पर टीएममो में लाइन ब्रेक मेरे पास फ़ायरमॉन्की का उपयोग करके लिखे गए एप्लिकेशन में एक फॉर्म है। उस (मोडल) फॉर्म पर एक ठीक बटन है जिसके लिए मैंने डिफ़ॉल्ट संपत्ति को सही पर सेट किया है। एक ज्ञापन घटक भी है। अब यदि ज्ञापन में टाइप करते समय टाइप दबाएं, तो मेमो में लाइन ब्रेक डालने के बजाय फ़ॉर्म बंद हो जाता है।डिफॉल्ट बटन
मैं क्या हासिल करना चाहता हूं, यह है कि जब दर्ज करें (या शिफ्ट + दर्ज करें या उस तरह की smth) ज्ञापन घटक में दबाया जाता है, तो लाइन ब्रेक दर्ज होता है। अन्य घटकों में, जहां आप लाइन ब्रेक टाइप नहीं कर सकते हैं, मैं अभी भी फॉर्म को बंद करने के लिए एंटर मारना पसंद करूंगा। सबसे अच्छा मैं पाया है अब तक रूपों OnCloseQuery कार्रवाई में निम्न कोड जोड़ रहा है:
if (Focused.GetObject.ClassName = 'TMemo') and (ModalResult = mrOk) then
begin
CanClose := False;
Memo := TMemo(Focused.GetObject);
Memo.InsertAfter(Memo.CaretPosition, sLineBreak, [TInsertOption.ioMoveCaret,
TInsertOption.ioCanUndo]);
end
else
CanClose := True;
यह काम करता है, लेकिन अब वहाँ दर्ज करें और लाइन ब्रेक के पहले दिखाई देता से टकराने के बाद एक छोटे से परेशान भी देर है। इसके अलावा मैं समाधान चाहूंगा, जो कम हैकी होगी।
मुझे यह भी इंगित करना चाहिए कि मेरे पास ऐसे फॉर्म भी हैं जिनमें ओके बटन है, लेकिन ज्ञापन घटक नहीं है, हालांकि एक ज्ञापन को अपनी मूल संपत्ति को बदलकर रनटाइम पर उस रूप में स्थानांतरित किया जाएगा।
कोशिश
True
को 'Memo.Lines.BeginUpdate मेंFalse
कोbtnOk.Default
सेट;' मेमो सामग्री और 'Memo.Lines.EndUpdate बदलने से पहले, उसके बाद'। – Abelistoएम्बा ने टीएममो वांटरेटर्न, वांटटाब्स गुणों को लागू करने के लिए चूक गए: ओ (मैं फॉर्म पर एक ऑनडिल्ड इवेंट का उपयोग यह जांचने के लिए करता हूं कि डिफ़ॉल्ट संपत्ति सेट करने के लिए कोई केंद्रित टीएमईओ है या नहीं। लेकिन एम्बा के पास एफएमएक्स के लिए कोई टीएप्लिकेशंस नहीं है: o (केवल TActionList है ऑन अपडेट इवेंट जो निष्क्रिय होने पर निकाल दिया गया है यदि कम से कम एक क्रिया को परिभाषित किया गया है और –
पर नियंत्रण के लिए असाइन किया गया है, तो अपने डिफ़ॉल्ट बटन 'ऑनक्लिक' ईवेंट में, परीक्षण करें कि ज्ञापन केंद्रित है और यदि मामला है तो 'ModalResult' को mrNone पर सेट करें। –