2016-11-04 7 views
6

के शीर्ष पर रंगीन रेखा डालें मैं अपने आवेदन में किए गए अंतिम संचालन को दिखाने के लिए TRichEdit का उपयोग कर रहा हूं। मेरे TRichEdit की पहली पंक्ति अंतिम ऑपरेशन होनी चाहिए। अगर ऑपरेशन विफल हो गया, तो मैं इस पंक्ति को लाल रंग में रखना चाहता हूं।TRichEdit

मेरी समस्या यह है कि मैं अपने TRichEdit के शीर्ष पर एक रंगीन रेखा डालने में सक्षम नहीं हूं। यहाँ मैं क्या कोशिश की है है:

RichEditLog.SelAttributes.Color := clBlack; 
RichEditLog.Lines.Insert(0, 'Operation 1 OK'); 
// RichEditLog.Lines.Add('Operation 1 OK'); 

RichEditLog.SelAttributes.Color := clRed; 
RichEditLog.Lines.Insert(0, 'Operation 2 failed'); 
// RichEditLog.Lines.Add('Operation 2 failed'); 

RichEditLog.SelAttributes.Color := clRed; 
RichEditLog.Lines.Insert(0, 'Operation 3 failed'); 
// RichEditLog.Lines.Add('Operation 3 failed'); 

RichEditLog.SelAttributes.Color := clBlack; 
RichEditLog.Lines.Insert(0, 'Operation 4 OK'); 
// RichEditLog.Lines.Add('Operation 4 OK'); 

समस्या यह है कि मेरी TRichEdit केवल रंग के पहले परिवर्तन लागू करते हैं और यह सब लाइनों के लिए रहते हैं। यदि मैं Insert() के बजाय Add() का उपयोग करता हूं, तो रंग बदल रहे हैं लेकिन लाइन TRichEdit के अंत में डाली गई है।

मेरा प्रश्न है: क्या परिणाम देखने के लिए कोई आसान तरीका है?

+0

शून्य लंबाई चयन, चयन विशेषता निर्दिष्ट करें, SelText को असाइन करें। –

उत्तर

5

आप चयनित शुरुआत और 0 करने के लिए लंबाई सेट करने के लिए यदि आप शुरुआत में सम्मिलित करना चाहते हैं की जरूरत है:

RichEditLog.SelStart := 0; 
RichEditLog.SelLength := 0; 
RichEditLog.SelAttributes.Color := clBlack; 
RichEditLog.Lines.Insert(0, 'Operation 1 OK'); 

वैकल्पिक रूप से, RichEditLog.Lines.Insert() के बजाय आप RichEdit.SelText के लिए पाठ प्रदान कर सकते हैं, लेकिन फिर आप , नए लाइन वर्ण अपने आप को जोड़ने की जरूरत है f.ex .:

RichEditLog.SelText := 'Operation 1 OK'+sLineBreak; 

किसी भी तरह से, जब आपके परीक्षण कोड के लिए लागू परिणाम है:

enter image description here

+0

पूरी तरह से काम करता है, धन्यवाद! :) – Aleph0

1

आप SelAttributes और SelText, SelStart, SelLenght साथ चलाने का प्रयास किया?

Insert(0,'This is blue text.'); 
RichEdit1.SelStart := 0; 
RichEdit1.SelLenght := //end; 
RichEdit1.SelAttributes.Color := clBlue; 
+0

मैंने अपने प्रश्न में दिखाए गए अनुसार 'सेलेएट्रिब्यूट्स' का उपयोग करने की कोशिश की लेकिन यह केवल तभी काम करता है जब मैं 'लाइन्स का उपयोग करता हूं। जोड़ें' लेकिन अगर मैं 'Lines.Insert' का उपयोग करता हूं तो काम नहीं करता है। रंग एक बार बदलता है और इसके बाद कभी और नहीं बदलता है। – Aleph0

+0

मैं आपको सलाह देता हूं कि 'सम्मिलित करें' का उपयोग करके स्वरूपित लाइन डालने के लिए और फिर चयनित टेक्स्ट – cristallo

+0

पर शैली को लागू करने के लिए 'सेल्स्टार्ट',' सेलेथेंथ' का उपयोग करके धन्यवाद, मैंने टॉम का जवाब उपयोग किया लेकिन यह आपके उत्तर के समान दिखता है। ;) – Aleph0

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