Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > как сделать hint у контрола грида?


Автор: Cashey 18.5.2009, 10:53
ну собственно САБЖ.
свойства hint ни у TTable.Column ни у TGrid.Column я не нашел....

Автор: insoft 18.5.2009, 11:07
используй cxGrid (DevExpress) ну или хотя бы EhLib

Автор: Cashey 18.5.2009, 11:28
а еще лучше использовать другую среду разработки, но увы используется то что используется
нашел в DRKB статью (даже 2 одинаковых) про хинт в ячеке грида. но предложенный способ у меня не заработал....

Автор: MetalFan 18.5.2009, 12:43
может хинт активировать самому...
ссылки на статьи в дркб покажи, мож там какие ошибки

Автор: Cashey 18.5.2009, 13:27
MetalFan, статья называется "Как вывести Hint для ячейки DBGrid"

Автор: MetalFan 18.5.2009, 14:03
и как оно не работает?)

Автор: Cashey 18.5.2009, 14:18
просто, тихо и мирно. нет хинта и все

Автор: MetalFan 18.5.2009, 14:32
а выложи тестовый проект, некогда самому делать. если конечно помощь нужна

Добавлено через 16 секунд
з.ы. а ShowHint  у грида включено?

Автор: Cashey 18.5.2009, 15:07
кажется понял в чем трабл в примере из drkb. пример справедлив только тогда когда число столбцов в гриде и таблице совпадает.
в противном случае он получает данные из другого поля и не проходит проверку if len > w then

надо искать иной способ, который в drkb еще не описан

Автор: MetalFan 18.5.2009, 17:52
а, так тебе DBGrid нужен? не, тогда я не помощник

Автор: Cashey 25.5.2009, 12:01
up

Автор: Frees 25.5.2009, 12:42
Цитата(Cashey @  18.5.2009,  16:18 Найти цитируемый пост)
просто, тихо и мирно. нет хинта и все

ShowHint := true
hint := '  ';

Автор: insoft 25.5.2009, 16:37
Цитата(Frees @  25.5.2009,  12:42 Найти цитируемый пост)
ShowHint := true
hint := '  '; 

такая вещь покажет хинт именно на весь грид в любом месте, а это не то что надо автору поста...

Автор: Rrader 25.5.2009, 18:06
Как вариант:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure AppShowHint(var HintStr: String; var CanShow: Boolean;
      var HintInfo: Controls.THintInfo);
  public
    Cell: TGridCoord;
    { Public declarations }
  end;

  TDBGrid = class(DBGrids.TDBGrid)
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AppShowHint(var HintStr: String; var CanShow: Boolean;
  var HintInfo: Controls.THintInfo);
begin
  if HintInfo.HintControl = DBGrid1 then
    if DBGrid1.Hint <> '' then
    begin
      HintStr := DBGrid1.Hint;
     // HintInfo.HintPos := ...
      HintInfo.CursorRect := TDBGrid(DBGrid1).CellRect(Cell.X, Cell.Y);
    end;
end;

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Text: String;
  DLink: TDataLink;
  OldActiveRec: Integer;
begin
  DBGrid1.Hint := '';
  Cell := DBGrid1.MouseCoord(X, Y);
  with Cell do
    if (X > 0) and (Y > 0) then
    begin
      DLink := TDBGrid(DBGrid1).DataLink;
      if Assigned(DLink) then
      begin
        OldActiveRec := DLink.ActiveRecord;
        try
          DLink.ActiveRecord := Y - 1;
          Text := DBGrid1.Columns[X - 1].Field.Text;
        finally
          DLink.ActiveRecord := OldActiveRec;
        end;
        DBGrid1.Hint := Text;
      end;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := AppShowHint;
  Application.HintPause := 500;
  DBGrid1.ShowHint := True;
end;

end.

Автор: Frees 26.5.2009, 07:45
Цитата(insoft @  25.5.2009,  18:37 Найти цитируемый пост)
такая вещь покажет хинт именно на весь грид в любом месте, а это не то что надо автору поста...

это кусок кода который надо дописать в дркб примере

если Hint пустой то событие application.OnHint не приходит...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)