da beim Memo die Schrift ja vom Memo fesgelegt wird:
einfach die Schrift (Memo1.Font) an eine unserer Prozeduren übergeben und du bekommst die Höhe.
wenn in dem RitchEdit die Schrift nicht geändert wird, dann geht es dort genauso (RitchEdit1.Font übergeben), sonnst geht es z.B. so (andere wird es bestimmt auch mal interessieren)
Delphi-Quellcode:
Function FontHeightAtPos(Pos: Integer): Integer;
Var Font: TFont;
Begin
If Pos < Length(Form1.RichEdit1.Text) Then Begin
Form1.RichEdit1.SelStart := Pos;
Form1.RichEdit1.SelLength := 1;
Font := Form1.RichEdit1.Font;
Font.Charset := Form1.RichEdit1.SelAttributes.Charset;
Font.Name := Form1.RichEdit1.SelAttributes.Name;
Font.Pitch := Form1.RichEdit1.SelAttributes.Pitch;
Font.Size := Form1.RichEdit1.SelAttributes.Size;
Font.Style := Form1.RichEdit1.SelAttributes.Style;
// such dir eine der Prozeduren von Shmia, oder mir aus
Result := TrueFontHeight(Font);
// oder die
Result := TextHoehe(Font, 'Xg');
End Else
Result := -1;
End;
Delphi-Quellcode:
h := FontHeightAtPos(12);
// für 12 einfach die Position des Zeichens angeben, von welchem die Höhe benötigt wird
Und wenn die Komponente, von der man die Texthöhe haben möchte ein Canvas hat, dann ist es auch möglich Canvas.TextHeight dieser Komponente zu verwenden.