![]() |
WM_SIZE löst nicht aus
Ich wollte mir eine kleine Komponente schreiben, die einen Dateinamen ggf. verkürzt anzeigt, wenn der Label zu schmal ist.
Wenn das Formular vergrößert wird, soll der Name neu berechnet werden, um sich an die neue Breite des Labels anzupassen. Nach meinem Verständnis müßte das unten funktionieren, allerdings wird TLabelDateiname.WMSize(var Message: TWMSize); nicht aufgerufen, wenn ich das Fenster vergrößere (der Label ist recht sund links verankert), das beep ist zum Testen, wann die procedure ausgeführt wird. Wenn ich in der Anwendung das OnResize-Event des Labels abfrage, dann wird das ausgeführt. Hat jemand eine Idee (Delphi 10.4.2)?
Code:
Carsten
unit LabelDateiname;
interface uses System.SysUtils, System.Classes, Vcl.Controls, Vcl.StdCtrls, FileCtrl, Messages; type TLabelDateiname = class(TLabel) private { Private-Deklarationen } FDateiname:string; procedure SetzeDateiname(s:string); procedure WMSize(var Message: TWMSize); message WM_SIZE; protected { Protected-Deklarationen } public { Public-Deklarationen } published { Published-Deklarationen } property Dateiname:string read FDateiname write SetzeDateiname; property OnResize; end; procedure Register; implementation procedure TLabelDateiname.WMSize(var Message: TWMSize); begin inherited; beep; Caption:=MinimizeName(FDateiname, canvas, Width); end; procedure TLabelDateiname.SetzeDateiname(s:string); begin Caption:=MinimizeName(s, canvas, Width); FDateiname:=s; end; procedure Register; begin RegisterComponents('Eigenes', [TLabelDateiname]); end; end. |
AW: WM_SIZE löst nicht aus
AFAIK ist TLabel ein Control das nicht auf einem WinAPI-Control aufsetzt.
D.h. die normalen Windows-Events werden nicht funktionieren. Entweder auf TStaticLabel umbauen oder das OnResize nutzen. AFAIK nicht OnResize als Event nehmen, sondern es müsste ein DoResize als Methode zum überladen geben. |
AW: WM_SIZE löst nicht aus
Zitat:
Zum Thema: Mach es dir nicht so schwer. ;-) Du brauchst nur beim normalen TLabel EllipsisPosition auf epPathEllipsis zu setzen und schon hast du genau was du möchtest. |
AW: WM_SIZE löst nicht aus
Ah :-D
Danke, das kannte ich noch gar nicht. Carsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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