Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Hint на DBCtrlGrid   Найти похожие ветки 

 
сомневающийся   (2005-02-18 19:06) [0]

Доброго времени суток! Столкнулся с проблемкой. Ситуация следующая: есть таблица с тремя полями (code, name, ok). Есть DBCtrlGrid, на который выводятся данные из таблицы (поле code на TDBText, поле ok - на TDBCheckBox). Свободное место ограничено, и поле name просто не влезает на грид, поэтому последовало пожелание видеть его значение хотя бы на всплывающей подсказке.

Проблема, собственно, в том, что активная запись таблицы, разумеется, может не совпадать со строчкой грида, над которой находится указатель мыши, а DataLink грида находится в private-секции. Можно ли каким-либо образом получить необходимое значение, не меняя активную запись?


 
сомневающийся   (2005-02-18 20:27) [1]

up


 
Sam Stone ©   (2005-02-18 22:17) [2]

OnMouseOver(), OnMouseMove() и вычисление нода, над которым мышь висит. Ну а дальше поверх ячейки нарисовать хинт.


 
Leonid Troyanovsky ©   (2005-02-19 21:38) [3]


> сомневающийся   (18.02.05 19:06)  

> Проблема, собственно, в том, что активная запись таблицы,
> разумеется, может не совпадать со строчкой грида, над которой
> находится указатель мыши, а DataLink грида находится в private-секции.
> Можно ли каким-либо образом получить необходимое значение,
> не меняя активную запись?


type
 THackDataSource = class(TDataSource);

function GetDataLink(DBCtrlGrid: TDBCtrlGrid): TDataLink;
var
 i: Longint;
begin
 Result := nil;
 with THackDataSource(DBCtrlGrid.DataSource) do
   for i := 0 to DataLinks.Count-1 do
     if TDataLink(DataLinks[i]) is TDBCtrlGridLink then
       begin
         if TDataLink(DataLinks[i]).RecordCount = DBCtrlGrid.PanelCount then
           begin
             Result := TDataLink(DataLinks[i]);
             Break;
           end;
       end;
end;

Ну, а получить текст (поля j) из ячейки i можно так

 oldpos := DataLink.ActiveRecord;
 DataLink.ActiveRecord := i;
 s := DataLink.DataSet.Fields[j].DisplayText;
 DataLink.ActiveRecord := oldpos;

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-02-19 21:43) [4]


> Leonid Troyanovsky ©   (19.02.05 21:38) [3]

>          if TDataLink(DataLinks[i]).RecordCount = DBCtrlGrid.PanelCount
> then


Фу-ты.

if TDataLink(DataLinks[i]).BufferCount = DBCtrlGrid.PanelCount then

Sorry.

--
Regards, LVT.



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

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

Наверх




Память: 0.47 MB
Время: 0.044 c
14-1108551931
Конст
2005-02-16 14:05
2005.03.06
А почем сейчас лицензионная Windows Xp Home Edition ?


3-1107361035
Ovant
2005-02-02 19:17
2005.03.06
Обработка ошибок Delphi


3-1107210202
ka
2005-02-01 01:23
2005.03.06
Помогите с диагнозом и лечением.


1-1109014441
Sword
2005-02-21 22:34
2005.03.06
Помогите начертить отрезок!!! :))


14-1108368694
stone
2005-02-14 11:11
2005.03.06
Lord of The Rings: Battle for middle Earth