![]() |
Memo, je nach Bedarf 1-3 Zeilen groß. Wie? [VCL]
Total dumme Frage, aber ich stehe auf dem Schlauch.
Ich habe etwas Text. Vielleicht sind es zwei Zeilen, vielleicht eine, vielleicht zehn. Ich möchte den Text anzeigen, z.B. mit einem TLabel oder TMemo. Die Komponente soll
Ich habe keinen Ansatz wie man das umsetzen könnte. :oops: Wer kann helfen? |
AW: Memo, je nach Bedarf 1-3 Zeilen groß. Wie? [VCL]
Vielleicht so (sicher noch optimierbar):
Delphi-Quellcode:
type
TMemoHelper = class helper for TMemo public procedure AdjustHeight(MaxLines: Integer); end; procedure TMemoHelper.AdjustHeight(MaxLines: Integer); var border: Integer; DC: HDC; metrics: TTextMetric; S: string; saveFont: HFont; size: TSize; sysMetrics: TTextMetric; W: Integer; begin WordWrap := false; DC := GetDC(0); try GetTextMetrics(DC, sysMetrics); saveFont := SelectObject(DC, Font.Handle); GetTextMetrics(DC, metrics); W := 0; for S in Lines do begin GetTextExtentPoint32(DC, S, Length(S), size); W := Max(W, size.cx); end; SelectObject(DC, saveFont); finally ReleaseDC(0, DC); end; if NewStyleControls then begin border := GetSystemMetrics(SM_CYBORDER) * IfThen(Ctl3D, 8, 6); end else begin border := Min(sysMetrics.tmHeight, metrics.tmHeight) div 4 + GetSystemMetrics(SM_CYBORDER) * 4; end; if Lines.Count > MaxLines then begin ScrollBars := ssVertical; W := W + GetSystemMetrics(SM_CXVSCROLL); end else begin ScrollBars := ssNone; end; Height := MaxLines * metrics.tmHeight + border; Width := W + border; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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