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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2018, 11:49   #1
honio
 
Регистрация: 30.03.2018
Сообщений: 5
По умолчанию Подсказки к columnheaders, item или subitems элемента ListView

Здравствуйте, Товарищи Форумчане, нужна Ваша помощь (или подсказка, как лучше подобраться к вопросу).

Пишу "красивый" вывод (разбора ошибок, допущенных в БД) в ListView, возникла необходимость написать подсказки к каждой заполненной ячейке subitem, а также к заголовкам column. В сети нашел нашел вот такой пример обработки события OnMouseMove, но, как его применить, разобраться не смог (с элементом ListView сталкиваюсь впервые и на каждом шагу спотыкаюсь).

PHP код:
uses CommCtrl {...}

procedure TForm1.ListView1MouseMove(SenderTObjectShiftTShiftStateX,
    
YInteger);
var
  
ptTPoint;
  
liTListItem;
  
lvHitInfo TLVHitTestInfo;
  
hint string;
begin
try
  
pt := ListView1.ScreenToClient(Mouse.CursorPos);
  
li := ListView1.GetItemAt(pt.X,pt.y);

  if 
li <> nil then
    begin 
{1}
       
FillChar(lvHitInfo,SizeOf(lvHitInfo),0);
       
lvHitInfo.pt := pt;
          if -
1<>ListView1.Perform(LVM_SUBITEMHITTEST,0,LParam(@lvHitInfo)) then
           begin  
{2}
            
hint := Format('Name: %s,%s : %s',[ListView1.Items[lvHitInfo.iItem].Caption,
            
ListView1.Columns[lvHitInfo.iSubItem].Caption,
            
ListView1.Items[lvHitInfo.iItem].SubItems[-lvHitInfo.iSubItem]]) ;

              if 
hint<>Memo1.Lines[0then
                begin     
{3}
                   
Memo1.Lines.Insert(0hint) ;

                   
ListView1.Hint := hint;
                   
Application.ActivateHint(Mouse.CursorPos) ;
                
end;      {3}
           
end {2}
          else 
begin end;


    
end; {1}

finally
end;

end
Задача поставлена так: при наведении курсора мышки на columnheaders, item или subitems и задержке над элементом свыше 5-ти секунд должна появиться подсказка на 10 секунд для конкретно этого элемента. При смене элемента и выполнении условия должна отобразиться новая подсказка.

Сам пытался переделать в нечто вот такое, но потерпел неудачу (без учета времени, отображение для конкретного item):

PHP код:

procedure TForm1
.ListView1MouseMove(SenderTObjectShiftTShiftStateX,
  
YInteger);
var
pt TPoint;
li TListItem;
lvHitInfo TLVHitTestInfo;
hint,string;
begin
   pt 
:= ListView1.ScreenToClient(Mouse.CursorPos);
   
li := ListView1.GetItemAt(pt.Xpt.Y);
   
:= liMemo1.Lines.Add(li);

   if 
li nil then
    begin
      FillChar
(lvHitInfoSizeOf(lvHitInfo),0);
      
lvHitInfo.pt := pt;

        if -
1<>ListView1.Perform(LVM_SUBITEMHITTEST,0,LPARAM(@lvHitInfo)) then
          begin
              
if lvHitInfo.iItem 2 then
              hint 
:= Format('%s',[ListView1.Items[lvHitInfo.iItem].SubItems[-1+lvHitInfo.iSubItem]])
              else 
hint := EmptyStr;
                  if 
hint <> EmptyStr then
                    begin
                       ListView1
.Hint := hint;
                       
Application.ActivateHint(Mouse.CursorPos);
                       
ListView1.ShowHint := True;
                    
end
                  
else ListView1.ShowHint := False;

          
end;

    
end;
end
Каким образом это возможно реализовать/ исправить? Или хотя бы разобраться, потому что, честное слово, запутался напрочь..

------
Также возник вопрос по количеству Column в ListView: описал 5 колонок в ListView (от 0 до 4), при компиляции возникает пустая 6 колонка без заголовка (нигде лишних субайтемов нет, колонка не описана). Каким образом можно её убрать?
------
Буду очень благодарен за любую помощь.
Изображения
Тип файла: jpg DF.jpg (111.7 Кб, 134 просмотров)
honio вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListView подсказки nibufep Общие вопросы Delphi 5 06.09.2016 17:04
ListView. Изменить цвет текста SubItems[0] Shouldercannon Общие вопросы Delphi 3 04.03.2015 21:20
Редактирование SubItems у ListView как у TListItem.Caption Человек_Борща Компоненты Delphi 6 10.01.2013 03:21
ListView SubItems mutabor Компоненты Delphi 0 19.08.2010 14:38