سؤال

إليكم مشكلتي ، أريد أن أعرف الطول الفعلي للنص بالبكسل (لاحظ أن الحروف المختلفة لها طول مختلف في بعض الخطوط). سأستخدم هذا لتعديل عرض العمود الأفضل في DBGRID.

هل كانت مفيدة؟

المحلول

يمكنك استعمال ال Canvas.TextWidth و Canvas.TextHeight المهام.

الخيار 1 ، باستخدام قماش عنصر التحكم

WidthInPixels := Label1.Canvas.TextWidth('My Text');

الخيار 2 ، إنشاء قماش مؤقت (باستخدام tbitmap)

Function GetWidthText(const Text:String; Font:TFont) : Integer;
var 
  LBmp: TBitmap; 
begin
  LBmp := TBitmap.Create;
  try
   LBmp.Canvas.Font := Font;
   Result := LBmp.Canvas.TextWidth(Text); 
  finally
   LBmp.Free;
  end;
end;

نصائح أخرى

إذا كان لديك مكون Delphi يحتوي على خاصية "قماش" ، فيمكنك استخدام Component.Canvas.textWidth. على سبيل المثال: للحصول على عرض نص DBGrid الذي يمكنك استخدامه:

DBGrid1.Canvas.TextWidth('Stack'); 

هنا يمكنك العثور على إشارة كاملة حول هذه المشكلة:طول سلسلة دلفي بالبكسل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top