Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Statusbar mit getrennten hints?

  Alt 12. Mär 2007, 17:38
Hallo Richi,

so oder ähnlich sollte es funktionieren:

Delphi-Quellcode:
function GetPanelAt(sb: TStatusBar; x, y: Integer; var index: Integer): Boolean;
var
  r: TRect;
  pt: TPoint;
begin
  Result := not sb.SimplePanel;
  if Result then
  begin
    pt := Point(x, y);
    index := sb.Panels.Count;
    Result := False;
    repeat
      Dec(index);
      if index < 0 then
        Exit;
      sb.Perform(SB_GETRECT, index, Integer(@r));
      Result := PtInRect(r, pt);
    until Result;
  end;
end;

procedure TDemoForm.AppShowHint(var HintStr: string; var CanShow: boolean;
  var HintInfo: THintInfo);
var
  index: integer;
  sb: TStatusBar;
  pt: TPoint;
begin
  if (HintInfo.HintControl is TStatusBar) then
  begin
    sb := TStatusBar(HintInfo.HintControl);
    pt := sb.ScreenToClient(Mouse.CursorPos);
    if GetPanelAt(sb, pt.X, pt.Y, index) then
    begin
      HintStr := IntToStr(index);
      HintInfo.ReshowTimeout := 50;
    end;
  end;
end;

procedure TDemoForm.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := AppShowHint;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat