Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c