Вопрос № 178056: Приветствую. Подскажите как можно получить столбец кнопок на форме, расставленных между собой в случайном порядке. Объявляю массив кнопок: buttons: array[0..30] of TButton; Создаю 15 кнопок, которые будут расположены в столбец...
Вопрос № 178056:
Приветствую.
Подскажите как можно получить столбец кнопок на форме, расставленных между собой в случайном порядке.
Объявляю массив кнопок: buttons: array[0..30] of TButton;
Создаю 15 кнопок, которые будут расположены в столбец один под другим по порядку: for i:=0 to 14 do begin buttons[i]:= TButton.Create(Self); buttons[i].Parent:= Self; buttons[i].Left:= 495; buttons[i].Width:= 210; buttons[i].Height:= 20;
buttons[i].Top:= 16 + (22 * i) + 8; buttons[i].Font.Size:= 12; buttons[i].Caption:= inttostring(i); buttons[i].OnClick:= ButtonsClick; end;
То есть на форме будут по порядку следовать кнопки: |0| |1| |2| |3| ...
Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Maksim Trofimov. Нужно создать массив из неповторяющихся чисел и потом просто в цикле брать из него очередное число и создавать соответствующую кнопку.
Код:
var Form1: TForm1; mass: array of integer; // массив номеров
function Unic(var flag: array
of boolean; range: integer): integer; begin {данная функция возвращает одно случайное число} result := random(range); while flag[result] do result := random(range); //ищем какого числа еще нет flag[result] := true; //это чтобы не было повторений end;
procedure MassRand(range: integer; var inputMass: array of integer); // Заполнение массива неповторяющимися числами var i: integer; bm: array of boolean; //массив флагов д
ля отслеживания было уже число или нет begin SetLength(bm, length(inputMass)); // Установка размера массива for i := 0 to length(inputMass) - 1 do begin inputMass[i] := Unic(bm, range); end; end;
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin SetLength(mass, 15); // тут получим размерность массива MassRand(15, mass); // получаем массив не повторяющихся чисел for i:= 0 to 14 do // создаём и размещаем кнопки
begin TButton.Create(Self).Name := 'Buttons' + IntToStr(mass[i]); // создаём кнопку with TButton(FindComponent('Buttons' + IntToStr(mass[i]))) do begin // выставляем нужные свойства у созданной кнопки Left:= 495; Width:= 210; Height:= 20; Top:= 16 + (22 * i) + 8; Parent:= Self; Caption:= IntToStr(mass[i]); Font.Size:= 12;
OnClick:= ButtonsClick; end; end; end;
----- Помогли тебе, помоги и ты.
Ответ отправил: Евгений/Genia007/, Бакалавр
Ответ отправлен: 27.04.2010, 09:42
Номер ответа: 261057
Оценка ответа: 5
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261057
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.