PDA

Ver la Versión Completa : ayuda con arrays


chanex
26-05-2006, 23:10:23
Hola amigos estoy empezando con delphi, alguien podria ayudarme con lo siguiente:

procedure TForm1.Button1Click(Sender: TObject);
var
ar: Array[1..4] of String;
begin
ar[1] := 'Luis';
ar[2] := 'Juan';
ar[3] := 'Manuel';
ar[4] := 'Jose';

Como puedo hacer para mostrarlo en un TLabel y que se muestren uno por uno y desde el ar[1], hasta el ar[4], y otra vez del ar[1] al ar[4], y asi sucesivamente, alguien me puede sugerir algo?, gracias de antemano.

VIRU
26-05-2006, 23:42:32
Que es lo que queires que sea tipo un cartel que cambia los nombres sucesivamente???

roman
27-05-2006, 00:09:01
Puedes usar un Timer pero deberás declarar el arreglo fuera del botón, por ejemplo, como variable del formulario:


TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Timer1: TTimer;

procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);

private
Personas: array of String; // arreglo de longitud variable
Actual: Integer; // índice del elemento que toca mostrar
end


En Button1Click llenas el arreglo y activas el Timer:


procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(Personas, 4);

Personas[0] := 'Luis';
Personas[1] := 'Juan';
Personas[2] := 'Manuel';
Personas[3] := 'José';

Actual := 0;
Timer1.Enabled := true;
end;


En el evento OnTimer actualizas la etiqueta:


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := Personas[Actual];

// Siguiente persona
Actual := (Actual + 1) mod Length(Personas);
end;


el mod es para que al llegar a la última persona (3 en este caso), el índice se regrese a 0.

La velocidad con la que aparezcan los nombres la controlas con la propiedad Interval del Timer (expresada en milisegundos). Así, si la pones en 500, el nombre cambiará cada medio segundo.

// Saludos

chanex
27-05-2006, 00:22:44
Gracias Roman ya lo probe y es lo que necesitaba, una constulta mas, ¿pordria hacer lo mismo sin utlilizar el Ttimer?, que me puedes sugerir :)