Colocar CheckBox num TreeView
27/09/2011
0
Frederico Brigatte***
Posts
27/09/2011
Wilson Junior
Espero ter colaborado.
27/09/2011
Frederico Brigatte***
27/09/2011
Júlio Ferreira
Cada objeto TTreeNode, que representa um nódulo do TreeView, possui essas propriedades...
A forma de fazer com que seu TreeView possua um CheckBox é definindo o valor para aessas propriedades.
StateIndex = representa o estado para o CheckBox do nódulo
ImageIndex = representa a imagem que será exibida para o CheckBox do nódulo
A forma mais prática seria criar uma classe sua, como TMeuTreeView, herdando de TTreeView para realizar esse controle. Dentro dela, vc implementaria um método público setState( nodule, estado ) para realizar esse controle:
procedure TMeuTreeView.setState( nodulo: TTreeNode; state: Boolean ); begin if Assigned( nodulo ) then begin { ** Realizando o controle marcado/desmarcado do item informado ** } if state then nodulo.StateIndex := 0 else nodulo.StateIndex := 1; end; end;
Ainda é possível realizar o controle para o estado Grayed, que é o checkbox com um quadradinho no lugar do visto em forma de v.
27/09/2011
Frederico Brigatte***
29/09/2011
Frederico Brigatte***
Ex.:
-[]Administração
-..[]Cadastro Usuários
...[]Perfil
[]Clientes
[]Fornecedores
-[]Consultar
[]
[]
.
.
Está montando assim. O código está embaixo:
//procedure TForm1.mtdMenuItemToTreeView(aoMenuItem: TMenuItem; aoNode : TTreeNode);
//var
// I: Integer;
//begin
// for I := 0 to aoMenuItem.Count -1 do
// begin
// mtdMenuItemToTreeView(aoMenuItem.Items[i], TreeView1.Items.AddChild(aoNode, //AnsiReplaceStr(aoMenuItem.Items[i].Caption, &, EmptyStr)));
// end;
//end;
//procedure TForm1.btnArvoreClick(Sender: TObject);
//begin
// TreeView1.Items.Clear;
// mtdMenuItemToTreeView(MainMenu1.Items, nil);
// TreeView1.FullExpand;
//end;
17/10/2013
Jeferson Zonta
Pronto..
28/05/2014
Frederico Brigatte***
28/05/2014
Frederico Brigatte***
29/04/2021
Gladson Reis
Primeiro crie estas constantes
const TVIS_CHECKED = $2000; TVIS_UNCHECKED= $1000;
Depois esta função :
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;
No create do seu form:
SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or TVS_CHECKBOXES);
Espero ter ajudado.
Clique aqui para fazer login e interagir na Comunidade :)