![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
listbox [D6, WinXP]
do_the_right_thing © (2002-06-12 00:38:00)Здравствуйте. У меня тут за время общения с листбоксом накопилось несколько вопросов. помогите плз
1)при выделении итема в листбоксе вокруг него есть рамочка
как ее убрать?
2)сделал фоном листбоксу картинку bmp при помощи
listbox1.canvas.draw(0,0,image1.canvas.bitmap)
для этого всунул эту строку в form.onpaint (единственное место, которое я нашел, чтобы и картинка была и итемы нормально писались ), но при прокручивании листбокса картинка стирается. как сделать чтобы и картинка всегда показывалась и итемы в листбоксе тоже?
3)как узнать в процедуре listbox.dblclick индекс нажатого итема в том же листбоксе?
do_the_right_thing (2002-06-12 18:05:00) [1]спасибо всем
Song (2002-06-12 10:10:00) [2]1) Можно не делать так радикально как предложил allrussia (c)
Можно просто написать свой обработчик на событие TListBox.onDrawItem и не включать вышеупомянутую строку в обработчик.
2) Очевидно, что нужно ловить сообщение о скролировании контрола и рисовать в этот момент также.
allrussia (2002-06-12 02:18:00) [3]1)при выделении итема в листбоксе вокруг него есть рамочка
как ее убрать?
Открываешь файл StdCtrls.pas в папке $Delphi$\Source\Vcl (его там может и не быть, должно быть установлено Visual Component Library Suite). Открываешь в Delphi, дваждыудаляешь из этого файла следующую строку (можно заремить //):
if odFocused in State then DrawFocusRect(hDC, rcItem);
Сохраняешь, копируешь сохраненненный файл в папку $Delphi$\Lib.
Работает с ListBox, ComboBox, DirectoryListBox, DriveComboBox и т.д. Не забудь ставить стиль компонента OwnerDraw...
VID (2002-06-12 00:53:00) [4]3. ListBox1.ItemIndex