AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WM_SIZE löst nicht aus

Ein Thema von Carsten Hölscher · begonnen am 16. Sep 2021 · letzter Beitrag vom 16. Sep 2021
Antwort Antwort
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#1

WM_SIZE löst nicht aus

  Alt 16. Sep 2021, 10:11
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:
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.
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: WM_SIZE löst nicht aus

  Alt 16. Sep 2021, 10:17
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.585 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: WM_SIZE löst nicht aus

  Alt 16. Sep 2021, 10:30
Wenn ich in der Anwendung das OnResize-Event des Labels abfrage, dann wird das ausgeführt.
In solchen Fällen ist es am einfachsten dort dann einen Haltepunkt zu setzen und ganz einfach im Stacktrace zu schauen wo das Ereignis ausgelöst wird und wie man dort eingreifen kann.

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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: WM_SIZE löst nicht aus

  Alt 16. Sep 2021, 10:45
Ah
Danke, das kannte ich noch gar nicht.

Carsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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