У меня такая задача, есть группа кнопок с цифрами на первой панели и пять чисел случайным образом выбираются на второй панели. Как при нажатии на кнопку на первой панели удалить аналогичные номера на второй панели (этот номер также следует удалить с первой панели), а затем произвольно заменить удаленную кнопку на второй панели, чтобы удаленные номера больше никогда не повторялись , Как это сделать? Пример картины.
Мой код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure butClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
arr1: Array[1..20] of Integer;
but:array[1..9] of TButton;
but1:array[1..9] of TButton;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,x,k,tmp,N: integer;
A: array of integer;
begin
randomize();
arr1[1] := 34;
arr1[2] := 15;
arr1[3] := 79;
arr1[4] := 17;
arr1[5] := 91;
arr1[6] := 32;
arr1[7] := 11;
arr1[8] := 15;
arr1[9] := 12;
arr1[10] := 18;
arr1[11] := 21;
arr1[12] := 37;
arr1[13] := 75;
arr1[14] := 51;
arr1[15] := 30;
arr1[16] := 24;
arr1[17] := 94;
arr1[18] := 52;
arr1[19] := 43;
arr1[20] := 28;
N:=Length(arr1)-1;
setlength(A,Length(arr1));
Memo1.Clear;
for k := 1 to N do A[k] := arr1[k];
for k := 1 to N do begin
x := random(Length(arr1));
tmp := A[k];
A[k] :=A[x];
A[x] := tmp;
end;
for i := 1 to 5 do
begin
but1[i] := TButton.Create(Form1);
but1[i].Parent := Form1;
but1[i].Caption := IntToStr(A[i]);
but1[i].Font.Size := 26;
but1[i].Width := 50;
but1[i].Height := 50;
but1[i].Left := 300 + i * 50;
but1[i].Top := 50;
end;
for i := 1 to Length(arr1) do
begin
but[i] := TButton.Create(Form1);
but[i].Parent := Form1;
but[i].Caption := IntToStr(arr1[i]);
but[i].Font.Size := 26;
but[i].Width := 50;
but[i].Height := 50;
but[i].Tag := arr1[i];
but[i].Left := 50 + Round(i mod 3)*but[i].Width;
but[i].Top := 50 + Round(i / 3)*but[i].Height;
but[i].OnClick := butClick;
end;
end;
procedure TForm1.butClick(Sender: TObject);
begin
ShowMessage(IntToStr((Sender as TButton).Tag));
end;
end.