![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Hint на DBCtrlGrid [D5]
сомневающийся © (2005-02-18 19:06:00)Доброго времени суток! Столкнулся с проблемкой. Ситуация следующая: есть таблица с тремя полями (code, name, ok). Есть DBCtrlGrid, на который выводятся данные из таблицы (поле code на TDBText, поле ok - на TDBCheckBox). Свободное место ограничено, и поле name просто не влезает на грид, поэтому последовало пожелание видеть его значение хотя бы на всплывающей подсказке.
Проблема, собственно, в том, что активная запись таблицы, разумеется, может не совпадать со строчкой грида, над которой находится указатель мыши, а DataLink грида находится в private-секции. Можно ли каким-либо образом получить необходимое значение, не меняя активную запись?
Leonid Troyanovsky (2005-02-19 21:43:00) [1]
> 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.
Leonid Troyanovsky (2005-02-19 21:38:00) [2]
> сомневающийся (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.
Sam Stone (2005-02-18 22:17:00) [3]OnMouseOver(), OnMouseMove() и вычисление нода, над которым мышь висит. Ну а дальше поверх ячейки нарисовать хинт.
сомневающийся (2005-02-18 20:27:00) [4]up