Szerokość tekstu - uwzględnienie wielkości czcionki

0

Witam.

W jaki sposób pobrać szerokość tekstu w komórce StringGrida ale z uwzględnieniem wielkości czcionki ?

Mając w komórce [1,1] test 123123 oraz czcionkę ustawioną na wielkość 10

Canvas.TextWidth(StringGrid1.Cells[1,1])=36

zmieniając czcionkę na 30 nadal

Canvas.TextWidth(StringGrid1.Cells[1,1])=36

Z góry dziękuję za pomoc.

dodanie znaczników <code class="delphi"> i `` - fp

0
procedure TForm1.Button1Click(Sender: TObject);
begin
  spinedit2.Value:=stringgrid1.Canvas.TextWidth(stringgrid1.Cells[1,1]);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  stringgrid1.Font.Size:=spinedit1.Value;
end; 
0

To czy komponentem jest StringGrid, ListBox czy ComboBox nie ma znaczenia - ważne jakie są ustawienia fontu jego kanwy; Metoda zwracająca szerokość podanego w argumencie tekstu wykorzystyje ustawienia właściwości Canvas.Font, na podstawie których dokonuje obliczeń; Graficzna zawartość obszaru komórki nie jest brana pod uwagę, więc jeśli poprawnie jest ustawiona na właściwość to nie ma prawa działać inaczej;

Więc albo sprawdź sam jak i kiedy ustawiasz wartości tej właściwości (głównie Canvas.Font.Size i Canvas.Font.Name), albo pokaż kod jaki działa wadliwie, a podpowie się co zmienić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1