Текущий архив: 2004.08.08;
Скачать: CL | DM;
ВнизHint в ListBox e Найти похожие ветки
← →
saimon (2004-07-22 20:26) [0]Уважаемые, мастера, Подскажите пожалуйста...
Как сделать, чтобы когда в ListBox"е строка полностью не умещается ее показывала Hint (подсказка) и была на той линии, над которой указатель мыши и начиналась с начала строки???
Заранее благодарен, Saimon.
← →
Almaz © (2004-07-23 04:13) [1]
> Как сделать, чтобы когда в ListBox"е строка полностью не
> умещается ее показывала Hint (подсказка) и была на той линии,
> над которой указатель мыши и начиналась с начала строки???
Для этого, необходимо переопределить Application.OnShowHint и обрабатывать его для всех ListBox"ов. Например так:type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
procedure FormCreate(Sender: TObject);
...
private
procedure HintCorrect(var HintStr: string; var CanShow: Boolean;
var HintInfo: THintInfo);
...
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.ShowHint := TRUE;
ListBox2.ShowHint := TRUE;
Application.OnShowHint := HintCorrect;
end;
procedure TForm1.HintCorrect(var HintStr: string; var CanShow: Boolean;
var HintInfo: THintInfo);
var
Index: Integer;
ARect: TRect;
begin
if HintInfo.HintControl is TListBox then
with TListBox(HintInfo.HintControl) do
begin
Index := ItemAtPos(HintInfo.CursorPos, True);
if Index <> -1 then
if Canvas.TextWidth(Items[Index]) > ClientWidth then
begin
HintInfo.HintStr := Items[Index];
Perform(LB_GETITEMRECT, Index, Longint(@ARect));
HintInfo.CursorRect := ARect;
HintInfo.HintPos := ClientToScreen(ARect.TopLeft);
CanShow := True;
end else
CanShow := False;
end;
end;
Удачи.
← →
saimon (2004-07-23 16:27) [2]Спасибо
Страницы: 1 вся ветка
Текущий архив: 2004.08.08;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.054 c