Controle de Acesso por Usuário
26/04/2021
0
Paulo
Posts
26/04/2021
Emerson Nascimento
26/04/2021
Paulo
E como validar essa condição? Não encontrei nenhuma condição para validar se o item tem submenu ou não, como fazer isso? O problema de fazer isso é que cada vez que eu acrescentar um novo submenu eu teria que fazer um novo for né?
26/04/2021
Emerson Nascimento
publique aqui o código que você usa para pegar o item do menu
26/04/2021
Paulo
publique aqui o código que você usa para pegar o item do menu
for i:=0 to MainMenu1.Items.Count-1 do begin MainMenu1.Items[i].Name end;
Estou fazendo assim...
27/04/2021
Emerson Nascimento
não. não está.
esse código que você postou não faz nada.
de qualquer forma, seguem duas formas de fazer (o princípio é o mesmo, só muda a apresentação):
var arrayItems: array of string; i: integer; mensagem: string; function iif(condition: boolean; iftrue: variant; iffalse: variant): variant; begin if condition then result := iftrue else result := iffalse; end; procedure PegaItems(Item: TMenuItem); var j: integer; begin SetLength(arrayItems, Length(arrayItems)+1); arrayItems[High(arrayItems)] := Item.Caption; if Item.Count > 0 then for j := 0 to Item.Count-1 do PegaItems(Item.Items[j]); end; procedure PegaItems2(Pai: string; Item: TMenuItem); var j: integer; begin SetLength(arrayItems, Length(arrayItems)+1); arrayItems[High(arrayItems)] := iif(Pai>'',Pai+'>','')+Item.Caption; if Item.Count > 0 then for j := 0 to Item.Count-1 do PegaItems2(iif(Pai>'',Pai+'>','')+Item.Caption,Item.Items[j]); end; begin for i := 0 to MainMenu1.Items.Count-1 do PegaItems(MainMenu1.Items[i]); mensagem := ''; for i := Low(arrayItems) to High(arrayItems) do mensagem := mensagem + arrayItems[i] + ', ' + #13 MessageDlg(mensagem, mtWarning, [mbOk], 0); SetLength(arrayItems, 0); for i := 0 to MainMenu1.Items.Count-1 do PegaItems2('', MainMenu1.Items[i]); mensagem := ''; for i := Low(arrayItems) to High(arrayItems) do mensagem := mensagem + arrayItems[i] + ', ' + #13 MessageDlg(mensagem, mtWarning, [mbOk], 0); end;
27/04/2021
Paulo
não. não está.
esse código que você postou não faz nada.
de qualquer forma, seguem duas formas de fazer (o princípio é o mesmo, só muda a apresentação):
var arrayItems: array of string; i: integer; mensagem: string; function iif(condition: boolean; iftrue: variant; iffalse: variant): variant; begin if condition then result := iftrue else result := iffalse; end; procedure PegaItems(Item: TMenuItem); var j: integer; begin SetLength(arrayItems, Length(arrayItems)+1); arrayItems[High(arrayItems)] := Item.Caption; if Item.Count > 0 then for j := 0 to Item.Count-1 do PegaItems(Item.Items[j]); end; procedure PegaItems2(Pai: string; Item: TMenuItem); var j: integer; begin SetLength(arrayItems, Length(arrayItems)+1); arrayItems[High(arrayItems)] := iif(Pai>'',Pai+'>','')+Item.Caption; if Item.Count > 0 then for j := 0 to Item.Count-1 do PegaItems2(iif(Pai>'',Pai+'>','')+Item.Caption,Item.Items[j]); end; begin for i := 0 to MainMenu1.Items.Count-1 do PegaItems(MainMenu1.Items[i]); mensagem := ''; for i := Low(arrayItems) to High(arrayItems) do mensagem := mensagem + arrayItems[i] + ', ' + #13 MessageDlg(mensagem, mtWarning, [mbOk], 0); SetLength(arrayItems, 0); for i := 0 to MainMenu1.Items.Count-1 do PegaItems2('', MainMenu1.Items[i]); mensagem := ''; for i := Low(arrayItems) to High(arrayItems) do mensagem := mensagem + arrayItems[i] + ', ' + #13 MessageDlg(mensagem, mtWarning, [mbOk], 0); end;
Era exatamente isso que eu precisava, vou adaptar o código para meu uso. Muito Obrigado.
Clique aqui para fazer login e interagir na Comunidade :)