TLabelの子孫を作成しようとしています。これは、テキストの幅がラベルの幅を超えると、キャプション全体のヒントを表示します。EllipsisPositionプロパティをepEndEllipsisに設定しましたが、キャプションは最後に省略記号で自動的に短縮されます。それはいいです。
ただし、ヒントを設定するためにテキストが短縮されていることを通知する必要があります。私の場合、これはテキストが変更されたとき(メッセージCM_TEXTCHANGED)とコンポーネントのサイズが変更されたときにのみ発生する可能性があります。
それが私の質問です。TLabelのサイズが変更されたことをどのように通知できますか?そこにアンカーがあるので、フォームに合わせてサイズが変更されますが、別のTLabelの子孫でラップしたいと思います。
このコードは機能しますが、もっと良い方法はありませんか?WM_EXITSIZEMOVEのようなものですが、TGraphicControlで機能しますか?
procedure TEllipsisLabel.WMWindowPosChanged(var Message: TWMWindowPosChanged);
begin
inherited;
if Assigned(Parent) then
if Canvas.TextWidth(Caption) > Width then
begin
ShowHint := True;
Hint := Caption;
end
else
begin
ShowHint := False;
Hint := '';
end;
end;
どうもありがとう :)