Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Номер записи DataSet над которым находится курсор 
:(
    Опции темы
hug
Дата 27.7.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



Ребят, выручайте, горю
мыслей уже больше нет

значит так пишу класс. "Всплывающая подсказка". при наведении на что-либо выскакивает форма, которая описывается ХМL. Ну и дальше с этой формы можно идти дальше, в завиисоти от ХML

Так вот в этой всплывающей подсказке мне нужно использовать данные строки DataSet а, над которым завис курсор для дальнейшего использование в запросе.этот DataSet просмтаривается через TDBGrid. То есть наводим на нужную строку Grid он считывает данные выполняется запрос и в подсказке всплывающей выводится результат запроса

Строку и столбец грида, над которым завис курсор мыши опеределя с помощью функции MouseCoord. он возвращает строку и столбец грида. получает положение курсора на экране. И все работает хорошо, пока весь датасет влазит в грид. Но когда появляется скрол и мы скролим и наводим мышью на строку, то MouseCoord возвращает строку грида а не датасета. То есть всегда фиксировано 1..10. Например ( если грид на 10 строк). так кот как бы мне узнать над какой строкой ДАТАСЕТА завис мой курсор??

может как то можно отщитать сколько записей грида скрол отщитал?
может как то можно узнать какие записи датасета сейчас показывт грид при текущем положении скролла.

Пример. Выводим Table 20 строк в Грид на 10 строк.
прокручиваем грид на 10-20 строки. наводим мышкой на 3 строку грида и соотв на 13 строку датасета mousecoord показывает 3. вот как мне 13 получить?

Спасайте:(
PM MAIL   Вверх
ALeXandrK
Дата 27.7.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Мне кажется нужно не MouseCoord использовать, а MouseToCell(X, Y, ACol, ARow),
которая вернет номер строки и столбца (координаты ячейки) без проблем - сколько не скроль smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
hug
Дата 28.7.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



только у TDBGrid нет такого метода
это только у StringGrid
PM MAIL   Вверх
ALeXandrK
Дата 28.7.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Может стоит попробовать перенести этот метод в TDBGrid?! smile 
Если не получется или лень, тогд использовать сторонний DBGrid, где уже такой метод есть.
К таким относится грид в библиотеке JEDI-VCL. smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Savek
Дата 28.7.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: нет
Всего: 7



Примерно так
Код

type
TDBHack = class(TDBGrid);
end;
...

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var GrCoord : TGridCoord;
      rn : Integer;
begin
GrCoord:=TDBHack(DBGrid1).MouseCoord(x,y); 
if (GrCoord.X>0)and(GrCoord.Y>0) then begin

  ADOTable1.DisableControls;
  rn:=GrCoord.Y-TDBHack(DBGrid1).Row;
  ADOTable1.MoveBy(rn);

  DBGrid1.Hint:=ADOTable1.FieldByname('Hint fieldname').AsString;

  ADOTable1.MoveBy(rn*-1);
  ADOTable1.EnableControls;
  end;
end;


PM MAIL   Вверх
hug
Дата 28.7.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



Цитата(ALeXandrK @ 28.7.2007,  15:04)
Может стоит попробовать перенести этот метод в TDBGrid?! smile 
Если не получется или лень, тогд использовать сторонний DBGrid, где уже такой метод есть.
К таким относится грид в библиотеке JEDI-VCL. smile

не пройдет в проекте уже куча гридов.
менять их не выход
PM MAIL   Вверх
ALeXandrK
Дата 28.7.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



А добавить это свойство совсем никак?
Ну если никак, то тогда предлагаю встроить этот метот прям в оброботчик OnMouseMove
(или через что ты там выводишь hint), если это возможно.

Посмотри для начала этот метод - там же на входе только X,Y. Это как раз то, что тебе
нужно. Осталось только алгоритм преобразования X,Y в Col и Row подсмотреть smile 

Это сообщение отредактировал(а) ALeXandrK - 28.7.2007, 20:42


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.