![]() |
wie vom Caret die Höhe erhalten oder Zeilen...
Hi,
wie kann ich die Höhe des Cares oder die Zeilenhöhe ( im RitchEdit ) erhalten ? es geht mir nicht um die schriftgrösse ! Die Zeilenhöhe ändert sich Abhängig der Schrift -Art und -Grösse unterschiedlich. Danke !!!! |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Antwort : canvas.TextHeigth('A')
danke :D ;) edit : meine komponente hat ein canvas objekt, deswegen geht's |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Wie geht das aber bei dem standard TMemo, bei dem die Canvas Property nicht freigegeben ist. :gruebel:
Über
Code:
bekommt man ja nur die Höhe der schrift und nicht den Abstand der Zeilen.
Memo.Font.Height
|
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Delphi-Quellcode:
function TrueFontHeight(fnt: TFont): integer;
// written by Udo Nesshoever, Jan 2001 var dc: hdc; tm: TTextMetric; begin DC := GetDC(0); SelectObject(DC, fnt.Handle); GetTextMetrics(DC, tm); ReleaseDC(0, DC); Result:= tm.tmHeight; end; function TrueFontWidth(fnt: TFont; const text:string): Integer; var dc: hdc; tsize : Windows.TSize; begin dc := GetDC(0); SelectObject(DC, fnt.Handle); GetTextExtentPoint32(dc, PChar(text), Length(text), tsize); ReleaseDC(0, DC); Result := tsize.cx; end; |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
@shmia
wenn du deinen Code auch noch dort ![]() @Snoop007 die DP-Suchfuntion bringt dazu auch schon vieles ans Tageslicht und in der Cod-Lib ist auch massig zu finden |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Wow, die Antwort kam ja schnell. Danke :thuimb:
|
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Zitat:
Also wo sind die Administrator-Helden, die dies übernehmen ? :dance: |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
@ himitsu
Snoppy hat den Thead bestimmt schon vergessen. Siehe Datum. Ich wollte nur keinen neuen Thread aufmachen. :zwinker: |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
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. |
Re: wie vom Caret die Höhe erhalten oder Zeilen...
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz