Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BRUNOOO

[Resolvido] Componente em tempo de execucao

Recommended Posts

Ola pessoal,

 

Estou com o seguinte codigo:

 

 

 

///////////////---------------------------------------------------------------------------------///////////////////////

 

 

 

unit UOpcoesUsuario;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,

Buttons;

 

type

TFrmOpcoesUsuario = class(TForm)

ZQuery1: TZQuery;

ZQuery2: TZQuery;

BtnAtualizar: TBitBtn;

BtnCancelar: TBitBtn;

ZQuery3: TZQuery;

procedure FormShow(Sender: TObject);

procedure BtnCancelarClick(Sender: TObject);

procedure BtnAtualizarClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

FrmOpcoesUsuario: TFrmOpcoesUsuario;

 

implementation

 

uses UAdministrativo, ULogin;

 

{$R *.dfm}

 

procedure TFrmOpcoesUsuario.FormShow(Sender: TObject);

var

MenuLabel : TLabel;

MeuComboBox : TComboBox;

numRow, i, top: integer;

 

Begin

numRow := ZQuery1.RecordCount;

// Variável para ajustar altura do topo da tela

top := 15;

 

// Seta o altura do form conforme o número de itens

FrmOpcoesUsuario.Height := 150 + (numRow * 50);

// Seta a largura do form

FrmOpcoesUsuario.Width := 500;

 

// Imprime o nome do usuário selecionado

MenuLabel := TLabel.Create(Self);

MenuLabel.Parent := Self;

MenuLabel.Top := top;

MenuLabel.Left := 50;

MenuLabel.Caption := 'Permissões para o usuário(a) ' + FrmAdministrativo.DBGridUsuarios.Fields[1].AsString;

 

for i := 1 to numRow do begin

MenuLabel := TLabel.Create(Self);

MenuLabel.Parent := Self;

MenuLabel.Top := i * 50 + top;

MenuLabel.Left := 50;

MenuLabel.Caption := ZQuery1.FieldByName('menu').AsString;

 

MeuComboBox := TComboBox.Create(Self);

MeuComboBox.Parent := Self;

MeuComboBox.Top := i * 48 + top;

// Alinha o combobox a 50 a direita

MeuComboBox.Left := FrmOpcoesUsuario.Width - MeuComboBox.Width - 50;

 

// Itens disponíveis no combobox

MeuComboBox.Items.Clear();

 

ZQuery3.First;

while not(ZQuery3.Eof) do begin

MeuComboBox.Items.Add(ZQuery3.Fields[0].AsString);

ZQuery3.Next;

end;

 

ZQuery2.SQL.Clear;

// Consulta que busca a permissão do usuário para determinado item de menu

Zquery2.SQL.Add('SELECT permissao FROM tb_pessoas_menu WHERE tb_pessoas_id = ' + FrmAdministrativo.DBGridUsuarios.Fields[0].AsString + ' and tb_menu_id = ' + ZQuery1.FieldByName('id').AsString + '');

ZQuery2.Open;

// Seta o item selecionado para a combobox

MeuComboBox.ItemIndex := ZQuery2.FieldByName('permissao').AsInteger - 1;

ZQuery1.Next;

end;

BtnAtualizar.Top := FrmOpcoesUsuario.Height - BtnAtualizar.Height -50;

BtnCancelar.Top := FrmOpcoesUsuario.Height - BtnAtualizar.Height -50;

end;

 

procedure TFrmOpcoesUsuario.BtnCancelarClick(Sender: TObject);

begin

FrmOpcoesUsuario.Close;

end;

 

procedure TFrmOpcoesUsuario.BtnAtualizarClick(Sender: TObject);

var

mensagem : string;

MeuComboBox : TComboBox;

Teste : TComponent;

begin

Zquery1.Active := false;

// Limpa o atual SQL da query

Zquery1.SQL.Clear;

// Adiciona a SQL

Zquery1.SQL.Add('DELETE FROM tb_pessoas_menu WHERE tb_pessoas_id ="' + FrmAdministrativo.DBGridUsuarios.Fields[0].AsString + '"');

// Executa a SQL

ZQuery1.ExecSQL;

Zquery1.SQL.Clear;

 

// FrmOpcoesUsuario.Components

Teste := FrmOpcoesUsuario.Components[7];

 

MeuComboBox := Teste;

 

 

//mensagem := MeuComboBox.items[0];

 

//mensagem := IntToStr(FrmOpcoesUsuario.ZQuery3.ComponentIndex);

//mensagem := IntToStr(FrmOpcoesUsuario.FindComponent('MeuComboBox').ComponentIndex);

//mensagem := IntToStr(FrmOpcoesUsuario.GetTypeInfo());

MessageDlg(mensagem, mtInformation, [mbOK], 0);

//ZQuery1.SQL.Add()

//FrmOpcoesUsuario.Show;

 

end;

 

end.

 

 

///////////////---------------------------------------------------------------------------------///////////////////////

 

 

 

O que acontece eh que o componente eh criado em tempo de execucao

 

Ateh ai tudo bem, crio labels e combobox.

 

Mas depois de criado, preciso obter os valores dos combobox.

 

Como vcs podem ver acima, tentei utilizar o comando

FrmOpcoesUsuario.Components[7];

para pegar o compontente de indice 7 que sei que eh um combobox.

Ateh consegui pega-lo como compontente, mas preciso transforma-lo

em um combobox.

 

Alguem sabe alguma maneira de fazer isto??

Ou alguma outra forma de abordar o problema??

 

Obrigado pela atencao

 

Bruno

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.