Stringdeki yazının genişliğinin pixel sayısı + scroll bar genişliği

Başlatan bunalmis, 05 Ekim 2010, 14:11:56

z

Diyelimki S='Deneme 123456' şeklinde S içine bir string attık.

S içeriğini font parametreleri tanımlı bir göstergede göstermek istediğimde gösterge genişliğini, stringden ne fazla ne de az olacak şekilde otomatik ayarlamak istiyorum.

Bunun için Stringin verilen font değerleri için kaç pixel genişlikte yer kaplayacağını nasıl bulurum?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

karakter genişlikleri sabitse karakter sayısı * genişlik, değilse "i,ı,İ,I,l(L),1" gibi karakterleri aratıp bulunan sayı ile bu karakterlerin genişliği ve diğer karakterlerin genişlik değerini toplamak çözüm olacaktır.

birumher

Canvas.TextWidth(Text)
i kullanabilirsin.

örneğin Listbox un üzerine yazılan text in uzunluğu.
var
  W: integer;
begin
  W := ListBox1.Canvas.TextWidth('Buraya uzunluğu ölçeceğimiz text i yazıyoruz');
  result := W;


Eğer üzerine yazı yazılacak component in canvas ı yoksa bitmap kullanarak da yapılabilir.
var 
  W: integer;
  BM: TBitmap; 
begin
  BM := TBitmap.Create;
  BM.Canvas.Font := Button1.Font;
  W := BM.Canvas.TextWidth('Buraya uzunluğu ölçeceğimiz text i yazıyoruz'); 
  BM.Free;
  result := W;
Birkan.Herguner

z

Evet tam aradığım buydu teşekkürler.

Peki bir gosterge scroll bara sahipse scroll bar kalınlığını nasıl öğrenebilirim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

birumher

YatayScrollGenislik := GetSystemMetrics(SM_CYHSCROLL);
DikeyScrollGenislik := GetSystemMetrics(SM_CYVSCROLL);

bunlar sistemde tanımlı olan scroll genişliklerini verir.

Bir başka yöntem de

Gosterge.Height - Gosterge.ClientHeight
Gosterge.Width - Gosterge.ClientWidth

olabilir...

Birkan.Herguner