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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2016, 21:22   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию ListView подсказки

Добрый день!

в ListView есть 3 столбика в 1 дата в 2 и 3 имя и фамилия, как мне при наведение на 2 или 3 столбик получить данные по ней из БД и вывести в качестве подсказки ? (как получить данные из БД я знаю, а вот как получить содержимое столбика на который навёл нет...)
nibufep вне форума Ответить с цитированием
Старый 30.06.2016, 21:32   #2
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

TListView.OnInfoTip?
Тута подробнее - http://docs.embarcadero.com/products...OnInfoTip.html
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 01.07.2016, 10:11   #3
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

это я знаю, но там подсказка всплывает только при наведение на Caption
nibufep вне форума Ответить с цитированием
Старый 01.07.2016, 11:37   #4
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Код:
procedure TForm1.ListView3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  pt: TPoint;
  li: TLIstItem;
  lvHitInfo: TLVHitTestInfo;
  hint: string;
begin
  pt := ListView3.ScreenToClient(Mouse.CursorPos);
  li := ListView3.GetItemAt(pt.x, pt.y);
  if li = nil then
  begin
    FillChar(lvHitInfo, SizeOf(lvHitInfo), 0);
    lvHitInfo.pt := pt;
    if -1 <> ListView3.Perform(LVM_SUBITEMHITTEST, 0, LParam(@lvHitInfo)) then
    begin
      if (lvHitInfo.iSubItem = 2) or (lvHitInfo.iSubItem = 3) then
        hint := ListView3.Items[lvHitInfo.iItem].SubItems[-1 + lvHitInfo.iSubItem];
      ListView3.Hint := hint;
      Application.ActivateHint(Mouse.CursorPos);
    end;
  end;
end;
вроде бы сделал, правильное ли это решение?
nibufep вне форума Ответить с цитированием
Старый 01.07.2016, 11:59   #5
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

Если делает то, что тебе нужно и не глючит, то ты "сделал" правильно.
http://delphiru.ru/komponent/21--listview

главное помни 90% кода в интернете - говно
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 06.09.2016, 17:04   #6
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Код:
var
  pt: TPoint;
  li: TLIstItem;
  lvHitInfo: TLVHitTestInfo;
  hint: string;
begin
  pt := ListView3.ScreenToClient(Mouse.CursorPos);
  li := ListView3.GetItemAt(pt.x, pt.y);
  if li = nil then
  begin
    FillChar(lvHitInfo, SizeOf(lvHitInfo), 0);
    lvHitInfo.pt := pt;
    if -1 <> ListView3.Perform(LVM_SUBITEMHITTEST, 0, LParam(@lvHitInfo)) then
    begin
      if (lvHitInfo.iSubItem = 2) or (lvHitInfo.iSubItem = 3) then
        hint := ListView3.Items[lvHitInfo.iItem].SubItems[-1 + lvHitInfo.iSubItem];
      Form1.Memo1.Lines.Add(hint);
      ListView3.Hint := hint;
      Application.ActivateHint(Mouse.CursorPos);
    end;
  end;
end;
а как выполнять код: Form1.Memo1.Lines.Add(hint); только когда первый раз наводишь на столбик, а если просто передвигаешь по нему мышкой то ничего не делать?
nibufep вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Подсказки alexey_kip Visual C++ 1 15.04.2012 13:25
[C# + WPF] ListView. Узнать выделена ли строка в нём. ListView.View == GridView. Casper-SC WPF, UWP, WinRT, XAML 2 12.08.2010 19:04
Подсказки в ComboBox RIO Общие вопросы Delphi 0 26.09.2009 23:40
Подсказки Demien Общие вопросы Delphi 5 15.11.2007 16:51