TLabel 자손을 만들려고합니다. 텍스트 너비가 레이블 폭을 초과하면 전체 캡트와 함께 힌트가 표시됩니다. EllipsisPosition 속성을 epEndEllipsis로 설정 했으므로 캡션이 끝에있는 줄임표로 자동으로 단락됩니다. 괜찮아.TLabel (TGraphicControl)에 대한 크기 조정 이벤트를 만드는 방법
그러나 힌트를 설정하기 위해 텍스트가 짧게 설정되었음을 알리는 메시지가 필요합니다.. 텍스트가 변경되고 (메시지 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;
고마워 :) 내가 WM_WINDOWPOSCHANGED
보다 더 나은 아무것도 생각할 수 없다
'Set_bounds'를 오버라이드 할 수 있는데, 여기서'WM_WINDOWPOSCHANGED'가 수행된다. 또는 코드를 이벤트 핸들러에 넣으려면 자손의 OnResize 속성을 게시하면됩니다. 어느 쪽이 메시지 처리기보다 좋을지 아무 이유도 보지 마라. –