bulc
19-02-2022, 21:27:10
No consigo acceder a un Array de StaticText para cruzar los rótulos de manera aleatoria para descolorlos respecto a su posición Inicial. El STx_Array se recoge en el evento OnCreate. Uso pares formados
por los cuatro primeros elementos y los otros cuatro de un String con ocho dígitos.
Gracias por vuestras sugerencias.
procedure TForm1.BtnCruzaSTexClick(Sender: TObject);
Var // Funciona bien. Saca 8 números al azar.
I, IAzar: Integer; S, R : String; // La var Str R es prescindible.
Aux : TPoint;
begin
Aux.X := 0 ;
Aux.Y := 0 ;
Randomize; // In Initialization
S := ''; // Importante
REPEAT
IAzar := Random(8) + 1;
R := IntToStr(IAzar );
if (Pos( R, S) = 0) then
Insert( R, S, Length(S) + 1);
//ShowMessage( IntToStr(Cont)+' '+ R ) ;
UNTIL Length(S) = 8 ;
Edit1.Text := S ;
//////////////////////////////////////////////////////////////////////////
for I := 1 to 4 do
begin
// ShowMessage( S[I]+ ' ' + S[I+4] );
Aux.X :=STx_A[I].Left; Aux.Y :=STx_A[I].Top;
STx_A[I].Left := STx_A[I+4].Left ;
STx_A[I].Top := STx_A[I+4].Top ;
STx_A[I+4].Left := Aux.X ;
STx_A[I+4].Top := Aux.Y ;
end;
end;
por los cuatro primeros elementos y los otros cuatro de un String con ocho dígitos.
Gracias por vuestras sugerencias.
procedure TForm1.BtnCruzaSTexClick(Sender: TObject);
Var // Funciona bien. Saca 8 números al azar.
I, IAzar: Integer; S, R : String; // La var Str R es prescindible.
Aux : TPoint;
begin
Aux.X := 0 ;
Aux.Y := 0 ;
Randomize; // In Initialization
S := ''; // Importante
REPEAT
IAzar := Random(8) + 1;
R := IntToStr(IAzar );
if (Pos( R, S) = 0) then
Insert( R, S, Length(S) + 1);
//ShowMessage( IntToStr(Cont)+' '+ R ) ;
UNTIL Length(S) = 8 ;
Edit1.Text := S ;
//////////////////////////////////////////////////////////////////////////
for I := 1 to 4 do
begin
// ShowMessage( S[I]+ ' ' + S[I+4] );
Aux.X :=STx_A[I].Left; Aux.Y :=STx_A[I].Top;
STx_A[I].Left := STx_A[I+4].Left ;
STx_A[I].Top := STx_A[I+4].Top ;
STx_A[I+4].Left := Aux.X ;
STx_A[I+4].Top := Aux.Y ;
end;
end;