Fórum Colocar CheckBox num TreeView #408060
27/09/2011
0
Frederico Brigatte***
Curtir tópico
+ 0Posts
27/09/2011
Wilson Junior
Espero ter colaborado.
Gostei + 0
27/09/2011
Frederico Brigatte***
Gostei + 0
27/09/2011
Frederico Brigatte***
Gostei + 0
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.
Gostei + 0
27/09/2011
Frederico Brigatte***
Gostei + 0
27/09/2011
Frederico Brigatte***
Gostei + 0
28/09/2011
Frederico Brigatte***
Gostei + 0
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;
Gostei + 0
29/09/2011
Frederico Brigatte***
Gostei + 0
30/09/2011
Frederico Brigatte***
Gostei + 0
17/10/2013
Jeferson Zonta
Pronto..
Gostei + 0
28/05/2014
Frederico Brigatte***
Gostei + 0
28/05/2014
Frederico Brigatte***
Gostei + 0
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)