ďťż

Ładny brzuch

Mam pytanko. Jak w C++ Builderze sprawić, aby formy utworzone, w sposób dynamiczny, po naciśnięciu klawisza uruchomiały się - tylko w jednej kopii?

http://piepik.w.interia.pl/prog.html



w przycisku:

TForm* forma = new TForm(Handle);
forma->ShowModal();
delete forma;

Kod pisałem z głowy, wieć daj znać jak coś jest źle.

I am the REAL Noname
Moja strona: www.coderulers.prv.pl Proszę o pomoc w rozkręceniu mojego forum
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg." - Bjarne Stroustrup, twórca języka C++

Tylko chciałbym, żeby nie były to formy modalne ;-) Uściśle może problem, każde naciśnięcie przycisku. Powoduje utworzenie nowej formy, powstaje w ten sposób kilka zbędnych kopii.

www.piepik.blo.pl

powinno sie dac zrobic cos w stylu prostego singletona. wywalasz konstruktor formy z sekcji public do sekcji private, wtedy nie mozna stworzyc formy przez operator new, bo nie ma publicznego konstruktora. zamiast niego tworzysz sobie metode i.e. createForm, ktora jest publiczna i statyczna i ktora dokonuje sprawdzenia czy jest juz stworzony egzemplarz klasy, jesli nie to tworzy okno, jesli okno juz jest to nic nie robi [albo zwraca na przyklad uchwyt do okna juz kiedys stworzonego].

pozdrawiam
pepsi^no1



To zdefiniuj gdzieś globalny wskaźnik formy TForm i stwórz ją na przykład w OnCreate linijką forma = new TForma(Handle); i dodatkowo forma->Hide(); (żeby ją schować), a w przycisku tylko forma->Show();

PS: tylko nie zapomnij zwolnić pamięci (delete forma) przy zakończeniu działania programu.

I am the REAL Noname
Moja strona: www.coderulers.prv.pl | Moje Forum
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg." - Bjarne Stroustrup, twórca języka C++

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •