Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Приветствую Мастеров! Hint не полностью видного элемент в ListBox   Найти похожие ветки 

 
IronHawk ©   (2003-07-07 12:48) [0]

Я вернулся!
Уточняю вопрос: Если элемент в TListBox по горизонтали полностью не виден, как вывести его Hint с его полным видом?

Вот нарыл в старых FAQ, но
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
oldidx : Longint = -1;
var
idx : Longint;
begin
with Sender as TListBox do begin
idx := ItemAtPos(Point(x,y),True);
if (idx < 0) or (idx = oldidx) then Exit;
Application.ProcessMessages;
Application.CancelHint;
oldidx := idx;
Hint := "";
if Canvas.TextWidth(Items[idx]) > Width - 4 then Hint:=Items[idx];
end;
end;

Не выйдет это, так как в строке oldidx := idx;
Будет Left side cannot be assigned to This error message is given when you try to modify a read-only object like a constant, a constant parameter, or the return value of function.
Чёт я не понял, как же это подкорректировать?


 
Sandman25 ©   (2003-07-07 12:54) [1]

{$J+} перед объявлением oldidx


 
Anatoly Podgoretsky ©   (2003-07-07 12:58) [2]

Подлинная константа, можно изменить поведение - сделать изменяемую "константу" или указанный ключ или в настройках проекта.


 
IronHawk ©   (2003-07-07 13:08) [3]


> Sandman25 © (07.07.03 12:54)

Спасибо прокатило...

Но сам вариант вышел не подходящим...


 
VAleksey ©   (2003-07-07 13:11) [4]

Если не заморачиваться и показать просто в хинте, то достаточно просто установить для ListBox1.ShowHint = true. и написать.

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
idx : Longint;
begin
with Sender as TListBox do begin
idx := ItemAtPos(Point(x,y),True);
if (idx < 0) then Exit;
if Canvas.TextWidth(Items[idx]) > Width - 4 then Hint:=Items[idx];
end;


 
IronHawk ©   (2003-07-07 13:19) [5]


> VAleksey © (07.07.03 13:11)

А как так чтоб в Хинте ещё был жирный шрифт, тот же, но жирный?


 
IronHawk ©   (2003-07-07 13:21) [6]


> VAleksey © (07.07.03 13:11)

:-))))
Так он для всех превышающих ширину элементов показывает один и тот же хинт, первого длинного :-))))


 
IronHawk ©   (2003-07-07 13:22) [7]

Я сейчас попробу заюзать копонент Игоря Шевченко, а пока мне хотелось бы знать ответ на > IronHawk © (07.07.03 13:19)


 
Song ©   (2003-07-07 13:28) [8]

Всего и делов, ла-ла :)

procedure TLockOpenForm.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var Rect:TRect;
begin
With TListBox(Sender) Do
try
Rect:=ItemRect(ItemAtPos(Point(X,Y),True));
IF Canvas.TextWidth(Items[ItemAtPos(Point(X,Y),True)])>(Rect.Right-Rect.Left) then Hint:=Items[ItemAtPos(Point(X,Y),True)] else Application.CancelHint;
except
Application.CancelHint;
end;
end;



 
VAleksey ©   (2003-07-07 13:30) [9]

Этот код работает.
Только надо мышь убрать с контрола и снова на нужный элемент списка установить. :-)


 
IronHawk ©   (2003-07-07 13:30) [10]


> Song © (07.07.03 13:28)

Супер, работает, теперь остался "марафет", тоесть жирный шрифт и чтоб хинты быстрее выводились...


 
IronHawk ©   (2003-07-07 13:33) [11]


> VAleksey © (07.07.03 13:30)

Ага, то что его надо за пределы TListBox выводить, а это подлом!


 
Song ©   (2003-07-07 13:39) [12]

2IronHawk © (07.07.03 13:30)
Чтоб хинты быстрей выводились, см. свойства TApplication
Жирным где? В хинте? Нет, так не получится, только через свой THintWindow


 
IronHawk ©   (2003-07-07 13:54) [13]


> Song © (07.07.03 13:39)
> TApplication

ОК!

> Жирным где? В хинте?

Да.

> только через свой THintWindow

Точнее ПЛИЗЗЗ...


 
Song ©   (2003-07-07 14:39) [14]

Hint:=THintWindow.Create(..);
Hint.Parent:=..

и т.д. по свойствам и методам класса THintWindow


 
IronHawk ©   (2003-07-07 15:34) [15]


> Song © (07.07.03 14:39)

Хм...
А ведь только шрифт Bolt-овым сделать.
FontChanged method (THintWindow) ?
Этим что-ль?


 
Семен Сорокин ©   (2003-07-07 15:39) [16]

IronHawk © (07.07.03 13:22)
Я сейчас попробу заюзать копонент Игоря Шевченко

Так там и смотри ответ на свой вопрос


 
IronHawk ©   (2003-07-07 15:48) [17]


> Семен Сорокин © (07.07.03 15:39)

Ды там крутовато, и к тому же, это выходит "сторонний компонент", а мне надо из родных это сваять.
Я б "спёр" часть кода, но это не этично и не в моих правилах!


 
Семен Сорокин ©   (2003-07-07 15:49) [18]

IronHawk © (07.07.03 15:48)
ты не компонент, а идею возьми - по другому не сделаешь :)



Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
14-68028
Juster~
2003-07-04 13:31
2003.07.21
Мой проц


6-67941
Fixxxer
2003-05-12 22:59
2003.07.21
как лучше организовать поиск?


3-67711
Caesar
2003-06-27 13:23
2003.07.21
DBGrid


8-67922
AntX
2003-04-01 16:07
2003.07.21
Спрайты из Аллодов


14-67987
p@s
2003-07-03 12:40
2003.07.21
Вот прочитал статейку