powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Treeview + Checkbox. Как установить check по id или на все subitem-ы?
5 сообщений из 5, страница 1 из 1
Treeview + Checkbox. Как установить check по id или на все subitem-ы?
    #40057437
APTEMKA0704
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую. Появилась необходимость превратить в необычный treeview, а с checkbox-ами. Делаю это с помощью данного преобразования:
Код: pascal
1.
SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or TVS_CHECKBOXES) ;



В интернете нашёл функцию, которая проверяет стоит ли галочка на checkbox-е:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function IsChecked(Node :TTreeNode):boolean;
var TvItem:TTVItem;
begin
  TvItem.Mask := TVIF_STATE;
  TvItem.hItem := Node.ItemId;
  TreeView_GetItem(Node.TreeView.Handle, TvItem);
  Result :=(TvItem.State and TVIS_CHECKED>0);
end;


Но вот как реализовать именно проставление галочек по id или проставление всех галочек на подобъектах(subitems), когда ставится галочка на главном,я не знаю. Прошу помощи
...
Рейтинг: 0 / 0
Treeview + Checkbox. Как установить check по id или на все subitem-ы?
    #40057540
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APTEMKA0704,

Поиск прям все по тому же TVIS_CHECKED тебе поможет.

P.S. Если есть SET то рядом есть и GET
...
Рейтинг: 0 / 0
Treeview + Checkbox. Как установить check по id или на все subitem-ы?
    #40057596
APTEMKA0704
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747,
а есть ли какой-то пример или кусочек кода,который мне смог бы помочь?
...
Рейтинг: 0 / 0
Treeview + Checkbox. Как установить check по id или на все subitem-ы?
    #40057610
Benten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
APTEMKA0704, добрый день.
Я немного не понял суть вопроса. Вы хотите получить TTreeView с чекбоксами, как на скрине?
...
Рейтинг: 0 / 0
Treeview + Checkbox. Как установить check по id или на все subitem-ы?
    #40057615
Benten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если надо при изменении состояния родительского узла изменять состояние всех вложенных узлов, то можно сделать так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TForm1.TreeView1DblClick(Sender: TObject);
  procedure SelectAllChildren(RootNode: TTreeNode; State:Integer);
  var
    ChildNode: TTreeNode;
  begin
    ChildNode := RootNode.getFirstChild;
    repeat
      ChildNode.StateIndex := State;
      if ChildNode.HasChildren then
        SelectAllChildren(ChildNode, State);

      ChildNode := RootNode.GetNextChild(ChildNode);
    until ChildNode = nil;
  end;
begin
  if TreeView1.Selected.StateIndex = 0 then
    TreeView1.Selected.StateIndex := 1
  else
    TreeView1.Selected.StateIndex := 0;

  if TreeView1.Selected.HasChildren then
    SelectAllChildren(TreeView1.Selected, TreeView1.Selected.StateIndex);
end;


...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Treeview + Checkbox. Как установить check по id или на все subitem-ы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]