PDA

Ver la Versión Completa : uso CheckBox con 3 opciones


arespremium
25-08-2007, 03:21:26
Mi formulario
ver imagen (http://www.subirimagenes.com/imagenes/previo/thump_1385220checkbox.jpg)

al marca una casilla muestre en el label el resultado al darle click en el boton

opcion 1
opcion 2
opcion 3

ejemplo:
se marca una casilla: "opcion 1"
se marca dos casilla y dira en el label: "opcion 1 , opcion 2"
se marca tres casillas: "opcion 1 , opcion 2 , opcion 3"

es eso

este codigo es un boceto

procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked and CheckBox2.Checked
Label1.Caption := 'opcion 1' , 'opcion 2'
if CheckBox1.Checked or CheckBox2.Checked
Label1.Caption := 'opcion 1'
end;

BlueSteel
25-08-2007, 03:55:05
puedes definir una variable paso

vPaso : String;
vPaso := ' ';
if Opcion1.Cheked= True Then vPaso := Concat(vPaso,' Opcion1 ');
if Opcion2.Cheked= True Then vPaso := Concat(vPaso,' Opcion2 ');
if Opcion3.Cheked= True Then vPaso := Concat(vPaso,' Opcion3 ');

label1.caption := vPaso;


puede k tenga algun error... pero lo hice de memoria:p

Caray
25-08-2007, 04:51:10
Pues mira Arespremium, lo que yo te puedo recomendar sin saber mucho y con mucho codigo, sería esto:
Hacer un if para todos los caso:
if((opcion1.cheked=true) AND (opcion2.cheked=true) AND (opcion3.cheked=true)) then
label1.caption:= 'opcion1, opcion2 y opcion3';
Y asi para todos
pero como te digo es mucho codigo.

egostar
25-08-2007, 05:05:25
Haber que te parece esto:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Label1: TLabel;
Button1: TButton;
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Check1,Check2,Check3: String;

implementation

{$R *.DFM}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
If CheckBox1.Checked = True then
Check1 := 'Opción 1'
else Check1 := '';
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
If CheckBox2.Checked = True then
Check2 := 'Opción 2'
else Check2 := '';
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
If CheckBox3.Checked = True then
Check3 := 'Opción 3'
else Check3 := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := Check1+' '+Check2+' '+Check3
end;

end.



Salud OS

CoCaInE
26-08-2007, 01:03:48
[quote=BlueSteel;226030]puedes definir una variable paso

vPaso : String;
vPaso := ' ';
if Opcion1.Cheked= True Then vPaso := Concat(vPaso,' Opcion1 ');
if Opcion2.Cheked= True Then vPaso := Concat(vPaso,' Opcion2 ');
if Opcion3.Cheked= True Then vPaso := Concat(vPaso,' Opcion3 ');

label1.caption := vPaso;


Creo que va mejor como dice nuestro companero Blue Steel otra opcion seria usar los If anidados Ej:

vPaso : String;
vPaso := ' ';
if Opcion1.Cheked Then
vPaso :=Opcion1
Else if Opcion2.Cheked Then
vPaso := vPaso+Opcion2
Else if Opcion3.Cheked Then
vPaso+Opcion3;
label1.caption := vPaso;

Delphius
26-08-2007, 05:26:13
En realidad, la opción que muestra egostar es la más certera. Ofrece un mejor dinamismo y una mayor comprensión. La lógica está correctamente distribuída y no concentrada en un solo punto. Y si observan bien el código de egostar, a pesar de ser simple, puede ser mejorado. Hay un denominador común en el código y puede aprovecharse los "eventos compartidos" para reducirlo.

Saludos,