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. |
La franja horaria es GMT +2. Ahora son las 16:01:54. |
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