Тема: DBGrid и Hint
Показать сообщение отдельно
  #1  
Старый 07.09.2011, 15:06
Аватар для Shoni
Shoni Shoni вне форума
Прохожий
 
Регистрация: 02.09.2011
Адрес: Кострома
Сообщения: 45
Версия Delphi: 7
Репутация: 165
По умолчанию DBGrid и Hint

Доброго времени суток!

Помогите, пожалуйста, решить проблемку: нужно содержимое ячеек вывести в Hint... Реализовано, НО: экран постоянно мерцает + нельзя перейти к нижним записям, не убирающимся на экран, особенно при использовании колесика мыши (как бы выталкивает наверх, в область, ограниченную экраном)


Код:
  private
 procedure AppMess(var Msg: TMsg; var Handled: Boolean);

    { Private declarations }
  public
Код:
procedure TfmChild1.AppMess(var Msg: TMsg; var Handled: Boolean);
var
  X, Y: integer;
  gpt: TGridCoord;
  s: string;
  w, len: integer;
begin
  if Msg.message=WM_MOUSEMOVE then
  begin
    if Msg.hwnd=DBGrid1.Handle then
    begin
      x:=LoWord(Msg.lParam);
      y:=HiWord(Msg.lParam);
      gpt:=DBGrid1.MouseCoord(x,y);
      if (gpt.x>0) and (gpt.y>0) then
      begin
        DataSource2.DataSet.First;
        DataSource2.DataSet.MoveBy(gpt.y-1);
        s:=FmMain.ADOQuery1.Fields[gpt.x-1].asString;
        w:=DBGrid1.Columns[gpt.x-1].Width;
        len:=DBGrid1.Canvas.TextWidth(s);
        if len > w then
          DBGrid1.Hint:=s
        else
          DBGrid1.Hint:='';
      end;
    end;
  end;
end;

Код:
procedure TfmChild1.FormCreate(Sender: TObject);
begin
  DBGrid1.ShowHint := True;
  Application.OnMessage := AppMess;
end;
__________________
Memento Mori(арти)
Ответить с цитированием