Убрать рамку из listbox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Убрать рамку из listbox

Сообщение The trick » 07.11.2010 (Вс) 0:58

Здравствуйте. У меня вопрос по поводу изменения внешнего вида Листбокса. У него отсутствует свойство BorderStyle, есть только Appearance. При установке Appearance в Flat вокруг листбокса отображается черная рамка. Как ее можно убрать?
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Убрать рамку из listbox

Сообщение Хакер » 07.11.2010 (Вс) 9:28

Зачем?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Убрать рамку из listbox

Сообщение The trick » 07.11.2010 (Вс) 10:17

Я делаю всплывающий листбох, который расположен на отдельной форме, и его черная рамка выглядит очень некрасиво. Хотелось бы ее убрать а вместо нее нарисовать уже другую. Просто сделав ее на два пикселя меньше чем форма, и сдвинуть на один пиксель(чтобы осталось между формой и листом пространство в один пиксель), а на форме в свою очередь нарисовать с помощью LINE цветную.
Вложения
Display.JPG
Что то типа этого хочу получить
Display.JPG (5.03 Кб) Просмотров: 1572
UA6527P

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Убрать рамку из listbox

Сообщение Viper » 07.11.2010 (Вс) 11:35

Кривоус Анатолий писал(а):Здравствуйте. У меня вопрос по поводу изменения внешнего вида Листбокса. У него отсутствует свойство BorderStyle, есть только Appearance. При установке Appearance в Flat вокруг листбокса отображается черная рамка. Как ее можно убрать?
Если уж чертовски хочется, то есть такая штука как ownerdraw, в поиск по этому слову. Но таки присоединяюсь к Хакеру с вопросом: "Зачем?"
Весь мир матрица, а мы в нем потоки байтов!

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Убрать рамку из listbox

Сообщение The trick » 07.11.2010 (Вс) 23:17

За OwnerDraw спасибо-разобрался. А как можно сделать такое окно как в ВБ выскакивает(выпадающий список со свойствами).Пытался через SetWindowPos c параметрами SWP_SHOWWINDOW Or SWP_NOACTIVATE, появляется окно, но при щелчке мыши на нем главное окно теряет фокус, а нужно чтобы и в выпадающем можно было производить действия и в главном. Пробывал через SetWindowLong с GWL_STYLE и WS_POPUP, но ничего почемуто не меняется
UA6527P

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Убрать рамку из listbox

Сообщение FireFenix » 07.11.2010 (Вс) 23:21

Viper писал(а):Но таки присоединяюсь к Хакеру с вопросом: "Зачем?"

наверное аналог IntelliSense :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Убрать рамку из listbox

Сообщение The trick » 07.11.2010 (Вс) 23:45

Хакер писал(а):Зачем?

Это для стилизации я сделал свой tooltip на UC для него можно выбрать цвет фона а в соответствии с цветом фона рисуется рамка, так и для списка я хотел сделать.
Как в ToolTipe фон зеленый и рамка светло зеленая.
Вложения
Display.JPG
Display.JPG (8.35 Кб) Просмотров: 1539
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Убрать рамку из listbox

Сообщение Хакер » 07.11.2010 (Вс) 23:53

Кривоус Анатолий писал(а):я сделал свой tooltip на UC для него можно выбрать цвет фона

Маразм.
  • Тултип должен быть только того цвета, какой выбран в этом системном окне настройки:
    tooltip_the_only_right_color.PNG

    И никакого иного.
  • UC для тултипа — это сверхизбыточно в плане ресурсов, и недостатоно в плане правильного поведения (тултип обрежется границей клиентской области окна-родителя, а не должен). Для тултипа достаточно одного окна с POPUP-стилем, более того, в системе уже есть заготовка для этого.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Убрать рамку из listbox

Сообщение The trick » 07.11.2010 (Вс) 23:57

Кривоус Анатолий писал(а):тултип обрежется границей клиентской области окна-родителя, а не должен

Не обрезается.
Display.JPG
Display.JPG (7.91 Кб) Просмотров: 1537
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Убрать рамку из listbox

Сообщение Хакер » 08.11.2010 (Пн) 0:08

По скриншоту не видно, где родитель. Скриншот ничего не говорит. Обрезается — говорят знания.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Убрать рамку из listbox

Сообщение The trick » 08.11.2010 (Пн) 0:14

А насчет моего второго вопросаникто не знает как можно реализовать
UA6527P

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Убрать рамку из listbox

Сообщение Mikle » 08.11.2010 (Пн) 11:20

По первому вопросу - создаёшь новый UserControl, закидываешь на него ListBox, код такой:
Код: Выделить всё
Option Explicit

Private Sub UserControl_Initialize()
  ScaleMode = vbPixels
End Sub

Private Sub UserControl_Resize()
  List1.Move -2, -2, ScaleWidth + 4, ScaleHeight + 4
  UserControl.Height = (List1.Height - 4) * Screen.TwipsPerPixelY
End Sub

Public Property Get ListBox() As ListBox
  Set ListBox = List1
End Property

Пользуешься через свойство ListBox, как полноценным листбоксом без рамки, только экспортируй все нужные события.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 99

    TopList  
cron