Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   condicion IF (https://www.clubdelphi.com/foros/showthread.php?t=5014)

haffo 05-11-2003 23:24:49

condicion IF
 
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

Cita:

haffo comentó:
Código:


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

Cita:

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

Cita:

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


La franja horaria es GMT +2. Ahora son las 00:48:33.

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