Консультация № 160052
09.02.2009, 22:11
0.00 руб.
0 2 1
Здравствуйте, уважаемые эксперты! Такой вопрос: есть ListBox, строки которого отображают каждая свой текст. Текст не помещается в ListBox по горизонтали. Нужно сделать так, чтобы при наведении курсора мыши на какую-то строку появлялась всплывающая подсказка с текстом этой строки. При этом ширина ListBox'a должна оставаться прежней. Подскажите, как это можно сделать?

Обсуждение

Неизвестный
11.02.2009, 10:47
общий
это ответ
Здравствуйте, Гидроген!
Предлагаю варианты процедур для решения задачи.
Код в приложении.
Подсказка появляется при наведении указателя и при выделении.
Удачи.

Приложение:
procedure TForm1.FormActivate(Sender: TObject); {при активации формы устанавливаем начальные значения}
begin
ListBox1.ItemIndex:= 0;
ListBox1.ShowHint:= True;
ListBox1.Hint:= ListBox1.Items.Strings[ListBox1.ItemIndex];
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex > -1 then
ListBox1.Hint:= ListBox1.Items.Strings[ListBox1.ItemIndex];
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); {при наведении мышки}
var
p: TPoint;

begin
p.x := x;
p.y := y;
ListBox1.ItemIndex := ListBox1.ItemAtPos(P, True);
if ListBox1.ItemIndex > -1 then
begin
ListBox1.ShowHint:= True;
ListBox1.Hint:= ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;
Неизвестный
11.02.2009, 22:11
общий
А как можно сделать, чтобы подсказка отображалась прямо на месте строки ListBox'a, как в программе Nero и только если строка не помещается в ListBox ?
Форма ответа