PDA

Ver la Versión Completa : ayuda con evento on change de un combobox


josi
09-08-2008, 05:01:39
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 codigobegin
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:


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í:


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



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
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.

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