Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
como conseguir introducir valores negativos en un edit

Hola a todos, pues eso que tengo un campo edit que varía al unísono con una trackbar (que por cierto como ya puse en otro post necesito cambiarle el color, si alguien lo sabe..... ), el caso es que la trackbar tiene un rango de -10 a 10, entonces cuando voy a poner en el edit un número negativo, me da error "- is nos a integer value".

Gracias.
Responder Con Cita
  #2  
Antiguo 24-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Un TEdit esta diseñado para aceptar Texto, por lo tanto puede aceptar fácilmente un string que contenga la conversión a texto de un número entero. El problema seguramente surge cuando conviertes el dato... ¿Cómo lo haces?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 24-10-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola, tengo la impresión que estás utilizando el evento OnChange del Edit u otro relacionado con teclas pero mal configurado.
El evento OnChange no lo puedes usar puesto que en cuanto introduzcas el signo '-' te lanzará el error que te aparece.
Creo que quieres mover el trackbar al valor introducido en el edit para ello podrías usar un botón para cuando coloques el número completo disparar el evento OnClick, algo como:
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
        trackbar1.Position:=StrToInt(edit1.Text);
end;
o, por ejemplo con la tecla enter:
Código:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if key=vk_return then trackbar1.Position:=StrToInt(edit1.Text);
end;
Espero que ahí ande tu solución.
Saludos
Responder Con Cita
  #4  
Antiguo 24-10-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Seguramente estas introduciendo un espacio antes del número... y no es lo mismo "- 4" (no es un entero válido) que "-4" (si es un entero válido).

Seguramente se debe a eso...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 24-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
delphi.com.ar
El problema seguramente surge cuando conviertes el dato

Ruben_Cu
tengo la impresión que estás utilizando el evento OnChange del Edit u otro relacionado con teclas pero mal configurado

jachguate
Seguramente estas introduciendo un espacio antes del número

¿Quién da más señores? ¡Hagan sus apuestas!

Responder Con Cita
  #6  
Antiguo 24-10-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Gracias por contestar

procedure TForm1.Edit3Change(Sender: TObject);
begin
TrackBar1.Position:=strtoint(edit3.text);
ganancia := TrackBar1.Position;

Este es el código que tengo puesto, donde ganancia es una variable que no tiene nada que ver, es raro porque tengo varios scrollbar de la misma manera y funcionan bien aunque estos no tienes valores negativos.
Responder Con Cita
  #7  
Antiguo 24-10-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Cita:
Posteado originalmente por roman
delphi.com.ar
El problema seguramente surge cuando conviertes el dato

Ruben_Cu
tengo la impresión que estás utilizando el evento OnChange del Edit u otro relacionado con teclas pero mal configurado

jachguate
Seguramente estas introduciendo un espacio antes del número

¿Quién da más señores? ¡Hagan sus apuestas!

¿Y tú no piensas apostar en esta?
Responder Con Cita
  #8  
Antiguo 24-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por Ruben_Cu
¿Y tú no piensas apostar en esta?
¡No! Yo sólo soy el 'dealer'

¡El ganadoooor! Ruben_Cu

// Saludos
Responder Con Cita
  #9  
Antiguo 24-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por haffo
es raro porque tengo varios scrollbar de la misma manera y funcionan bien aunque estos no tienes valores negativos.
Exacto! Es como dice Ruben_Cu, dado que sólo tienes números positivos en el evento OnChange el valor de Edit3.Text siempre es un número correcto (bueno, casi siempre, prueba a borrar el texto del Edit3) mientras que con números negativos, al introducir el signo '-' la conversión StrToInt falla porque '-' no es un número.

Creo que en tu lugar usaría la función StrToIntDef:

TrackBar1.Position:=StrToIntDef(edit3.text, TrackBar.Min);

Esta función regresa el segundo parámetro cuando la conversión falla sin marcarte error. De esta manera, cuando comienzas a introducir el número negativo o borras el texto del edit, el Trackbar se ajustará su posición al principio.

// Saludos
Responder Con Cita
  #10  
Antiguo 24-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Como recomendación para este tipo de datos, utilizá algún componente que solo te deje ingresar números (Como el TCurrencyEdit de las Rx, o puedes buscar en mi página un TIntEdit, que es para este tipo de datos)
Siempre que conviertas strings a números, que pueda llegar a producir un error, encargate de capturar este error, o si no te interesa el error puedes usar directamente alguna función con Default Value como la que propone Román (StrToIntDef)... o puedes validar que la entrada sean solo números, en lugar de producir una excepción innecesaria.
Esta funcioncita es un vestigio de mis orígenes en VB:
Código:
function IsNumber(Value: string): Boolean;
var fRes : Extended;
begin
  Result := TextToFloat(PChar(Value), fRes, fvExtended);
end;

{$HINTS OFF}
function IsInteger(Value: string): Boolean;
var
  iDummy,
  iErr : Integer;
begin
  Val(Value, iDummy, iErr);
  Result := (iErr = 0);
end;
{$HINTS ON}
Para los Competidores:
Vale aclarar que mi punto tambien puede darse como ganador... pues ¿En que momento se produce el error?.... mas que obvia la respuesta
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 24-10-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Por fin señores, ya lo tengo, al final he puesto lo que dijo Roman pero modificado:

TrackBar1.Position:=StrToIntDef(edit3.text, TrackBar1.Position);

Position en vez de Min, y funciona perfectamente .

Gracias de nuevo, nunca me cansaré de dárosla.



En cuanto a lo de cambiar el color del trackbar, sabeis cómo hacerlo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:55:29.


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
Copyright 1996-2007 Club Delphi