Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DBGrid. Выбор данных в зависимости от координат курсора мыши.

7.9K
25 мая 2006 года
zvitaliy
25 / / 30.08.2005
Есть всязка IBQuery->DataSourse->DBGrid.
Нужно получить значение IBQuery.ColumnByName('имя_поля').AsString для записи над которой завис курсор мыши в DBGrid.

Помогите советом.

-----------------
Заранее спасибо.
303
26 мая 2006 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by zvitaliy
Есть всязка IBQuery->DataSourse->DBGrid.
Нужно получить значение IBQuery.ColumnByName('имя_поля').AsString для записи над которой завис курсор мыши в DBGrid.

Помогите советом.

-----------------
Заранее спасибо.


Делать примерно так:
1. Определить номер строки, над которой "завис" курсор;
2. Определить номер записи в DataSet, которой соответствует номер строки грида (с учетом прокрутки, etc.) (с DBGrid не работаю, так что какие ф-ии надо использовать - не знаю)
3. Переместить курсор набора данных на эту запись (сохранив номер активной записи):

 
Код:
...
    IBQuery.DisableControls;
    OldRec:=IBQuery.RecNo;
    IBQuery.RecNo:=UnderMouse_RecNo;
...

4.
 
Код:
...
    UnderMouse_Field:=IBQuery.ColumnByName('имя_поля').AsString;
...

5. Возвратить курсор назад:
 
Код:
...
    IBQuery.RecNo:=OldRec;
    IBQuery.EnableControls;
...


ЗЫ: Я пробовал работать по такому методу с DBGridEh - получал жуткие тормоза и глюки с прокруткой... потом плюнул.
Если кто найдет метод получше - буду рад :)
7.9K
26 мая 2006 года
zvitaliy
25 / / 30.08.2005
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
a: TGridCoord;
begin
a:=DBGrid1.MouseCoord(X,Y);
...
...

Спасибо.Номер строки в DBGrid на экране я определил, осталось определить количество прокрученных в DBGrid строк ну или хотя бы прокрученную область в пикселях - расчитаю количество строк арифметически.

Есть еще идеи?
303
29 мая 2006 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by zvitaliy
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
a: TGridCoord;
begin
a:=DBGrid1.MouseCoord(X,Y);
...
...

Спасибо.Номер строки в DBGrid на экране я определил, осталось определить количество прокрученных в DBGrid строк ну или хотя бы прокрученную область в пикселях - расчитаю количество строк арифметически.

Есть еще идеи?


 
Код:
property TopRow ?
7.9K
29 мая 2006 года
zvitaliy
25 / / 30.08.2005
Цитата:
Originally posted by makbeth
 
Код:
property TopRow ?



У потомка TDrawGrid такое свойство есть, у
TDBGrid - нету. :-( Вот невезет.

7.9K
30 мая 2006 года
zvitaliy
25 / / 30.08.2005
В принципе нашел альтернативное решение поставленой задачи. Но есть другой вопрос:

Значение ячейки больше ее ширины, нужно при наведении курсора полное значение ячейки выводить в хинте. Координаты ячейки уже есть :-). Осталось получить значение ячейки над которой курсор
1.2K
14 июня 2007 года
piroman17
175 / / 20.07.2006
Вот тоже по этой теме вопрос появился:
Как в TDBGrid узнать номер выделенной строки?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог