Показываем всплывающие подсказки в различных панелях StatusBar
Показываем всплывающие подсказки в различных панелях StatusBar
Данный пример демонстрирует показ всплывающих подсказок для любой панели статусбара. Этот метод отличается от того, который использует событие MouseMove, и запускается только тогда, когда приложению необходимо показать всплывающие подсказки. В то время как при использовании MouseMove метод будет вызываться при каждом попадании курсора мышки на statusbar.
{ Добавьте CommCtrl в uses. }
{ в интерфейсе формы для статусбара }
private
procedure AppShowHint(var HintStr: string; var CanShow: boolean;
var HintInfo: THintInfo);
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnShowHint := AppShowHint;
end;
procedure TForm1.AppShowHint(var HintStr: string; var CanShow: boolean;
var HintInfo: THintInfo);
const
PanelHints: array [0..6] of string =
('Cursor position', 'Ascii char', 'Bookmarks', 'Caps lock',
'Insert/Overwrite', 'File size', 'File name');
var
x: integer;
R: TRect;
begin
if HintInfo.HintControl = StatusBar1 then
begin
for x := 0 to StatusBar1.Panels.Count-1 do
begin
SendMessage(StatusBar1.Handle, SB_GETRECT, x, Longint(@R));
if PtInRect(R, HintInfo.CursorPos) then
begin
HintStr := PanelHints[x];
InflateRect(R, 3, 3);
{ Устанавливаем CursorRect говоря системе проверить новые
строки с подсказками, когда курсор покинет этот прямоугольник. }
HintInfo.CursorRect := R;
break;
end;
end;
end;
end;
Взято с Исходников.ru