Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 11-11-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
¿¿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.
Responder Con Cita
  #3  
Antiguo 11-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 11-11-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
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.
Responder Con Cita
  #5  
Antiguo 11-11-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:
haffo comentó:
¿Qué hago para dividir entre 10 ?. Aún soy novato, jejeje.
En mis tiempos esto lo enseñaban en la primaria

// Saludos
Responder Con Cita
  #6  
Antiguo 11-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
¿Donde puedo obtener el edit de las RxLibs?, porque no hay otra forma de hacerlo con el edit normal, verdad?
Responder Con Cita
  #7  
Antiguo 11-11-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
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.
Responder Con Cita
  #8  
Antiguo 11-11-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
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.
Responder Con Cita
  #9  
Antiguo 11-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Unhappy

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.
Responder Con Cita
  #10  
Antiguo 11-11-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:
haffo comentó:
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.
Bueno, yo no he puesto ningún código. Ahora que no sabemos que tienes en el evento OnChange del trackbar. Quizá hay un conflicto de intereses :

el OnChange del trackbar genera el OnChange del Edit que a su vez genera el del trackbar

// Saludos
Responder Con Cita
  #11  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Alguna sugerencia por favor. Necesito solucionar este problema. Gracias.
Responder Con Cita
  #13  
Antiguo 12-11-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
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;
Y si tu versión de Delphi no tiene la función StrToFloatDef la defines tú mismo:

Código:
function StrToFloatDef(S: String; Def: Double): Double;
begin
  try
    Result := StrToFloat(S);
  except
    Result := Def;
  end;
end;
// Saludos
Responder Con Cita
  #14  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Gracias Roman pero me da un error:

"[Error] Final.pas(145): Undeclared identifier: 'Position'.

En los dos procedimientos.
Responder Con Cita
  #15  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Puede ser que sea porque tengo una LMDTrackbar ??
Responder Con Cita
  #16  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
Ya lo he arreglado . Gracias por todo.
Responder Con Cita
  #17  
Antiguo 12-11-2003
haffo haffo is offline
Miembro
 
Registrado: oct 2003
Posts: 54
Poder: 21
haffo Va por buen camino
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.
Responder Con Cita
  #18  
Antiguo 12-11-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:
haffo comentó:
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.
Yo no sé qué tantas diferencias haya entre el TrackBar estándar y el que está usando aunque este último tendría que añadir funcionalidad más que alterar la ya existente. Tal como te puse el código funciona sin ningún problema. Lo de que el trackbar se ponga en cero cuando escribes 0 es totalmente lógico pues así es como está diseñado ya que tú deseas que se actualice en el evento OnChange del Edit y este evento ocurre ante cualquier modificación del edit. Es imposible que el evento prediga lo que finalmente va a escribir el usuario. Si el usuario desea escribir 1.8, al escribir el 1 el evento no tiene manera de saber que en realidad quiere 1.8 y estando 1 dentro del rango permitido coloca al trackbar en dicha posición.

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
Responder Con Cita
  #19  
Antiguo 12-12-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por LuisHatake Ver Mensaje
hola!
Bienvenido, por favor, lee nuestra guía de estilo, gracias.
Responder Con Cita
  #20  
Antiguo 12-12-2017
LuisHatake LuisHatake is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 14
Poder: 0
LuisHatake Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 21:37:13.


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