Ir para conteúdo

POWERED BY:

Arquivado

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

Valdiney F. Lima

Pegar os CheckBox marcados...

Recommended Posts

Ei o meu código:

unit uCadastrarImoveis;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs, Spin, DB,  ZAbstractRODataset, ZAbstractDataset, ZDataset;type  TfrmCadastrarImoveis = class(TForm)	Panel1: TPanel;	Shape1: TShape;	PageControl1: TPageControl;	TabSheet1: TTabSheet;	TabSheet2: TTabSheet;	TabSheet3: TTabSheet;	ScrollBox1: TScrollBox;	Image1: TImage;	Image2: TImage;	Image3: TImage;	Image4: TImage;	Image5: TImage;	Image6: TImage;	Image7: TImage;	Image8: TImage;	Image9: TImage;	Image10: TImage;	Image11: TImage;	Image12: TImage;	SpeedButton13: TSpeedButton;	SpeedButton14: TSpeedButton;	SpeedButton15: TSpeedButton;	SpeedButton16: TSpeedButton;	SpeedButton17: TSpeedButton;	SpeedButton18: TSpeedButton;	SpeedButton19: TSpeedButton;	SpeedButton20: TSpeedButton;	SpeedButton21: TSpeedButton;	SpeedButton22: TSpeedButton;	SpeedButton23: TSpeedButton;	SpeedButton24: TSpeedButton;	ScrollBox2: TScrollBox;	Image13: TImage;	Image14: TImage;	Image15: TImage;	Image16: TImage;	SpeedButton25: TSpeedButton;	SpeedButton26: TSpeedButton;	SpeedButton27: TSpeedButton;	SpeedButton28: TSpeedButton;	SpeedButton29: TSpeedButton;	SpeedButton30: TSpeedButton;	Label1: TLabel;	Label2: TLabel;	OpenPictureDialog1: TOpenPictureDialog;	ScrollBox3: TScrollBox;	CheckBox1: TCheckBox;	ComboBox1: TComboBox;	CheckBox2: TCheckBox;	CheckBox3: TCheckBox;	Edit1: TEdit;	Edit2: TEdit;	Edit3: TEdit;	Edit4: TEdit;	Edit5: TEdit;	Edit6: TEdit;	Edit7: TEdit;	ComboBox5: TComboBox;	Edit8: TEdit;	Edit9: TEdit;	Edit10: TEdit;	Edit11: TEdit;	Edit12: TEdit;	Edit13: TEdit;	Label3: TLabel;	Label4: TLabel;	Label5: TLabel;	Label6: TLabel;	Label7: TLabel;	Label8: TLabel;	Label9: TLabel;	Label10: TLabel;	Label11: TLabel;	Label12: TLabel;	Label13: TLabel;	Label14: TLabel;	Label15: TLabel;	Label16: TLabel;	Label17: TLabel;	Label18: TLabel;	Label19: TLabel;	Label20: TLabel;	Shape2: TShape;	Label21: TLabel;	Label22: TLabel;	Label23: TLabel;	Label24: TLabel;	Label25: TLabel;	CheckBox4: TCheckBox;	Label26: TLabel;	Shape3: TShape;	ScrollBox4: TScrollBox;	UpDown1: TUpDown;	Edit14: TEdit;	Edit15: TEdit;	Edit16: TEdit;	Edit17: TEdit;	UpDown2: TUpDown;	UpDown3: TUpDown;	UpDown4: TUpDown;	CheckBox5: TCheckBox;	Label27: TLabel;	Edit18: TEdit;	UpDown5: TUpDown;	Shape4: TShape;	Label28: TLabel;	RadioButton1: TRadioButton;	RadioButton2: TRadioButton;	RadioButton3: TRadioButton;	Shape5: TShape;	Label29: TLabel;	Shape6: TShape;	Label30: TLabel;	ScrollBox5: TScrollBox;	ComboBox6: TComboBox;	ComboBox7: TComboBox;	Edit19: TEdit;	ComboBox8: TComboBox;	Edit20: TEdit;	ComboBox9: TComboBox;	Label31: TLabel;	Label32: TLabel;	Label33: TLabel;	Label34: TLabel;	Edit21: TEdit;	Edit22: TEdit;	Edit23: TEdit;	Label35: TLabel;	Label36: TLabel;	Label37: TLabel;	Memo1: TMemo;	Label38: TLabel;	Edit24: TEdit;	Edit25: TEdit;	UpDown6: TUpDown;	UpDown7: TUpDown;	Edit26: TEdit;	UpDown8: TUpDown;	ZQuery1: TZQuery;	Timer1: TTimer;	Button1: TButton;	procedure FormClose(Sender: TObject; var Action: TCloseAction);	procedure BitBtn1Click(Sender: TObject);	procedure Image1Click(Sender: TObject);	procedure CheckBox5Click(Sender: TObject);	procedure Timer1Timer(Sender: TObject);	procedure FormShow(Sender: TObject);	procedure Button1Click(Sender: TObject);  private	{ Private declarations }	procedure CheckBoxDependencia(rotulo: string; id, coluna, linha: integer);	procedure CheckBoxDetalhes(rotulo: string; id, coluna, linha: integer);	procedure bloqueiaComponentes (acao: boolean);  public	{ Public declarations }  end;var  frmCadastrarImoveis: TfrmCadastrarImoveis;implementationuses uSobre, uConexao, uPrincipal;{$R *.dfm}procedure TfrmCadastrarImoveis.CheckBoxDependencia(rotulo: string; id, coluna, linha: integer);var	check: TCheckBox;begincheck:=TCheckBox.Create(Self);check.Parent := ScrollBox4;check.Caption := rotulo;check.Tag := id;check.Top:=(linha * 17) - 17;check.Width:=120;check.Left:=(coluna * 160) - 160;end;procedure TfrmCadastrarImoveis.CheckBoxDetalhes(rotulo: string; id, coluna, linha: integer);var	check: TCheckBox;begincheck:=TCheckBox.Create(Self);check.Name := 'CheckBox1';check.Parent := ScrollBox5;check.Caption := rotulo;check.Tag := id;check.Top:=(linha * 17) - 17;check.Width:=120;check.Left:=(coluna * 160) - 160;end;procedure TfrmCadastrarImoveis.bloqueiaComponentes (acao: boolean);var  i: integer;begin  if not acao then  begin	for i:=0 to ComponentCount -1 do	begin	  if Components[i].ClassName = 'TEdit' then	  TEdit(Components[i]).Enabled := true;	end;  end else begin	for i:=0 to ComponentCount -1 do	begin	  if Components[i].ClassName = 'TEdit' then	  TEdit(Components[i]).Enabled := false;	end;  end;end;procedure TfrmCadastrarImoveis.FormClose(Sender: TObject;  var Action: TCloseAction);begin  Action   := caFree;  frmCadastrarImoveis := nil;end;procedure TfrmCadastrarImoveis.BitBtn1Click(Sender: TObject);begin  frmCadastrarImoveis.Close;end;procedure TfrmCadastrarImoveis.Image1Click(Sender: TObject);begin  if OpenPictureDialog1.Execute then  begin	Image1.Picture.LoadFromFile( OpenPictureDialog1.FileName );  end;  SpeedButton13.Enabled := true;end;procedure TfrmCadastrarImoveis.CheckBox5Click(Sender: TObject);begin  if CheckBox5.Checked then  begin	Edit18.Enabled := true;	UpDown5.Enabled := true;	Label27.Enabled := true;  end else begin	Edit18.Enabled := false;	UpDown5.Enabled := false;	Label27.Enabled := false;	Edit18.Text := '0';  end;end;procedure TfrmCadastrarImoveis.Timer1Timer(Sender: TObject);var	x1, x2, y1, y2, pulo: integer;	sql01: string;begin  // preenchendo a ComboBox: Tipo de imóvel  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_tipo';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  ZQuery1.First;  While Not ZQuery1.Eof do  begin	ComboBox1.Items.Add( ( ZQuery1.FieldByName('descricao').Value ) );	ZQuery1.Next;  end;  // preenchendo a ComboBox: Estado  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_estados';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  ZQuery1.First;  While Not ZQuery1.Eof do  begin	ComboBox5.Items.Add( ( ZQuery1.FieldByName('uf').Value ) );	ZQuery1.Next;  end;  // Dependencia  // preenchendo as dependencias do imovel  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_dependencias';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  x1 := 1;  y1 := 1;  ZQuery1.First;  while not ZQuery1.EOF do  begin	CheckBoxDependencia( ZQuery1.FieldByName('descricao').Value, ZQuery1.FieldByName('id').Value, y1, x1);	if (y1 = 4) then	begin	  y1 := 1;	  inc(x1);	end else begin	inc(y1);	end;	ZQuery1.Next;  end; // fim do while  // Detalhes  ZQuery1.Active := false;  ZQuery1.SQL.Clear();  sql01 := 'select *from tb_imovel_dados';  ZQuery1.SQL.Add( sql01 );  ZQuery1.Open;  ZQuery1.Active := true;  x1 := 1;  y1 := 1;  ZQuery1.First;  while not ZQuery1.EOF do  begin	CheckBoxDetalhes( ZQuery1.FieldByName('descricao').Value, ZQuery1.FieldByName('id').Value, y1, x1);	if (y1 = 4) then	begin	  y1 := 1;	  inc(x1);	end else begin	inc(y1);	end;	ZQuery1.Next;  end; // fim do while  Timer1.Enabled := false;  frmPrincipal.query := false;end;procedure TfrmCadastrarImoveis.FormShow(Sender: TObject);begin  Timer1.Enabled := true;  {processando}  frmPrincipal.query := true;end;procedure TfrmCadastrarImoveis.Button1Click(Sender: TObject);var	x: integer;	lista: string;beginlista:='';for x:=0 to ComponentCount - 1 do	if Components[x].ClassType = TCheckBox then		if TCheckBox(Components[x]).Checked then			begin			if lista <> '' then				lista:=lista + #13;			lista:=lista + TCheckBox(Components[x]).Caption;			end;if lista <> '' then	ShowMessage(lista);end;end.

 

