Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизПриветствую Мастеров! 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c