Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: 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 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
14-1132723017
Джо
2005-11-23 08:16
2005.12.18
Google Base


2-1133213003
Fl@sh
2005-11-29 00:23
2005.12.18
Связь между двумя таблицами программно, как??


6-1124194546
Alexey_T-O
2005-08-16 16:15
2005.12.18
открыть файл через локалку


3-1130820858
Карелин Артем
2005-11-01 07:54
2005.12.18
Сколько _Recordset возвращает запрос в ADO?


8-1121407670
Хинт
2005-07-15 10:07
2005.12.18
Pixels, ScanLine и Массив