Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Boton segun valor de un combobox (https://www.clubdelphi.com/foros/showthread.php?t=66818)

Litnoiz 13-03-2010 04:55:12

Boton segun valor de un combobox
 
Veamos, estoy haciendo una aplicacion y tengo un combobox y un boton. Quiero que ese boton, segun el indice escogido en el combobox, me haga la accion asociada en el boton pero a paneles distintos (por ejemplo limpiar los tedits). Pongo lo poco que tengo asi se ve mejor mi duda (todavia no manejo las llamadas y eventos...).

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
if(combobox2.ItemIndex=0) then
begin
llamar al boton y que al pulsarlo me limpie los edits del panel1
end;

if(combobox2.ItemIndex=1) then
begin
llamar al boton y que al pulsarlo me limpie los edits del panel2
end;

if(combobox2.ItemIndex=1) then
begin
llamar al boton y que al pulsarlo me limpie los edits del panel2
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
limpiar edits(panelX);
end;

que seria, mandarle un parametro a la funcion segun el indice para que sepa que panel vaciar o...a ver si alguien me ayuda. Ya de paso, como lo haria con un case en lugar de los "if"?.

Un Saludo. Buenas noches.

BrunoBsso 13-03-2010 12:09:14

¡BIENVENIDO AL FORO!
Te recomiendo que leas cómo usar las etiquetas de los lenguajes (etiquetas vB) para que tus códigos se vean más bonitos y entendibles.
Vamos a solucionarte el problema.
Yo en tu lugar haría un nuevo procedimiento que limpie X panel y lo usaría en el evento OnClick del botón.
Veamos uno:
Código Delphi [-]
procedure LimpiarEdits(var Panel:TPanel);
var
  I:Integer;
begin
  with Panel do begin //Para evitar escribir "Panel." en cada línea
    for I := 0 to ControlCount-1 do begin
      //Voy desde el control en la posición 0 en el panel hasta el control final
      if (Controls[i] is TEdit) then
        //Verifico si es un TEdit por cada control que tenga el panel
        //Si es, hago CASTING (así se llama) y lo limpio
        TEdit(Controls[i]).Text:='';
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  case ComboBox2.ItemIndex of
    0: LimpiarEdits(Panel1);
    1: LimpiarEdits(Panel2);
    2: LimpiarEdits(Panel3);
  end;
end;
Ahí estaba usando 3 TPanel con 3 TEdit cada uno.
Espero que sea sencillo de aprender. Cualquier mínima duda, avisanos y te la resolvemos con gusto :)
Nos vemos!

Litnoiz 13-03-2010 23:13:18

Muchisimas gracias por la respuesta! Estoy empezando y todavia no me llevo bien con el codigo y otras cosas. Gracias por el enlace, le echaré un vistazo a la información aqui disponible. Un saludo y gracias de nuevo. ; )

BrunoBsso 13-03-2010 23:59:53

No hay por qué.
Acá hasta los más antiguos y sabios aprenden, y los más nuevos lo hacemos mucho más.
Me alegro que te haya servido mi ayuda :D :D :D :D
Saludos!


La franja horaria es GMT +2. Ahora son las 04:46:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi