Ver Mensaje Individual
  #6  
Antiguo 18-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Gonza10.

Sería interesante saber que orientación te dió tu profesor cuando lo consultaste, eso nos ayudaría a darte sugerencias mas acertadas. Pero como no has comentado los requisitos que te fijó, me quedo con lo que mencionaste en tu primer mensaje: "recién estamos empezando a usar c++ builder". Por tanto sigo pensando que es mucho mas adecuado al nivel usar un modo similar al que te sugerí en el mensaje #20.

Si me dijeras que tenes que trabajar con una interface para manejar un display de matriz de leds, estaría de acuerdo con que te embrolles con matrices y demas yerbas. Pero tratándose de una simple presentación en pantalla, seguir el camino anterior es querer reinventar la rueda y desaprovechar todas las herramientas que C++ Builder (y Windows mismo) ponen a tu disposición.

Si el requisito es un TPaintBox, basta con hacer unos pequeños cambios:
Código PHP:
...
#define TO_LEFT  false
#define TO_RIGHT true

AnsiString old, msg;
AnsiString spc;
int cont = 0;
bool sentido= TO_RIGHT;

/* Inicializar */
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
PaintBox1->Height = 33;
  
PaintBox1->Align  = alTop;
  
Timer1->Interval = 40;
  
Timer1->Enabled  = false;
  
btnStartStop->Caption = "Comenzar";
  
Edit1->Width = 530;
  
Edit1->Text  = "PRUEBA DE DESPLAZAMIENTO DE TEXTO";
}

/* Timer OnTimer */
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (
sentido)
    
old = msg.SubString(msg.Length(), 1) + msg.SubString(1, msg.Length()-1);
  else
    
old = msg.SubString(2, msg.Length()-1) + msg.SubString(1, 1);
  
PaintBox1->Canvas->TextOutA(0, PaintBox1->Height >> 1, old);
  
msg = old;
}

/* Sale de Edit */
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
  
spc = spc.StringOfChar(' ',2*Edit1->Text.Length());
  
msg = spc + Edit1->Text + spc;
}

/* Desplazar a la izquierda */
void __fastcall TForm1::btnToLeftClick(TObject *Sender)
{
  
sentido = TO_LEFT;
}

/* Desplazar a la derecha */
void __fastcall TForm1::btnToRightClick(TObject *Sender)
{
  
sentido = TO_RIGHT;
}

/* Detener - Comenzar */
void __fastcall TForm1::btnStartStopClick(TObject *Sender)
{
  
Timer1->Enabled = !Timer1->Enabled;
  
btnStartStop->Caption = Timer1->Enabled ? "Detener" : "Comenzar";
} 
tomate el trabajo de probar este ejemplo y verás que la marquesina funciona sin problemas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita