Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Подсказка над пунктом ListBox'а


Автор: MacTep 25.4.2006, 22:30
Предположим, что ширина у компонента небольшая, а строки длинные. Как сделать, чотбы при зависании мышки, появлялся хинт с полной длинной строки над которой висит указатель мыши? 

Автор: Демо 26.4.2006, 00:49
Используй TListView.

Если все же без TListBox не обойтись, то можно сделать так:

Код

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ind: Integer;
  R: TRect;
  P: TPoint;
begin
  ind := ListBox1.ItemAtPos(Point(X,Y),True);
  if  ind<>-1 then
  begin
    if ListBox1.Canvas.TextWidth(ListBox1.Items[Ind])>ListBox1.ClientWidth then
    begin
      ListBox1.Hint := ListBox1.Items[Ind];
      H.Canvas.Font := ListBox1.Canvas.Font;
      R := ListBox1.ItemRect(Ind);
      P := ListBox1.ClientToScreen(R.TopLeft);
      R.Left := P.X+1;
      R.Top := P.Y+1;
      R.Bottom := R.Top+ListBox1.ItemHeight-1;
      R.Right := R.Left+ListBox1.Canvas.TextWidth(ListBox1.Hint)+4;
      H.ActivateHint(R,ListBox1.Hint);
    end
    else H.ReleaseHandle;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   H := THintWindow.Create(ListBox1);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  H.Free;
end;
 

Автор: Yanis 26.4.2006, 11:27
Проще использовать TreeView тогда писать вообще никчего не придётся smile:
Код

object TreeView1: TTreeView
  RowSelect = True
  ShowButtons = False
  ShowLines = False
  ShowRoot = False
  Items.Data = {
    02000000360000000000000000000000FFFFFFFFFFFFFFFF0000000000000000
    1D31313131313131313131313131313131313131313131313131313131313600
    00000000000000000000FFFFFFFFFFFFFFFF00000000000000001D3131313131
    313131313131313131313131313131313131313131313131}
end
 

Автор: Guedda 26.4.2006, 16:20
Тебе http://delphiworld.narod.ru/base/hint_for_combobox_item.html... Правда там для ComboBox, но ничего smile Разберешься smile 

Автор: Yanis 26.4.2006, 17:17
http://vingrad.ru/DELPHI-DLP-002539
Специально не приводил ссылку, потому что искать нехотелось и вообще я предпологал, что её предложат в первых постах smile. 

Автор: Демо 26.4.2006, 19:04
Yanis, 
В первом ответе не то же самое? Только кода в 20 раз меньше. 

Автор: ДЫМ 26.4.2006, 23:35
Посмотри компонентик, там все что нужно

http://vingrad.ru/DELPHI-SRC-002491 

Автор: MacTep 30.4.2006, 09:54
Цитата(ДЫМ @  26.4.2006,  23:35 Найти цитируемый пост)
Посмотри компонентик
Компонента реальный. Спасибо! smile Уже юзаю... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)