Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.11;
Скачать: CL | DM;

Вниз

помогите найти TreeCheckListView   Найти похожие ветки 

 
VirEx ©   (2008-03-24 21:33) [0]

Критерии:
1. TreeView с колонками (column) (в принципе не обязательно)
2. каждый элемент содержит checkbox
3. бесплатный исходный код


 
Johnmen ©   (2008-03-24 21:53) [1]


> помогите найти

Как ты себе это представляешь?


 
DVM ©   (2008-03-24 21:59) [2]


> VirEx ©   (24.03.08 21:33)  

VirtualTreeView


 
DVM ©   (2008-03-24 22:00) [3]


> VirEx ©   (24.03.08 21:33)  

см скриншот. Такой?

http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33


 
VirEx ©   (2008-03-25 10:19) [4]

Не нужен мне этот монструозный компонент, забыл его добавить в критерии как "только НЕ VirtualTreeView"

Нужен какой-нибудь потомок TreeView, но не это чудо юдо.
Зачем такой компонентище мелкой утилите?


 
Jeer ©   (2008-03-25 10:50) [5]


> бесплатный исходный код


"Даже собственный исходный код не является бесплатным" (С)

WinSDK

TreeView_SetItem, *_GetItem

Item.mask := TVIF_STATE;
Item.StateMask := TVIS_STATEIMAGEMASK;

Item.State := TVIS_CHECKED
or
Item.State := TVIS_CHECKED shr 1;

TreeView_SetItem(Handle, Item);


 
DVM ©   (2008-03-25 10:59) [6]


> Нужен какой-нибудь потомок TreeView, но не это чудо юдо.

Если чекбоксы еще можно добавить в стандарный TTreeView, то колонки как в ListView ты туда не добавишь. Не имеет стандартный виндовый контрол колонок. И никакой потомок TTreeView их добавить не сможет. Отсюда вывод - контрол должен быть сделан не на основе TTreeView, а следовательно маленьким он быть НЕ МОЖЕТ. Головой то думать надо.


 
Семеныч   (2008-03-25 11:04) [7]

Сбоку от TTreeView приляпываем TListView, делаем границу между ними  невидимой, заставляем их работать совместно, в TTreeView включаем показ птичек - и получаем сабж. Бесплатно, если не считать [5].


 
DVM ©   (2008-03-25 11:10) [8]


> Семеныч   (25.03.08 11:04) [7]

Не совсем красиво выйдет. Дерево TreeView по идее должно быть в первой колонке.


 
VirEx ©   (2008-03-25 11:11) [9]


>  [6] DVM ©   (25.03.08 10:59)

Может, пробовал компоненты из torru.net: ListView спаренный с TreeView, но там какие-то недоделки сплошные. Нельзя свернуть ветку, итемы выводятся с видоизмененными строками (добавляешь "line1", после запуска приложения отображается как "line1 00000000001"), добавление нода естественно через лишний .tv., а ковырять исходный код заново ради такой недоделки - бессмысленно.


>  [5] Jeer ©   (25.03.08 10:50)

Пробовал, работает, но при раскрытии/закрытии ветки флажок тоже cheked/uncheked


 
{RASkov} ©   (2008-03-25 11:12) [10]

> должно быть в первой колонке.

Дык можно и третий(TPanel) туда прилепить.... тот же монстр получится... только самодельный :)


 
DVM ©   (2008-03-25 11:17) [11]


> тот же монстр получится... только самодельный :)

Причем заведомо проигрывающий по всем статьям удобству и мощи Virtual TreeView.


 
DVM ©   (2008-03-25 11:18) [12]

Вообще то можно попробовать приляпать TTreeView внутрь первой колонки TListView.


 
{RASkov} ©   (2008-03-25 11:23) [13]

> [12] DVM ©   (25.03.08 11:18)

А может проще "крестик" и "чек" в первую колонку приляпать...., хотя нет, проще-таки наверное изучить монстра VirtualTreeView :)
В прочем может и есть что простенькое.... я не знаю. И сорри за оффтоп.)


 
b z   (2008-03-25 11:48) [14]


> А может проще "крестик" и "чек" в первую колонку приляпать

http://delphi.about.com/od/vclusing/l/aa092104a.htm
правда без колонок, но это не обязательно - из [0] :)


 
Семеныч   (2008-03-25 11:53) [15]

> DVM ©   (25.03.08 11:10) [8]

>  Дерево TreeView по идее должно быть в первой колонке.

Если приляпать ListView справа от TreeView и сделать границу между ними невидимой, то TreeView как раз и получится в первой колонке.


 
DVM ©   (2008-03-25 11:56) [16]


> Семеныч   (25.03.08 11:53) [15]

а заголовок?


 
Игорь Шевченко ©   (2008-03-25 12:01) [17]


> помогите найти


помогаю - http://www.torry.net - начни с этого url


 
VirEx ©   (2008-03-25 12:02) [18]


>  [17] Игорь Шевченко ©   (25.03.08 12:01)

[9]


 
Игорь Шевченко ©   (2008-03-25 12:07) [19]

VirEx ©   (25.03.08 12:02) [18]

Помогаю еще раз (последний) - http://www.google.com - тоже хороший ресурс


 
Jeer ©   (2008-03-25 12:07) [20]


> VirEx ©   (25.03.08 11:11) [9]


> Пробовал, работает, но при раскрытии/закрытии ветки флажок
> тоже cheked/uncheked


И что ? Логика поведения в твоих руках.


 
clickmaker ©   (2008-03-25 12:12) [21]


> [13] {RASkov} ©   (25.03.08 11:23)
> > [12] DVM ©   (25.03.08 11:18)
>
> А может проще "крестик" и "чек" в первую колонку приляпать

Кстати, вариант.
Хранить дерево как объект отдельно, а схлопывать-расхлопывать путем удаления-добавления пунктов в листвью


 
VirEx ©   (2008-03-25 12:44) [22]


> [14] b z   (25.03.08 11:48)

гут )


>  [21] clickmaker ©   (25.03.08 12:12)

если надумаешь своять сей гуи элемент - дай знать ;)


 
clickmaker ©   (2008-03-25 12:51) [23]


> [22] VirEx ©   (25.03.08 12:44)

я уже ваял что-то подобное ) Дерево из ListBox. Причем, на Win API и на плюсах.
Не то что бы я не знал про TreeView, просто из спортивного интереса


 
GlFox ©   (2008-03-25 12:56) [24]

Лепится такой компонент за полчаса на коленке используя THeaderControl + TTreeView (+ AdvancedCustomDrawItem())
Получится нечто типа как здесь: http://lis-zone.nm.ru/images/araneus/shfull.png
Только пример на картинке без чек-боксов, но и их пришить нетрудно.


 
Семеныч   (2008-03-26 10:52) [25]

> DVM ©   (25.03.08 11:56) [16]

> а заголовок?

А ShowColumnHeaders? А положить все это на панель и на нее же кинуть THeaderControl?

И т.д.


 
DVM ©   (2008-03-26 10:55) [26]


> А положить все это на панель и на нее же кинуть THeaderControl?

Тогда ListView вообще не нужен


 
VirEx ©   (2008-03-26 19:48) [27]

Еще вопросы возникли.
Решил добавить компоненту свойство DefaultStateList: Boolean при установке которого TreeView игнорирует StateImages, в качестве которых выступают картинки из ресурсов (по умолчанию).
В create гружу картинки:
FImageList.GetResource(rtBitmap, "CHEKED", 16, [lrTransparent], $FFFFFF);
установка свойства:
procedure TTreeCheckListView.SetDefaultStateList(const Value: Boolean);
begin
 FDefaultStateList := Value;
 case Value of
   True: begin
       TreeView_SetImageList(Handle, FImageList.Handle, TVSIL_STATE);
     end;
   False: if Assigned(StateImages) then
       TreeView_SetImageList(Handle, StateImages.Handle, TVSIL_STATE)
     else
       TreeView_SetImageList(Handle, 0, TVSIL_STATE);
 end;
end;

но в режиме дизайна, вместо значков - пустое место на размер картинки (16х16)
как это победить?


 
VirEx ©   (2008-03-27 15:56) [28]

Удалено модератором
Примечание: Создание пустых сообщений



Страницы: 1 вся ветка

Текущий архив: 2008.05.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
15-1206715335
PHP
2008-03-28 17:42
2008.05.11
не открываются файлы с расширением PHP


15-1206533074
Тыщ
2008-03-26 15:04
2008.05.11
Ассемблер в Turbo Pascal 7.0


11-1188700319
KOLBoss
2007-09-02 06:31
2008.05.11
Чтение из файла по байтно


15-1206172958
@!!ex
2008-03-22 11:02
2008.05.11
Двойная буфферизация(выдернуто из "Вакансия Delphi программист")


15-1206524725
capkoh
2008-03-26 12:45
2008.05.11
Изучение SQL. Сколько времени?