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
