Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 07:24   #1
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Вопрос Подсказка к каждой строке в DBGrid

У меня есть DBGrid, подключенная к таблице БД. Как сделать Hint (а лучше BalloonHint) к каждой строке из БД? Информация будет браться в самой базе данных из MEMO-поля. Свойство Hint самой DBGrid не подходит, так как таким образом можно сделать только подсказку на выделенную строку. Если сделать подсказку к каждой строке невозможно, объясните хотя бы, как ограничить появление подсказки самой DBGrid зоной выделенной строки?
k1r1ch вне форума Ответить с цитированием
Старый 26.08.2009, 07:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если хватит только текущей строки то:
Код:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var gk:TGridCoord;
begin                        DBGrid1.ShowHint:=true;

 gk:=DBGrid1.MouseCoord(x,y);
 if (gk.Y<>-1) then begin
  DBGrid1.Hint:=DBGrid1.DataSource.DataSet.Fields[gk.x-1].AsString;
  Application.ActivateHint(Mouse.CursorPos);
 end;
end;
Иначе нужно долгими путями превращать DBGrid в CustomGrid, дабы добраться до ячейки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2009, 08:39   #3
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Как понять:
Код:
DBGrid1.Hint:=DBGrid1.DataSource.DataSet.Fields[gk.x-1].AsString;
При таком варианте в подсказку записывается число 3 для 1-ой строки, 4 для 2-ой и т.д.
Я всегда обращаюсь к таблице так:
Код:
Grid.Hint := DBForm.TableTip.AsString;
Тогда действительно выводит подсказку.
Только она появляется на каждой строчке, т.е. если выделена первая строка, то ее подсказка выводится на самой строке, при переводе мыши на 2-ую строку подсказка пропадает и тут же появляется (все таже) и т.д.
Как это исправить и как сделать задержку перед появлением подсказки?
И еще, что такое TGridCoord?
k1r1ch вне форума Ответить с цитированием
Старый 26.08.2009, 09:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как это исправить и как сделать задержку перед появлением подсказки?
смотри в сторону Application.HintPause
Цитата:
При таком варианте в подсказку записывается число 3 для 1-ой строки, 4 для 2-ой и т.д.
Мне лично это ни о чем не говорит.
Цитата:
И еще, что такое TGridCoord?
Что хелп уже отменили? Это номер ячейки в координатах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2009, 09:37   #5
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Сейчас подсказка выводится на каждой строке, причем текст подсказки от выделенной строки. Мне нужно, чтобы подсказка выводилась только на выделенной строке, как это сделать?

Все, сделал!

Последний раз редактировалось k1r1ch; 26.08.2009 в 09:45.
k1r1ch вне форума Ответить с цитированием
Старый 26.08.2009, 10:10   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Если обычную подсказку, то вот посмотри : http://www.delphisources.ru/pages/fa...or_dbgrid.html

... блин не успел ... надо чаще обновлять страницу ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 26.08.2009, 10:57   #7
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Радость

Я вот как сделал, по моему даже проще:
Код:
procedure TMainForm.GridMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var gk: TGridCoord;
begin
 gk := Grid.MouseCoord(x,y);
 if (gk.Y = DBForm.Table.RecNo) and (gk.X = 0) then
 begin
   Grid.ShowHint := true;
   Grid.Hint := DBForm.TableTip.AsString;
   Application.ActivateHint(Mouse.CursorPos);
 end
 else Grid.ShowHint := false;
end;
k1r1ch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить наличие частицы в каждой строке memo? zotox Помощь студентам 13 24.03.2009 12:56
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
вычислить произведение четных чисел в каждой строке массива. Oliver Sykes Паскаль, Turbo Pascal, PascalABC.NET 5 09.10.2008 03:43
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 15:56
В каждой строке массива выбирается максимальный элемент sergeyfsd Общие вопросы Delphi 2 13.05.2008 00:10