Снова TreeView

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Снова TreeView

Сообщение Cryonyx » 03.04.2005 (Вс) 19:45

В этот раз я запал на новый элемент - TreeView :D
Кто-нибудь знает, как в нём увеличить расстояние между элементами и сделать первоначальный отступ от верхнего края?
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 04.04.2005 (Пн) 17:51

http://www.microsoft.com/msj/0798/controlspy.aspx
Это статья в МСДН, называется - Control Spy Exposes the Clandestine Life of Windows Common Controls, Part II
к ней пример в 2.9Мб очень рекомендую

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 05.04.2005 (Вт) 7:21

Увеличение отступов между элементами делается с помощью увеличения значения Indentation.
الفيجوال بيسك الرابح

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 05.04.2005 (Вт) 15:32

2 Igor_123
Спасибо огромное! Классный набор!
Для тех, кому интересно, вертикальный отступ делается так:
Код: Выделить всё
'' Module

Private Const TV_FIRST = &H1100
Private Const TVM_SETITEMHEIGHT = (TV_FIRST + 27)

Public Sub setItemHeight(ByVal wnd As Long, ByVal height As Long)
    SendMessage wnd, TVM_SETITEMHEIGHT, height, 0
End Sub

'' Form

Private Sub Form_Load()
    setItemHeight Tree1.hwnd, 22
End Sub


2 GM
Мне были нужны вертикальные отступы, а не горизонтальные...
С горизонтом итак всё понятно.
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 05.12.2005 (Пн) 8:48

Есть еще способ, топорный до безобразия:
Назначить узлам прямоугольные иконки необходимой высоты в пикселах и шириной в 1 пиксел, чтобы не влияло на горизонтальные отступы.
Правда динамически вертикальные интервалы изменять не получится.
Зато никакого кода и погружения в "страшные" константы
:wink:
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 05.12.2005 (Пн) 23:58

2 hohol_kz
А скорость при этом какова? Представь себе дерево из 2ххх элементов (это не шутка, а реальный пример) - лишние изменения размеров узлов вызовут увеличение времени пересчёта картинок (то, что тебе кажется пустой иконкой - для компа самая что ни на есть полная).

А так, как было сделано - элегантно и быстро :D
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 06.12.2005 (Вт) 8:24

Я же сказал, что вариант топорный и динамического изменения не получится (конечно можно сделать, но будет геморрой).
Но изменение размера отступов по вертикали при построении дерева будет работать. При этом узкое место по производительности само заполнение дерева, а не наличие или отсутствие в нем картинок.
У меня как раз в работе такое большое дерево как ты говоришь: из ~ 1800-2100 узлов (точно не считал) с 6 уровнями и раздельными картинками для закрытого, раскрытого и выделенного узла. На производительность уже построенного дерева это тоже заметро не влияет.
еще одно замечание, это что в ImageList все картинки одинакового размера, т.е. нельзя разновеликий набор туда поместить и потом юзать.

Так что если не требуется динамика по вертикальному интервалу и не хочется морочиться с кодом, то пожалста. Но твой вариант конечно в тыщу раз элегантнее
:D
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 06.12.2005 (Вт) 9:02

Кстати, вопрос горизонтального отступа тоже стоит, т.к. регулируется только отступ всех дочерних узлов по отношению к корню или родителю.
А вот корень лепится к самому краю контрола. Красивее было бы и этот отступ увеличить малость.
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 06.12.2005 (Вт) 9:04

Эх я так и думал, что это засада.
Увы, придется выеживаться. Спасибо Microsoft.
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.12.2005 (Вт) 10:59

hohol_kz писал(а):А вот корень лепится к самому краю контрола. Красивее было бы и этот отступ увеличить малость.

Не исключено, что тебя немного утешит свойство LineStyle.

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 10.12.2005 (Сб) 10:40

Ennor писал(а):
hohol_kz писал(а):А вот корень лепится к самому краю контрола. Красивее было бы и этот отступ увеличить малость.

Не исключено, что тебя немного утешит свойство LineStyle.

Вот именно, что всего лишь немного...
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.


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

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

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

    TopList