Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-67864
johny
2003-07-08 06:44
2003.07.21
печать из компонента WebBrowser


4-68134
PSA
2003-05-19 16:14
2003.07.21
Работа с окнами на ActiveX


14-68027
Klot
2003-07-04 18:43
2003.07.21
Настройка среды


1-67790
TolikM
2003-07-08 17:00
2003.07.21
Работа со StringGrid ом


4-68107
Mr. API
2003-05-15 20:15
2003.07.21
В WinXP создается прозрачное окно.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский