Главная страница
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.048 c
3-1107190444
albr
2005-01-31 19:54
2005.03.06
Кеширование изменений и ADO + MSSQL


4-1105622864
Bes'e'noK
2005-01-13 16:27
2005.03.06
Извлечение CD


1-1108899432
physic
2005-02-20 14:37
2005.03.06
TChart не строит ординату больше 1817


1-1109008417
ТехникПТО
2005-02-21 20:53
2005.03.06
Real в String


6-1101658421
Ridrix
2004-11-28 19:13
2005.03.06
Где взять сокеты? хелп