Ir al contenido


Foto

como actualizo valores mientras se ejecuta el loop while?


  • Por favor identifícate para responder
5 respuestas en este tema

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 mayo 2013 - 03:56

Pues eso, como actualizar el valor de sbPeso.Position en cada iteracion de este loop?



delphi
  1. while (sbPeso.position >= StrToInt(edtArranque.Text )) do
  2.     begin
  3.       i := i +1;
  4.       lbli.Caption := IntToStr(i);
  5.       TablaPeso[i] := sbPeso.Position;
  6.       if i >= MaxTabla then
  7.         begin
  8.           shape1.brush.Color := clWhite;
  9.           break;
  10.         end;
  11.     end; 



Con delphi directamente en windows si no mal recuerdo hay que hacer una llamada a un API de mensajes. Es lo mismo para Lazarus? La aplicacion es un pequeño demo que se ejecutara siempre en windows.

Como siempre se agradece la ayuda y su tiempo.


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.108 mensajes
  • LocationMadrid - España

Escrito 15 mayo 2013 - 04:21

Mira a ver si funciona Update, pero en ese bucle no cambia el valor de sbPeso.position


Saludos.
  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 15 mayo 2013 - 04:25

Pregunto:  ¿Obtienes el valor para sbPeso.Position a partir de la variable i?
  • 0

#4 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 16 mayo 2013 - 09:48

Disculpas por la tardanza pero ando en varios frentes.... :)

Basicamente es una simulacion en donde voy deslizando el scrollbar (sbPeso) y necesito que al ingresar al loop el valor de sbPeso.position sea actualizado para ir llenando a l record TablaPeso[i].

Ando bastante mal en mi logica :(

Saludos!
  • 0

#5 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 16 mayo 2013 - 10:18

Más preguntas:
1- Deslizas manualmente el sbpeso, o quieres que se deslice solo. Entiendo que quieres que se deslice solo, tal  como en un reproductor de audio o vídeo.

2- Con qué inicializas la variable I?

3- Finalmente aclara si lo que quieres es incrementar la posición de sbPeso conforme se incrementa I.

Adivinando un poco, y si es como lo planteo en la tercera pregunta, aún desconociendo con qué inicializas I (me imagino que es con el valor de edArranque), sería algo así.



delphi
  1. while (sbPeso.position >= StrToInt(edtArranque.Text )) do
  2.     begin
  3.       i:= StrToInt(edtArranque.Text );
  4.       i := i +1;
  5.       sb.Position := i;
  6.       sb.Invalidate; //Redibuja el control en su nueva posición
  7.       lbli.Caption := IntToStr(i);
  8.       TablaPeso[i] := sbPeso.Position;
  9.       if i >= MaxTabla then
  10.         begin
  11.           shape1.brush.Color := clWhite;
  12.           break;
  13.         end;
  14.     end;


  • 0

#6 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 16 mayo 2013 - 11:29

Gracias por el interés Wilson!

1. Deslizo manualmente el sbPeso. Tal vez después lo quiera hacer automático.
2. I:= 0;
3. Quiero que en cada iteración del lazo se lea el nuevo valor de sbPeso y así esos nuevos valores sean cargados en TablaPeso[i]

La idea final es realizar algo asi como una campana de Gauss (pero no lo es)


  • 0




IP.Board spam blocked by CleanTalk.