[BBC++] Resetowanie ustawień

Witam.

Aktualnie pracuje nad aplikacją w Borland Builder 6. Aplikacja składa się z kilku ComboBox, oraz Button.

Wszystkie te opcje, po wyborze odpowiedniej wartości przechodzą na wyłączone. Następnie Buttonem, użytkownik naciska przycisk i ma wygenerowany program. Wszystko fajnie. Tylko…

Chcę dodać dodatkowy button, który by resetował wszystkie ustawienia na stan taki jak po włączeniu aplikacji?

Czy istnieje jakieś polecenie Form Default? lub Reset wszystkich parametrów?

Pomocy…

void __fastcall TForm1::Button1Click(TObject *Sender)

{

//coś co zresetuje ustawienia... pomocy...

}

Jak sobie napiszesz to istnieje. Kompilator nie dodaje takich informacji bo są one zbędne i tylko zaśmiecałyby plik wykonywalny.

rozszerz swoje formularze o dodatkowe pola ze zmiennymi np. DefaultX i DefaultY, DefaultVisible, DefaultSizeX, DefaultSizeY a potem zrób f-cje która przeloopuje się przez twoje okienka (aktywne formularze) i ustawi je wg. domyślnych danych. Nie da się tego zrobić z “automatu”.

I po co marnować miejsce na zmienne(choć kompilator i tak przerobi je na stałe, no ale…)? To jest tylko dodatkowy koszt związany z kompilacją. Powinno się zmieniać tylko to, co jest koniecznie potrzebny. Tu, to będzie kilka przypisań, w większości z “false” na “true” i odwrotnie. Nie potrzeba żadnych zmiennych. Ogólnie nie powinno się tak nagle zmieniać pozycji okna i jego rozmiarów, bo to razi w oczy(ludzie potrafią się tego przestraszyć xD).

Czesto jest taka funkcja w aplikacjach wielookienkowych jak “Reset Workspace” i mi osobiście się przydała wiele razy, także widzę sens pytania. Co do stałych/zmiennych to można je wyliczać albo dynamicznie na podstawie wymiarów pulpitu, lub mieszczą się w okienku programu, ale też można użyć dynamicznej zmiany (więc stałe są nieporządane). Kompilator ma robić to co mu każesz, nie martwiłbym się “zaśmiecaniem” kompilatora, bo takie pisanie nie ma najmniejszego sensu.

Przywracanie ustawień domyślnych jest przydatne, ale przeważnie nie przywraca tylko pozycji, ale także wyświetlane okna i dokowane. Nie twierdzę, że pytanie nie ma sensu, bo ma, tylko rozwiązanie z dodatkową zmienną(tu by bardziej wypadało nazwać ją stałą) jest zbędne. Kompilator stara się być mądrzejszy od programisty i jeśli nie widzi nigdzie przypisania innego niż przy inicjalizacji(i wie czym jest inicjalizowana) nie przechowuje zmiennej w pamięci tylko wpisuje jej wartość na sztywno. Jest to rozwiązanie oszczędniejsze i szybsze o ten jeden cykl. Tak przynajmniej robi VC++ i G++, BC++ raczej też.

Wiem jak działają kompilatory :slight_smile: Ale zauważ że może wyliczać podczas staru programu wartości położenia dynamicznie , wtedy już kompilator nie zrobi z tego stałej. Małą debatkę uważam za zamkniętą.