Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda con evento on change de un combobox (https://www.clubdelphi.com/foros/showthread.php?t=59006)

josi 09-08-2008 05:01:39

ayuda con evento on change de un combobox
 
hola a todos.

tengo un form de pagos de prestamo
y hay una parte donde se indica el tipo de pago osea si es
efectivo, con cheke o targeta, entonces tngo dos edits uno es cantidad en efectivo y el otro es cambio y tengo un combobox donde se seleciona
el tipo de pago lo que quiero es que si seleciono efectivo el edit cantidad en efectivo se enfoque y el edit cambio se habilite ok eso lo hace muy bien, pero si seleciono otro tipo de pago en el combobox osea los edits antes mencionados se deben deshabilitar esto lo hace bien.El problema esta que cuando vuelvo a selecionar el tipo de pago en efectivo los edits no se vuelven a habilitar ni a enfocarse.



:confused:

tengo este codigo
Código Delphi [-]
begin
if ComboBox1.Text='efectivo'then
edit18.SetFocus; //editit cantidad en efe
edit17.Enabled:=true;// edit cambio
begin
if combobox1.Text='targeta'then
combobox2.Enabled:=true;
edit18.Enabled:=false;
edit17.Enabled:=false;
if combobox1.Text= 'cheke' then
combobox3.Enabled:=true;
edit18.Enabled:=false;
edit17.Enabled:=false;

end;
end;

No se preocupen por los calculos que ya lo hacen osea si el cambio es en efectivo y la cuota es de 1500 y me paga con 2000 el edit cambio muestra
lo que sobra 500

gracias......

dec 09-08-2008 05:08:27

Hola,

A primera vista parece un problema de sintaxis. Supongo que sabrás que del siguiente código:

Código Delphi [-]
if combobox1.Text= 'cheke' then
  combobox3.Enabled:=true;
edit18.Enabled:=false;
edit17.Enabled:=false;

... en caso de que se cumpla la condición, sólo se ejecutará la instrucción inmediatamente posterior, pero, no las siguientes, o, por mejor decir, las siguientes se ejecutarán se cumpla o no se cumpla la condición.

Igual no es ese el problema, pero, pudiera ser que tú quisieras conseguir algo así:

Código Delphi [-]
if combobox1.Text= 'cheke' then
begin
  combobox3.Enabled:=true;
  edit18.Enabled:=false; 
  edit17.Enabled:=false;
end;

En este caso agrupamos las instrucciones en un bloque "begin ... end", de modo que ninguna de ellas se ejecutará si no se cumple la condición, o viceversa, todas se ejecutarán si se cumple la condición. ¿Es eso o estoy equivocado? ;)

coso 09-08-2008 11:04:46

Hola, creo tambien que es como dice dec (y que aparte te falta Edit18.Enabled := true antes del Edit18.SetFocus). Tambien lo puedes hacer asi

Código Delphi [-]

edit17.Enabled := ComboBox1.Text = 'efectivo';
edit18.Enabled := ComboBox1.Text = 'efectivo';
ComboBox2.Enabled := ComboBox1.Text = 'targeta';
ComboBox3.Enabled := ComboBox1.Text = 'cheke';

if edit18.Enabled then edit18.SetFocus;
nada, una sugerencia de estilo ;)

Al González 09-08-2008 16:05:00

Off-topic
 
Josi, ¿qué idioma manejas en tu sistema? En caso de ser español / castellano, te aconsejaría escribir correctamente "tarjeta" y "cheque". Evita que los usuarios / clientes de tu aplicación se lleven una mala imagen del autor. ;)

Saludos.

Al.

Caral 09-08-2008 17:50:00

Hola
Un poco diferente, para mi mas legible.
Código Delphi [-]
case ComboBox1.ItemIndex of
     0 : begin  //efectivo
          edit18.SetFocus; 
          edit17.Enabled:=true;
         end;
     1 : begin //targeta
          combobox2.Enabled:=true;
          edit18.Enabled:=false;
          edit17.Enabled:=false;
         end;
     2 : begin //cheke
          combobox3.Enabled:=true;
          edit18.Enabled:=false;
          edit17.Enabled:=false;
         end;
Saludos


La franja horaria es GMT +2. Ahora son las 17:40:53.

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