Bom, eu tenho dois procedimentos que criam CheckBox em tempo de execução... Tudo funciona certinho.

 

Eu usei um exemplo que o Márcio me passou para capturar os CheckBox marcados que funcionou em partes. Como eu tenho dois procedimentos, eu preciso de dois botões, que ao clicar ele pega os CheckBox de um dos grupos.

 

No caso do Button ai no código, ele esta pegando dos dois grupos... Eu preciso que pegue somente de um dos grupos

 

Espero que tenha entendido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso como é feita a divisão dos grupos???

 

de forma bem clara Valdiney ...

 

o que você gostaria de fazer???

 

seria pegar todas as checkbox selecionadas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso como é feita a divisão dos grupos???

Se você reparar no código, tem dois procedimentos que criam os CheckBox
procedure TfrmCadastrarImoveis.CheckBoxDependencia(rotulo: string; id, coluna, linha: integer);var	check: TCheckBox;begincheck:=TCheckBox.Create(Self);check.Parent := ScrollBox4;check.Caption := rotulo;check.Tag := id;check.Top:=(linha * 17) - 17;check.Width:=120;check.Left:=(coluna * 160) - 160;end;procedure TfrmCadastrarImoveis.CheckBoxDetalhes(rotulo: string; id, coluna, linha: integer);var	check: TCheckBox;begincheck:=TCheckBox.Create(Self);check.Name := 'CheckBox1';check.Parent := ScrollBox5;check.Caption := rotulo;check.Tag := id;check.Top:=(linha * 17) - 17;check.Width:=120;check.Left:=(coluna * 160) - 160;end;
Creio que eu devo diferenciar aí... Tipo, atribuir um nome nos CheckBox, para depois pesquisar dentre eles.

seria pegar todas as checkbox selecionadas?[/b]

Como eu tenho dois procedimentos... Agora eu quero criar dois botões distintos para pegar o que foi selecionado em cada procedimento.Conseguiu entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte...

 

 

procedure TFrmMenu.SpeedButton1Click(Sender: TObject);var i : Interger;begin  For i := 0 to Components.Count - 1 do  Begin	 if Components[i].ClassName = 'TCheckBox' then	 Begin		If (TCheckBox(Components[i]).Parent = ScrollBox4) and (TCheckBox(Components[i]).State = cbChecked) then		  showmessage('Ta no grupo 1');		If (TCheckBox(Components[i]).Parent = ScrollBox5) and (TCheckBox(Components[i]).State = cbChecked) then		  showmessage('Ta no grupo 2');	 end;  End;end;

 

veja se isso te ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer o seguinte:

 

A função que busca os CheckBox marcados, bastaria apenas mudar 4 linhas, que seria:

 

ScrollBox4

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ScrollBox4.ComponentCount - 1 do	if ScrollBox4.Components[x].ClassType = TCheckBox then		if TCheckBox(ScrollBox4.Components[x]).Checked then			begin			if lista <> '' then				lista:=lista + #13;			lista:=lista + TCheckBox(ScrollBox4.Components[x]).Caption;			end;if lista <> '' then	ShowMessage(lista);

ScrollBox5

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ScrollBox5.ComponentCount - 1 do	if ScrollBox5.Components[x].ClassType = TCheckBox then		if TCheckBox(ScrollBox5.Components[x]).Checked then			begin			if lista <> '' then				lista:=lista + #13;			lista:=lista + TCheckBox(ScrollBox5.Components[x]).Caption;			end;if lista <> '' then	ShowMessage(lista);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer o seguinte:

 

A função que busca os CheckBox marcados, bastaria apenas mudar 4 linhas, que seria:

 

ScrollBox4

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ScrollBox4.ComponentCount - 1 do	if ScrollBox4.Components[x].ClassType = TCheckBox then		if TCheckBox(ScrollBox4.Components[x]).Checked then			begin			if lista <> '' then				lista:=lista + #13;			lista:=lista + TCheckBox(ScrollBox4.Components[x]).Caption;			end;if lista <> '' then	ShowMessage(lista);

ScrollBox5

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ScrollBox5.ComponentCount - 1 do	if ScrollBox5.Components[x].ClassType = TCheckBox then		if TCheckBox(ScrollBox5.Components[x]).Checked then			begin			if lista <> '' then				lista:=lista + #13;			lista:=lista + TCheckBox(ScrollBox5.Components[x]).Caption;			end;if lista <> '' then	ShowMessage(lista);

 

Márcio,

Deste modo ele não mostrou nada... Eu seleciono os checkbox e ao clicar no botão ele não mostra a lista de checks marcados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. Então no caso somente valida se o parent é aquele mesmo, desta forma:

 

ScrollBox4

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ComponentCount - 1 do	if Components[x].ClassType = TCheckBox then		if TCheckBox(Components[x]).Parent = ScrollBox4 then			if TCheckBox(Components[x]).Checked then				begin				if lista <> '' then					lista:=lista + #13;				lista:=lista + TCheckBox(Components[x]).Caption;				end;if lista <> '' then	ShowMessage(lista);

ScrollBox5

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ComponentCount - 1 do	if Components[x].ClassType = TCheckBox then		if TCheckBox(Components[x]).Parent = ScrollBox5 then			if TCheckBox(Components[x]).Checked then				begin		if lista <> '' then					lista:=lista + #13;				lista:=lista + TCheckBox(Components[x]).Caption;				end;if lista <> '' then	ShowMessage(lista);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. Então no caso somente valida se o parent é aquele mesmo, desta forma:

 

ScrollBox4

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ComponentCount - 1 do	if Components[x].ClassType = TCheckBox then		if TCheckBox(Components[x]).Parent = ScrollBox4 then			if TCheckBox(Components[x]).Checked then				begin				if lista <> '' then					lista:=lista + #13;				lista:=lista + TCheckBox(Components[x]).Caption;				end;if lista <> '' then	ShowMessage(lista);

ScrollBox5

 

var	x: integer;	lista: string;beginlista:='';for x:=0 to ComponentCount - 1 do	if Components[x].ClassType = TCheckBox then		if TCheckBox(Components[x]).Parent = ScrollBox5 then			if TCheckBox(Components[x]).Checked then				begin		if lista <> '' then					lista:=lista + #13;				lista:=lista + TCheckBox(Components[x]).Caption;				end;if lista <> '' then	ShowMessage(lista);

Redondinho!

valeu guru...

;)

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.