trackbar con numeros reales
Hola a todos. Tengo una trackbar con números enteros desde el -10 al 10 pero necesito cambiarla para tener valores reales desde el -2 al 2 (-2, -1.9, -1.8, -1.7........., 1.7,1.8,1.9,2). ¿Se puede hacer con trackbar, además esta es una de la librería LMD?. Si no se puede tendré que hacerlo con una scrollbar, si es que se puede claro.
Gracias por anticipado , un saludo a todos. |
¿¿Y si lo trabajas del -20 al +20 y el valor lo divides por 10??
|
El problema es el siguiente, es que tengo la trackbar sincronizada con un edit, y el procedimiento del edit es el siguiente:
procedure TForm1.Edit3Change(Sender: TObject); begin LMDTrackBar1.Position:=StrToIntDef(edit3.text, LMDTrackBar1.Position); ganancia := LMDTrackBar1.Position; end; ¿Qué hago para dividir entre 10 ?. Aún soy novato, jejeje. Gracias. |
Te recomiendo, en lugar de usar un TEdit, utilizar un TCurrencyEdit de las RxLibs, y en ese caso:
Código:
procedure TForm1.Edit3Change(Sender: TObject); Saludos! |
Cita:
// Saludos |
¿Donde puedo obtener el edit de las RxLibs?, porque no hay otra forma de hacerlo con el edit normal, verdad?
|
Si puedes hacerlo con un edit normal, con el CurrencyEdit, será mucho mas fácil y estético.
Código:
procedure TForm1.Edit3Change(Sender: TObject); Creo que en las últimas versiones de Delphi, apareció la funcion StrToFloatDef, yo trabajo en Delphi 5 así que no te lo puedo confirmar. Román: :D :D :D Saludos! |
Me olvidaba, en la página de Cadetill http://www.clubdelphi.com/users/cadetill/compoutil.php, tienes las direcciones para bajar las RxLib´s.
Saludos! |
He probado el código que has puesto Román pero al pulsar la trackbar se me va directamente al valor 20. Y en el edit me pone un 20. :(
|
Cita:
el OnChange del trackbar genera el OnChange del Edit que a su vez genera el del trackbar // Saludos |
:confused: Ufff que lio, jeje, es cierto el código era de delphi.com.ar, lo siento. el código es el siguiente:
procedure TForm1.Edit3Change(Sender: TObject); begin LMDTrackBar1.Position:=Trunc(StrToFloatDef(edit3.text, LMDTrackBar1.Position div 10)*10); ganancia := LMDTrackBar1.Position div 10; end; procedure TForm1.LMDTrackBar1Change(Sender: TObject); begin edit3.text:=inttostr(LMDTrackbar1.position); ganancia:=LMDtrackbar1.Position; end; El evento de la trackbar es LMDtrackbar1change y el del edit edit3change. Tendré que dividir por 10 el procedure del edit 3, como lo hago? es que es una string. Gracias por tu ayuda. |
Alguna sugerencia por favor. Necesito solucionar este problema. Gracias.
|
Código:
TrackBar.Min := -20; Código:
function StrToFloatDef(S: String; Def: Double): Double; |
Gracias Roman pero me da un error:
"[Error] Final.pas(145): Undeclared identifier: 'Position'. En los dos procedimientos. |
Puede ser que sea porque tengo una LMDTrackbar ??
|
Ya lo he arreglado . Gracias por todo.
|
Aunque sigue habiendo un pequeño problema. Y es que cuando modifico el edit la trackbar no cambia. He probado con el evento onexit en el edit pero no va. Si pongo el evento onchange cuando pulso el 0 para poner 0.3 por ejemplo se va directamente al cero pero no al 0.3.
|
Cita:
Si no quieres este comportamiento entonces usa el evento OnExit y, a menos que la componente que usas haga una incorrecta implementación de este evento no veo porque ha de fallar. // Saludos |
Ya funciona bien, gracias por todo. El problema era que al introducir los datos en el edit yo ponía 1.3 por ejemplo para poner la parte decimal no es con el . sino con la , . Es decir hay que poner 1,3. Lo siento por mi torpeza.
:) GRACIAS !!! Ahora tengo otro problema, jejeje, para variar. Lo tengo en otro hilo en el foro Varios, si os animais.......... |
Hola a todos de nuevo. Sigo teniendo un pequeño problema con la dichosa trackbar. He modificado un poco el programa, ahora lo que necesito es una trackbar que va de 0 a 20, pero en realidad quiero que me represente en un edit de 0 a 2, es decir, dividir el valor de la trackbar por 10. El problema es que cuando en la trackbar intento poner el valor 1 o el 2 no me deja. ¿por qué?. El código es el siguiente:
procedure TForm1.LMDTrackBar1Change(Sender: TObject); begin edit3.text:=floattostr((LMDTrackbar1.position)/10); ganancia:=LMDtrackbar1.Position; procedure TForm1.Edit3Change(Sender: TObject); begin LMDTrackBar1.Position:=StrToIntDef(edit3.text, LMDTrackBar1.Position); ganancia := LMDTrackBar1.Position; end; donde ganancia es: integer porque este valor lo mando a un programa en 'C' donde allí ya lo divido por 10. Gracias de antemano. Saludos. |
Fíjate que en una de las instrucciones divides el valor por 10, pero cuando le pasas el valor no lo multiplicas por 10 como lo habíamos visto anteriormente.
Saludos! |
El problema es que cuando pongo:
LMDTrackBar1.Position:=StrToIntDef(edit3.text, LMDTrackBar1.Position)*10; En el track bar solo me permite poner valores 0,1 ó 2. Y en el edit solo me reconoce el 0 el 1 y el 3. |
Estoy haciendo mal la operacion de multiplicar ???
|
Una ayudita por favor
|
Cita:
Piensalo detenidamente, no es nada complicado, solo es un poco de lógica. Saludos! |
¿A qué te refieres con un valor correcto?. Si quiero introducir un 1,3, al pulsar el 1, la barra se me pone en el 1, pero al pulsar la coma se me va al 2.
|
Por favor necesito vuestra ayuda, no puedo arreglar esto. El código es el siguiente, probarlo a ver si a ustedes si os funciona.
procedure TForm1.LMDTrackBar1Change(Sender: TObject); begin edit3.text:=floattostr((LMDTrackbar1.position)/10); ganancia:=LMDtrackbar1.Position; procedure TForm1.Edit3Change(Sender: TObject); begin LMDTrackBar1.Position:=StrToIntDef(edit3.text, LMDTrackBar1.Position); ganancia := LMDTrackBar1.Position; end; donde ganancia es: integer porque este valor lo mando a un programa en 'C' donde allí ya lo divido por 10. Gracias de antemano. Saludos. |
Cita:
|
Hola Casimiro Notevi, muchas gracias por la recomendación. me encuentro leyendo la guía y espero acostumbrarme pronto a realizar las preguntas de la mejor manera, de antemano muchas gracias por la observación.
|
Gracias a ti, por tu colaboración ^\||/
|
La franja horaria es GMT +2. Ahora son las 02:30:10. |
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