Как показывать хинты для частично видимых элементов ListBox
Как показывать хинты для частично видимых элементов ListBox
Как показывать хинты для частично видимых элементов ListBox Написать для OnMouseMove: procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); const oldidx : Longint = -1; var idx : Longint; begin with Sender as TListBox do begin idx := ItemAtPos(Point(x,y),True); if (idx < 0) or (idx = oldidx) then Exit; Application.ProcessMessages; Application.CancelHint; oldidx := idx; Hint := ''; if Canvas.TextWidth(Items[idx]) > Width - 4 then Hint:=Items[idx]; end; end; Мой вариант: procedure Tfmain.LBFoundMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var idx : Longint; xsh,ysh: integer; rects: TRect; begin idx:=LBFound.ItemAtPos(Point(x,y),True); if (idx<0) or (idx=oldidx) then Exit; StaticHint.Visible:=False; Application.ProcessMessages; oldidx:=idx; StaticHint.Caption:=''; if Canvas.TextWidth(LBFound.Items.Strings[idx])>LBFound.Width-4 then begin rects:=LBFound.ItemRect(idx); xsh:=rects.Left; ysh:=rects.Top; StaticHint.Caption:=LBFound.Items.Strings[idx]+' '; StaticHint.Left:=GBFinder.Left+LBFound.Left+xsh+2; StaticHint.Top:=GBFinder.Top+LBFound.Top+ysh;//Y; StaticHint.Visible:=True; Application.ProcessMessages; end; end;