PDA

Ver la Versión Completa : condicion IF


haffo
05-11-2003, 23:24:49
Hola a todos. Mi problema es el siguiente. Tengo un campo edit1 y un radiogroup2 con cuatro radiobuttons (9600 14400 28800 43200), al pulsar un radiobuttons un valor entero se coloca en el campo edit1 y viceversa, es decir, si coloco un valor en el edit1 el radiobutton asociado a ese numero se activa. Bien hasta ahora funciona perfectamente, pero quiero hacer que en el caso de que se introduzca en el edit1 un valor que no sea 9600 o 14400 o 22800 o 43200, saque un mensaje por pantalla (que ya lo tengo hecho) y se coloque por defecto en el radiobutton perteneciente al 9600, y que a su vez el campo edit se ponga en 9600. Tengo el siguiente codigo hecho pero cuando introduzco el primer digito en el edit1 ya me sale el mensaje anteriormente dicho. El código es el siguiente.

Gracias por anticipado.


procedure TForm1.Edit1Change(Sender: TObject);
begin
RadioGroup2.ItemIndex := TStringList(RadioGroup2.Items).IndexOf(Edit1.Text);
muestreo:=strtoint(edit1.text);

if (muestreo<>9600) or (muestreo<>14400) or (muestreo<>18800) or (muestreo<>43200) then
begin
showmessage('Frecuencia de muestreo no disponible, se usará 9600 Hz por defecto.');
muestreo:=9600
end
end;



procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
Edit1.Text :=RadioGroup2.Items[RadioGroup2.ItemIndex];
muestreo:=strtoint(edit1.text);
end;

roman
06-11-2003, 00:06:39
Por lo mismo que ya te diste cuenta no puedes usar el evento OnChange. La validación tendría que ser hasta que el usuario termine de escribir el dato.

Te convendría más usar el evento OnExit del Edit.

// Saludos

haffo
06-11-2003, 01:17:26
Si lo pongo onexit no me hace nada :confused: , es decir, pongo un valor en el edit y no hace nada. Cuando me voy a otro edit por ejemplo me salta el mensaje aunque introduzca un valor correcto.

roman
06-11-2003, 06:08:29
haffo comentó:


if
(muestreo<>9600) or (muestreo<>14400) or
(muestreo<>18800) or (muestreo<>43200)
then
begin
{ mensaje de error }
end;


La falla está aquí. Te queda de tarea estudiar por qué.

// Saludos

torito
06-11-2003, 15:35:58
EStoy de acuerdo con Roman tu bronca esta en el IF, esta mal planeado solo checa un poco lo de matematicas lógicas y encontraras la respuesta a tu bronca, este tipo de error es de lo mas común y como para ti aveces es invisible hasta que otro checa tu codigo... saludos

tip: no es lo mismo un OR que un AND

roman
06-11-2003, 16:11:52
torito comentó:
tip: no es lo mismo un OR que un AND

¡Hey! No vale soplar en el examen!

:D

torito
06-11-2003, 16:20:00
jajajaja solo fue un tip, jejeje

haffo
06-11-2003, 21:32:24
Hola de nuevo. Jejeje es verdad era una AND, las prisas son malas consejeras. Ya he solucionado el problema lo único que me falta es qué instrucción debo poner si quiero que al mostrar el mensaje de error (que coloca la variable muestreo en 9600) se me active el radiobutton 9600.

GRACIAS.

torito
06-11-2003, 21:48:04
intentale con
form1.ActiveControl:=radiobutton6;

saludos

roman
06-11-2003, 21:49:29
haffo comentó:
lo único que me falta es qué instrucción debo poner si quiero que al mostrar el mensaje de error (que coloca la variable muestreo en 9600) se me active el radiobutton 9600.


Usa la propiedad ItemIndex del RadioGroup.

Ahora que, aunque es cuestión de gustos, yo en lugar de ponerlo en 9600 dejaría el RadioGroup tal como esté en esos momentos y pondría en Edit el valor correspondiente. Esto es, si el usuario había seleccionado 1440 y escribe un dato incorrect, que el Edit regrese a 1440

// Saludos

torito
06-11-2003, 22:22:19
ahhhh caray, ya me confundi... estas trabajando con radiogroup o con radiobuttons??? por que si es con radiogrop sigue el consejo de roman, pero si es con radiobuttons te aconsejaria que siguieras mi sugerencia, o si de plano nada mas es el uso del cheked del radiobutton deria asi:

radiobutton.Cheked:=true;

y asunto arreglado

saludos

haffo
06-11-2003, 22:36:04
Eran un radiogroup, ya está todo solucionado, gracias a todos.

Un saludo. :)