Тема: Подсказки
Показать сообщение отдельно
  #4  
Старый 08.11.2011, 13:53
_taddy _taddy вне форума
Прохожий
 
Регистрация: 27.10.2011
Адрес: Минск
Сообщения: 15
Версия Delphi: 2007
Репутация: 2767
По умолчанию

Вот что работает

Код:
procedure TfMain.cxGrid1DBTableView1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
  AHint: string;
  AColumn: TcxGridColumn;
  aPos: TPoint;
begin
  if not Assigned(Sender) then
  begin
    cxHintStyleController1.HideHint;
    exit;
  end;
  if not (Sender is TcxGridSite) then
  begin
    cxHintStyleController1.HideHint;
    exit;
  end;

  //determine the current mouse position
  AHitTest := TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y);

  //hide displayed hint if mouse is not over a grid header
  if AHitTest.HitTestCode <> htColumnHeader then
  begin
    cxHintStyleController1.HideHint;
    Exit;
  end;

  if AHitTest.HitTestCode = htColumnHeader then
    with TcxGridColumnHeaderHitTest(AHitTest) do
    begin
      {check the current column over which the mouse is placed}
      AColumn := Column;
      AHint := TcxGridDBColumn(AColumn).Caption;
      aPos := TcxGridSite(Sender).ClientToScreen(Point(X, Y + 20));
      if AHint <> '' then
        cxHintStyleController1.ShowHint(aPos.X, aPos.Y, AHint, '')
      else
        cxHintStyleController1.HideHint;
    end;
end;

Компоненты DevExpress: cxGrid и cxHintStyleController.
Ответить с цитированием