Wątek przeniesiony 2015-02-09 16:57 z Delphi i Pascal przez olesio.

Jak zrobić losowanie jednej z wielu formatek?

0

Siemka. Jestem bardzo zielony jeśli chodzi o delphi i mam do was pytanie. Jak można zrobić coś takiego żeby po wciśnięciu buttona losowała się(bez powtórzeń) następna z np 20 form?

1

Trzymać formatki w tablicy lub TList i wylosowač Indeks tablicy z zwkresu Length(Tablica) lub Count(Lista). Służą do tego procedura Randomize, ktôrą wywołujemy tylko raz przy tworzeniu formatki głôwnej. Można też ponazywać fotmatki do pokazania z liczbę na końcu we własności Name.

Następnie zrobić TForm(FindComponent('BazowaNazwaFormatki' + IntToStr(Random(21)))).ShowModal. Chociaż dla pewności powinniśmy podstawić wynik FindComponent pod zmienną. Następnie sprawdzič czy ta zmienna jest rôżna od nil, dopiero po tym zrobić ZmiennaTypuForm.ShowModal.

Aby uniknąć powtorzenia wywołania takiej samej formatki jak poprzednio zdefiniuj zmienną globalną typu integer i w OnCreate formatki głôwnej ustaw ją na -1. I losując rób to do tej pory aż wylosowany numer formatki jest inny od tej zmiennej. Po czym ustaw tę zmienną globalną na wylosowany numer. Można też zamiast zmiennej globalnej, wykorzystač własnośč Tag (typu integer) głôwnej formatki.

I na koniec taka uwaga. Jeśli pytasz o banalne podstawy to na przyszłośc rób to koniecznie w dziale Newbie. Tam też przenoszę ten wątek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1