![]() |
|
|
#1
|
|||
|
|||
|
Подскажите возможно ли сделать так чтоб при наведении на заголовок высвечивалась подсказка,содержание которой зависло бы от наведенного заголовка. Тесть например: Заголовок-"Создание нового соо..." а подсказка-"Создание нового сообщения"
|
|
#2
|
||||
|
||||
|
Цитата:
Используется DBGridEh или стандартный грид? |
|
#3
|
|||
|
|||
|
Можно попробовать что-то типа этого
Код:
//***** Всплывающая подсказка для столбца *****
procedure TfMain.grMainDBBandedTableView1Column6GetCellHint(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
ACellViewInfo: TcxGridTableDataCellViewInfo; const AMousePos: TPoint;
var AHintText: TCaption; var AIsHintMultiLine: Boolean;
var AHintTextRect: TRect);
begin
if (ACellViewInfo.Value <> Null) then
begin
AHintTextRect.Left := ACellViewInfo.Bounds.Left;
AHintTextRect.Right := ACellViewInfo.Bounds.Left + 500;
AHintTextRect.Top := ACellViewInfo.Bounds.Top;
AHintTextRect.Bottom := ACellViewInfo.Bounds.Top + 500;
AHintText := ACellViewInfo.Value;
end;
end;Но подсказка будет для каждой записи в столбце и для заголовка Ошибка вышла. Подсказка только для записей. ![]() Последний раз редактировалось _taddy, 08.11.2011 в 11:51. |
|
#4
|
|||
|
|||
|
Вот что работает
Код:
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. |