Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.20;
Скачать: CL | DM;

Вниз

Проблемы с компонентом RadioGroup   Найти похожие ветки 

 
Soi ©   (2003-10-08 06:03) [0]

Помогите пожалуйста. У меня на форме есть 50 компонет RadioGroup свойство VISIBLE у всех стоит FALSE, как сделать так, чтобы, например по нажатию какой-нибудь кнопки эти компоненты отображались в случайном порядке.


 
Кщд   (2003-10-08 06:19) [1]

конкретика?


 
Нурик ©   (2003-10-08 06:57) [2]

Короче делаем так, этим RadioGroup"ам даешь имена RG1,RG2,RG3...RG50. Потом при нажатии какой-нибудь кнопки используешь функцию Random(50). Её значение переводишь в string и приплюсуешь к string "RG", то есть если полученное значение например 27, то будет "RG"+"27"="RG27"; А потом делаешь так:
TRadioGroup(FindComponent("RG27")).Visible:=true; Всё! Надеюсь понятно, если нет то пиши как нибудь постараюсь по проще объяснить.


 
Спрашивающий_   (2003-10-08 07:10) [3]

Пока набрасывал уже ответили,идея та же, только можно через Tag
см ниже
procedure TForm1.Button2Click(Sender: TObject);
var
I:Byte;
begin
I:=Random(50);
VisRG(I);
Memo1.Lines.Add(IntToStr(I));//Тест
end;

procedure TForm1.VisRG(Val:Integer);
var
I:Word;
begin
For I:=0 To Form1.ComponentCount-1 Do
If (Form1.Components[I] is TRadioGroup) Then If TRadioGroup(Form1.Components[I]).Tag=Val
Then TRadioGroup(Form1.Components[I]).Visible:=True Else TRadioGroup(Form1.Components[I]).Visible:=False;
end;
Не забудь присвоить каждому RG Tag от 0 до 50.


 
Спрашивающий_   (2003-10-08 07:45) [4]

Да но учти что при каждом новом запуске последовательность генерируемая Random буде одинакова, поэтому можешь сделать например так
procedure TForm1.Button2Click(Sender: TObject);
var
I:Byte;
S:String;
begin
S:=IntToStr(GetTickCount);
I:=StrToInt(S[Length(S)]);
If I=0 Then I:=1;
I:=Random(I);
If (I=0) or (I>3) Then I:=3 Else I:= Random(3) div I;
VisRG(I);
end;
Это для примера для 3 RG.
вероятность повторения снижается
Тест генерации
3 3
3 3
0 0
2 2
0 3
0 3
3 0
0 3
3 0
3 3
3 3
0 2
3 2
2 3
3 1
3 3
3 0
0 1
0 3
0 3
0 3
0 0
3 3
3 1
3 0
0 2
3 3
3 3
3 3
0 3
0 3
3 0
3 0
3 0
0 3
3 2
3 3
3 3
3 3
0 3
2 3
3 0
3 3
1 0
3 0
0 3
3 3
0 3
3 3
3 3
3 3
3 3
0 3
3 0
3 3
0 2
1 2
3 3
3 0
0 3
3 3
3 0
1 3
0 0
0 0
1 0
3 3
3 0
3 3
1 2
0 3
3 3
3 3
3 3
3 3
3 3
3 3
3 0
3 3
0 1
2 1
0 3
3 3
3 3
3 3
3 3
3 3
1 3
3 3
3 3
3 0
0 0
2 1
0 0
0 0
0 1
3 3
0 2
1 0
3 2
3 3
Как видно совпадения не велики, а в предыдущем примере
столбцы будут одинаковы.


 
ЮЮ ©   (2003-10-08 09:06) [5]

>Да но учти что при каждом новом запуске последовательность генерируемая Random буде одинакова, поэтому

существует ещё и Randomize



Страницы: 1 вся ветка

Текущий архив: 2003.10.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-65530
Serguar
2003-10-09 12:34
2003.10.20
Как узнать что произошла смена суток


1-65477
l2t_guest
2003-10-08 17:21
2003.10.20
Вопрос по variant


6-65564
SergP
2003-08-24 15:22
2003.10.20
TServerSocket. Что это за странные хенделы -1 ?


1-65499
Alesha aka Pokemon
2003-10-08 12:32
2003.10.20
Ссылки и указатели.


1-65497
АТ
2003-10-08 10:32
2003.10.20
поля в TPrinter