cxGid HeaderHint

mvb
Дата: 22.11.2019 10:59:27
Всем привет!

То ли слепой, то ли одно из двух. Где для TcxGridDBColumn прописать хинт для заголовка? ExpressQuantumGrid 6.
mvb
Дата: 22.11.2019 12:31:18
переформулирую - как задать хинт для заголовков колонок дб-грида? Знаю способ через MouseMove, но уверен, что есть штатный.
Кроик Семён
Дата: 22.11.2019 12:32:24
Возможно и нет такого "из коробки". Придется велосипедить тогда, типа самому из обработчика OnMouseMove отображать
DimaBr
Дата: 22.11.2019 13:32:06
Картинка с другого сайта.
+
type
TMycxGridBandHeaderViewInfo = class(TcxGridBandHeaderViewInfo)
  procedure InitHint(const AMousePos: TPoint; out AHintText: TCaption; out AIsHintMultiLine: Boolean; out ATextRect: TRect); override;
end;

TMycxGridBandViewInfo = class(TcxGridBandViewInfo)
    class function GetHeaderViewInfoClass: TcxGridBandHeaderViewInfoClass; override;
end;

TMycxGridBandsViewInfo = class(TcxGridBandsViewInfo)
  function GetItemClass: TcxGridBandViewInfoClass;override;
end;

TMycxGridBandedHeaderViewInfo = class(TcxGridBandedHeaderViewInfo)
  function GetBandsViewInfoClass: TcxGridBandsViewInfoClass;override;
end;

TMycxGridBandedTableViewInfo = class(TcxGridBandedTableViewInfo)
  function GetHeaderViewInfoClass: TcxGridHeaderViewInfoClass;override;
end;

TcxGridBandedTableView = class(cxGridBandedTableView.TcxGridBandedTableView)
  function GetViewInfoClass: TcxCustomGridViewInfoClass;override;
end;

  TForm1 = class(TForm)
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGrid1BandedTableView1: TcxGridBandedTableView;
    cxGrid1BandedTableView1Column1: TcxGridBandedColumn;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



{ TMycxGridBandHeaderViewInfo }

procedure TMycxGridBandHeaderViewInfo.InitHint(const AMousePos: TPoint;
  out AHintText: TCaption; out AIsHintMultiLine: Boolean; out ATextRect: TRect);
begin
  inherited;
  AHintText := 'AAA';
end;

class function TMycxGridBandViewInfo.GetHeaderViewInfoClass: TcxGridBandHeaderViewInfoClass;
begin
  Result := TMycxGridBandHeaderViewInfo;
end;

function TMycxGridBandsViewInfo.GetItemClass: TcxGridBandViewInfoClass;
begin
  Result := TMycxGridBandViewInfo;
end;

function TMycxGridBandedHeaderViewInfo.GetBandsViewInfoClass: TcxGridBandsViewInfoClass;
begin
  Result := TMycxGridBandsViewInfo;
end;

function TMycxGridBandedTableViewInfo.GetHeaderViewInfoClass: TcxGridHeaderViewInfoClass;
begin
  Result := TMycxGridBandedHeaderViewInfo;
end;

function TcxGridBandedTableView.GetViewInfoClass: TcxCustomGridViewInfoClass;
begin
  Result := TMycxGridBandedTableViewInfo;
end;
mvb
Дата: 22.11.2019 15:37:17
+ сделал так

procedure TfmGSStudents.grtvDataMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var AHitTest: TcxGridColumnHeaderHitTest;
    f: TField;
    AHint: string;
    p: TPoint;
begin
     AHint := '';
     AHitTest := TcxGridColumnHeaderHitTest(TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y));

     if AHitTest.HitTestCode <> htColumnHeader then
     begin
       hscHeaderHints.HideHint;
       FHintField := nil;
       exit;
     end;

     if AHitTest.HitTestCode = htColumnHeader then
     begin
       f := TcxGridDBColumn(AHitTest.Column).DataBinding.Field;
       if f = FHintField then
        Exit;
       if FHintField <> nil then
        hscHeaderHints.HideHint;
       FHintField := f;

       if f = spDataIsRedDiplom then
        AHint := 'asd' else
       if f = spDataIsReview then
        AHint := 'zxczxc';

       if AHint <> '' then
       begin
         p := grtvData.Site.ClientToScreen(Point(X, Y));
         hscHeaderHints.ShowHint(p.X, p.Y, '', AHint);
       end else
        FHintField := nil;
     end;
end;


осталось p.X и p.Y подровнять, а так норм.

P.S. Но странно при всей навороченности девок не иметь такого очевидного функционала. Впрочем, может в новых версиях и есть, нам, крестьянам, недоступно ))
white_nigger
Дата: 22.11.2019 17:49:53
mvb
Но странно при всей навороченности девок не иметь такого очевидного функционала. Впрочем, может в новых версиях и есть, нам, крестьянам, недоступно ))
Неделю назад реализации этой фичи исполнилось 9 лет...