Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedit oder memo Höhe in Pixel ermitteln? (https://www.delphipraxis.net/118058-richedit-oder-memo-hoehe-pixel-ermitteln.html)

thomas2009 30. Jul 2008 19:51


Richedit oder memo Höhe in Pixel ermitteln?
 
Hallo

über den RichEdit.Font konnte man seine Breite in Pixel ermitteln
Ich versuche auch die höhe genauso zu berechnen !
Die höhe können wir über Font und Zeilen zahl Ermitteln oder ?
Delphi-Quellcode:
function GetLongestTextInPixcelInRichEdit(oRichedit : TRichEdit): Integer;
var
         i      : Integer;

         oCanvas : TCanvas;
begin
         result := 0;

         oCanvas := TCanvas.Create;
         oCanvas.Font.Assign(oRichedit.Font);
         oCanvas.Handle := GetDC(oRichedit.Handle);

         for i:=0 to oRichedit.Lines.Count-1 do begin
             if oCanvas.TextWidth(oRichedit.Lines[i]) > result then
                result := oCanvas.TextWidth(oRichedit.Lines[i]);
         end;

         oCanvas.Free;
end;

Lannes 30. Jul 2008 21:05

Re: Richedit oder memo Höhe in Pixel ermitteln?
 
Hallo,

Flocke hat in der Code-Library etwas hinterlegt das Dir helfen wird/kann:
RichEdit: Breite und Höhe des Inhalts bestimmen

thomas2009 30. Jul 2008 23:10

Re: Richedit oder memo Höhe in Pixel ermitteln?
 
wie wird die Funktion aufgerufen um die Breite und Höhe zu bekommen

marabu 31. Jul 2008 06:56

Re: Richedit oder memo Höhe in Pixel ermitteln?
 
Moin,

die TRichEdit-Komponente benachrichtigt dich auf Wunsch, wenn du deren Abmessungen an den Inhalt anpassen möchtest:

Delphi-Quellcode:
procedure TDemoForm.RichEditResizeRequest(Sender: TObject; Rect: TRect);
begin
  with Sender as TRichEdit do
    BoundsRect := Rect;
end;
Grüße vom marabu

Lannes 31. Jul 2008 11:18

Re: Richedit oder memo Höhe in Pixel ermitteln?
 
Hallo,

@marabu: auch eine Möglichkeit, je nachdem was man mit der Berechnung bezweckt.


@Achim: Aufrufen kann man die Funkion von Flocke z.B. so:
Delphi-Quellcode:
var aPoint : TPoint;
begin
  aPoint := GetRichEditTextExtent(RichEdit.Handle,0,True,False);
  showmessage(IntToStr(aPoint.x)+' x '+IntToStr(aPoint.y));

thomas2009 1. Aug 2008 00:45

Re: Richedit oder memo Höhe in Pixel ermitteln?
 
Es funktioniert, Danke sehr


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz