Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Как TreeView сделать с чекбоксами ? (+)   Найти похожие ветки 

 
Дельфист   (2004-04-05 19:34) [0]

Всем добрый день.

Подскажите пож-та как это сделать.
Теоретически я представляю (давно где то даже видел исходники
подобного) что выставляется стиль компонента "TVS_CHECKBOXES",
но вот как потом считать свойство Checked для каждого узла?

Буду очень рад, если подкинете пример кода.
Большое спасибо всем!

Слава.


 
Malkolinge ©   (2004-04-05 19:42) [1]

У ноды есть свойство Selected


 
Дельфист   (2004-04-05 20:27) [2]

При чем тут Selected? Я говорю про Checked вообще-то.

Объясню подробнее:

1. устанавливаю стиль отображения обычного TTreeView
с "чекбоксами"


procedure TForm1.Button1Click(Sender: TObject);
var
  Style: Integer;
begin
  Style := GetWindowLong(TreeView1.Handle, GWL_STYLE);
  Style:= Style or TVS_CHECKBOXES;
  SetWindowLong(TreeView1.Handle, GWL_STYLE, Style);
end;


2. перед наименованием узла теперь рисуется стандартный
чекбокс, нормально реагирующий на мышь и т.д.

Внимание, вопрос:
как мне узнать состояние чекбокса для кокнкретного узла?
т.е. отмечен он "галочкой" или нет.


 
Suntechnic ©   (2004-04-05 23:49) [3]

См. макросы TreeView_SetCheckState и TreeView_GetCheckState


 
Camypau   (2004-04-05 23:58) [4]

можно намного проще сделать
рисуешь свои картинки для чекбоксов , а потом используешь свойство stateimages


 
Дельфист   (2004-04-06 12:20) [5]

2 Suntechnic ©   (05.04.04 23:49) [3]
окей, попробую.

2 Camypau   (05.04.04 23:58) [4]
Спасибо, вот такого копеешного решения не надо.
хотя бы потому, что реакция на пользовательские
действия разные если через свои картинки и еслиъ
по человески.


 
Дельфист   (2004-04-06 12:20) [6]

2 Suntechnic ©   (05.04.04 23:49) [3]
окей, попробую.

2 Camypau   (05.04.04 23:58) [4]
Спасибо, вот такого копеешного решения не надо.
хотя бы потому, что реакция на пользовательские
действия разные если через свои картинки и еслиъ
по человески.


 
Дельфист   (2004-04-06 12:20) [7]

сорри, случайно продублировалось.


 
Дельфист   (2004-04-06 12:26) [8]

2 Suntechnic ©   (05.04.04 23:49) [3]

Ты прикололся что-ли? :) Или где это смотреть? в каком модуле?


 
[lamer]Barmaglot ©   (2004-04-06 13:15) [9]

Да нет он не прикалывался просто такая возможномть появляется после установки IE-5.0 см. здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/treeview/macros/treeview_getc heckstate.asp
А вообще самый правильный и надежный метод: Camypau   (05.04.04 23:58) [4]


 
NAlexey ©   (2004-04-06 14:26) [10]

>Дельфист   (06.04.04 12:20) [5]
С чего это ты вдруг взял что это "копеечное" решение. Вполне нормальное решение если его правильно реализовать.


 
Дельфист   (2004-04-06 15:56) [11]

2 [lamer]Barmaglot ©   (06.04.04 13:15) [9]

открой свою ссылку сам для начала.

"Page Cannot Be Found

We apologize for the inconvenience, but the page you are seeking cannot be found in this location."

вот что у меня получилось.

2 NAlexey ©   (06.04.04 14:26) [10]
там по моему разница есть в реакции "нормального" чекбокса
и "самодельного". не помню в чем точно, когда-то я так
уже делал, не понравилось.

хочется стандартного чекбоснутого дерева.


 
Дельфист   (2004-04-06 16:05) [12]

2 lamer]Barmaglot ©

ты вот это хотел наверное написать :)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/treeview/macros/treeview_getc heckstate.asp


 
Дельфист   (2004-04-06 16:06) [13]

к-хм, не понял, а чегой-то текст ссылки обрезается???


 
xmrz   (2004-04-06 16:56) [14]

>>Дельфист

Можно и без stateimages, а отрисовывать bmp из ресурсов OnDraw. Решение очень гибкое, работает быстро и адаптируется под любые конкретные задачи. Сам так делал.

>>как мне узнать состояние чекбокса для кокнкретного узла?
>>т.е. отмечен он "галочкой" или нет

Создаёшь свою структуру связанную с Node.Data и там определяешь свойство checked.


 
FOX ©   (2004-04-06 17:14) [15]

Попробуй такой вариант:

function TForm1.IsChecked( aNode: TTreeNode; var isChecked: boolean): boolean;
var item: TTVItem;
begin
 item.mask := TVIF_STATE;
 item.hItem := aNode.ItemId;
 result := bool(SendMessage( aNode.Handle, TVM_GETITEM, 0, Longint(@item)));
 if result then isChecked := (item.state and $2000) = $2000;
end;



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

Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1081281930
Smell
2004-04-07 00:05
2004.04.25
прерывистые графики в TChart


6-1074424924
elected
2004-01-18 14:22
2004.04.25
TWebBrowser Открытие нового окна в том же окне


7-1078108920
Ultr
2004-03-01 05:42
2004.04.25
как определить тип носителя (жесткий, cd-rom, съмный)


14-1080645968
DillerXX
2004-03-30 15:26
2004.04.25
Ззадача :)


9-1068037261
Delpher_Gray
2003-11-05 16:01
2004.04.25
Изображения большого размера в PowerDraw !?!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский