एप्लिकेशन शुरू होने से पहले मैं स्ट्रिंग की टेक्स्ट चौड़ाई प्राप्त करना चाहता हूं। सब कुछ एप्लिकेशन तक ठीक काम करता है। मेनफॉर्म कैनवास मौजूद है। समस्या यह है कि, जब मैं ऐप के ऑनक्रेट ईवेंट में गतिशील रूप से टोडिनिनियम बनाने का प्रयास करता हूं। मुख्य रूप, "कैनवास ड्राइंग की अनुमति नहीं देता है" त्रुटि होती है। (आवेदन। मेनफॉर्म शून्य है ....)। मैंने गतिशील रूप से कैनवास बनाने के कई तरीकों की कोशिश की (उनमें से एक नीचे लिखा गया है), लेकिन यह अभिभावकीय नियंत्रण से जुड़े बिना आकार के आकार को माप नहीं सकता है।स्ट्रिंग के टेक्स्टविड्थ (कैनवास के बिना) कैसे प्राप्त करें?
क्या कोई तरीका है कि इसे किसी भी तरह से कैसे काम करना है?
Thanx
मैंने कोशिश की यह:
TOrdinarium = class (TCustomControl)
private
function GetVirtualWidth:integer;
end;
constructor TOrdinarium.Create(AOwner:TComponent);
begin
inherited;
Width:=GetVirtualWidth;
end;
function TOrdinarium.GetVirtualWidth:integer;
var ACanvas : TControlCanvas;
begin
ACanvas := TControlCanvas.Create;
TControlCanvas(ACanvas).Control := Application.MainForm;
ACanvas.Font.Assign(Font);
result:=ACanvas.TextWidth('0');
ACanvas.Free;
end;
हालांकि मुझे यकीन नहीं है कि यह आपकी समस्या को जोड़ता है, मुझे स्वीकार करना होगा। आम तौर पर, हालांकि, ऑफ-स्क्रीन बिटमैप्स बनाने से आपकी मदद मिल सकती है। –
बिटमैप ... क्या आसान समाधान है ... मुझ पर शर्म की बात है ... धन्यवाद – lyborko
इसके साथ याद रखने की एकमात्र चीज बिटमैप कैनवास की फ़ॉन्ट प्रॉपर्टी को सही ढंग से शुरू करना है (कुछ दृश्यों पर प्रारंभिक फ़ॉन्ट की अनुपस्थिति में से "उधार" करने के लिए घटक), अन्यथा रिपोर्ट की गई पाठ सीमा काफी अर्थहीन होगी। – Deltics