FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
¿¿Y si lo trabajas del -20 al +20 y el valor lo divides por 10??
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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); begin LMDTrackBar1.Position:= Trunc(Edit3.Value*10); ganancia := LMDTrackBar1.Position div 10; end; Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
|||
|
|||
¿Donde puedo obtener el edit de las RxLibs?, porque no hay otra forma de hacerlo con el edit normal, verdad?
|
#7
|
||||
|
||||
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); begin LMDTrackBar1.Position:=Trunc(StrToFloatDef(edit3.text, LMDTrackBar1.Position div 10)*10); ganancia := LMDTrackBar1.Position div 10; end; 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: Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#9
|
|||
|
|||
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.
|
#10
|
||||
|
||||
Cita:
el OnChange del trackbar genera el OnChange del Edit que a su vez genera el del trackbar // Saludos |
#11
|
|||
|
|||
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. |
#12
|
|||
|
|||
Alguna sugerencia por favor. Necesito solucionar este problema. Gracias.
|
#13
|
||||
|
||||
Código:
TrackBar.Min := -20; TrackBar.Max := 20; ... procedure TForm1.TrackBarChange(Sender: TObject); var Value: Double; begin Value := TrackBar.Position / 10; Edit.Text := FloatToStr(Value); end; procedure TForm1.EditChange(Sender: TObject); var Value: Double; begin Value := StrToFloatDef(Edit.Text, -10); if (Value >= -2) and (Value <= 2) then TrackBar.Position := Trunc(10*Value); end; Código:
function StrToFloatDef(S: String; Def: Double): Double; begin try Result := StrToFloat(S); except Result := Def; end; end; |
#14
|
|||
|
|||
Gracias Roman pero me da un error:
"[Error] Final.pas(145): Undeclared identifier: 'Position'. En los dos procedimientos. |
#15
|
|||
|
|||
Puede ser que sea porque tengo una LMDTrackbar ??
|
#16
|
|||
|
|||
Ya lo he arreglado . Gracias por todo.
|
#17
|
|||
|
|||
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.
|
#18
|
||||
|
||||
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 |
#19
|
||||
|
||||
Bienvenido, por favor, lee nuestra guía de estilo, gracias.
|
#20
|
|||
|
|||
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.
|
|
|
|