Вниз
Скачать: CL | DM;

CM_Hint Show обязателен?   Найти похожие ветки 

 
Sandman29 ©   (2005-11-22 17:20) [0]

Как в стандартный DBGrid добавить настраиваемый хинт, зависящий от различных полей строки?
Заключается ли горькая правда в том, что без наследования и добавления собственного события решить задачу невозможно?


 
Leonid Troyanovsky ©   (2005-11-22 17:27) [1]


> Sandman29 ©   (22.11.05 17:20)  
> Как в стандартный DBGrid добавить настраиваемый хинт, зависящий
> от различных полей строки?
> Заключается ли горькая правда в том, что без наследования
> и добавления собственного события решить задачу невозможно?


Реальность еще горше, бо даже сделать наследника не очень-то просто.

--
Regards, LVT.


 
Sandman29 ©   (2005-11-22 17:36) [2]

Leonid Troyanovsky ©   (22.11.05 17:27) [1]

Спасибо.
Интересно. В чем трудности с наследованием от TDBGrid и перекрытием одного метода?
Надеюсь, не придется заводить свои аналоги TColumn, TColumns и т.д.


 
clickmaker ©   (2005-11-22 17:38) [3]


> Как в стандартный DBGrid добавить настраиваемый хинт, зависящий
> от различных полей строки?

попробуй через TApplication.OnShowHint


 
Sandman29 ©   (2005-11-22 17:41) [4]

clickmaker ©   (22.11.05 17:38) [3]

Пробовал, при переходе на другую строку того же грида событие не срабатывает.


 
clickmaker ©   (2005-11-22 17:45) [5]


> Sandman29 ©   (22.11.05 17:41) [4]

а если через OnMouseMove

if (перешли на другую) then begin
 Application.CancelHint;
 DBGrid.Hint :=


 
Leonid Troyanovsky ©   (2005-11-22 17:46) [6]


> Leonid Troyanovsky ©   (22.11.05 17:27) [1]

> Реальность еще горше, бо даже сделать наследника не очень-
> то просто.


Впрочем, может я сгустил тучи, т.е.

http://www.rsdn.ru/Forum/Message.aspx?mid=907742&only=1

Т.е., можно без наследника,

type
  TCrackGrid = class (TDBgrid) ; // после приведения нам будут
доступны и защищенное свойство DataLink.

Ну, а вместо MoveBy д.б. что-то типа чтения из буфера записи
TDataSet.Buffers.

--
Regards, LVT.


 
Sandman29 ©   (2005-11-22 17:51) [7]

clickmaker ©   (22.11.05 17:45) [5]

Спасибо, интересная идея. Завтра попробую.

Leonid Troyanovsky ©   (22.11.05 17:46) [6]

Да, но, по-моему, все равно придется писать наследника для перекрытия CMHintShow.


 
Leonid Troyanovsky ©   (2005-11-22 17:55) [8]


> Sandman29 ©   (22.11.05 17:51) [7]

> Да, но, по-моему, все равно придется писать наследника для
> перекрытия CMHintShow.


Скорее потребуется кракнуть и TDataSet, бо Buffers тоже protected.

Ну, а код показывающий hint тоже надо написать [5].

--
Regards, LVT.


 
Sandman29 ©   (2005-11-23 11:17) [9]

Большое спасибо Leonid Troyanovsky и clickmaker!

type  
 TDBGridEx = class(TDBGrid);
procedure TfmFullData.grDocumentsMouseMove(Sender: TObject;
 Shift: TShiftState; X, Y: Integer);
const
 OldRowIndex                 : Integer = -1;
var
 GridCoord                   : TGridCoord;
 OldActiveRecord             : Integer;
begin
 with TDBGridEx(Sender) do
 begin
   GridCoord := MouseCoord(HitTest.X, HitTest.Y);
   if (GridCoord.X >= FixedCols)
     and (GridCoord.Y >= FixedRows) then
   begin
     if GridCoord.Y <> OldRowIndex then
     begin
       Application.CancelHint;
       OldActiveRecord := DataLink.ActiveRecord;
       try
         DataLink.ActiveRecord := GridCoord.Y - FixedRows;
         // не заменять на Fields[], иначе не будет работать
         // после перемещения колонки грида
         Hint := DataLink.DataSet.FieldByName("MySecretField").AsString;
       finally
         DataLink.ActiveRecord := OldActiveRecord;
       end;
       OldRowIndex := GridCoord.Y;
     end;
   end
   else
     Application.CancelHint;
 end;
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
1-1132758392
Igor_thief
2005-11-23 18:06
2005.12.18
Эмуляция нажатия кнопок на клавиатуре


2-1133348698
LG
2005-11-30 14:04
2005.12.18
Итерфейс в стиле Office


3-1130602046
romanich
2005-10-29 20:07
2005.12.18
Как перехватить ошибку из делфи после выполнения ХП


1-1132312500
Lexer
2005-11-18 14:15
2005.12.18
Как вставить Pointer(-1) в ComboBox1.Items.Objects?


2-1133762488
XProger
2005-12-05 09:01
2005.12.18
Позиция курсора в консоли




   Наверх