Menu w windows Form Aplication (C++)

0

Witam.
Robię prosty program do obsługi baz danych. Jak dotąd udało mi się zrobić menu, oraz parę innych bajerów. Zależy mi aby po uruchomieniu było okienko z opcją loguj oraz hasło a w zależności od wyboru opcji z menu w tym okienku powinny pojawiać się różne opcje. W jaki sposób tego dokonać? Znalazłem możliwość stworzenia nowego okna ale wtedy mam dwa a chce by wszystko odbywało się w tym jednym albo przynajmniej tak to wyglądało, że się odbywa. Drugim problemem jest to czy da dodać się dodatkowe opcje menu np po zalogowaniu? Mianowicie użytkownik dokonuje logowania jako np sprzedawca i wtedy pojawia się bogatsze menu. Jeśli chodzi o przyciski napisy itp to sobie poradzę.
Pozdrawiam.

0

Jeżeli piszesz to dla siebie, to zostaw połączenie Windows Forms i C++. Wnioskuję, że Twój poziom nie jest na tyle wysoki, żebyś był wstanie napisać program bez utraty większości włosów. Zastanów się nad zmianą języka na C#, lub zmianą technologii np. na QT

0

Szczerze mówiąc to robię to dla kolegi na zaliczenie. Mogłem to w sumie napisać w php bo dla siebie tak zrobiłem ale chce się nauczyć tego a przy okazji zrobię jakiś projekt. Mam jakieś dwie książki ale jedna ma 300 a druga 600 stron i zanim bym to przeczytał to by była połowa sierpnia a ja bym chciał to mieć na teraz. Przeszukiwałem różne fora i pojawiało się to pytanie ale nie było nigdzie odpowiedzi. Kombinowałem jakoś z ukrywaniem przycisków ale one nadal były widoczne tylko nieaktywne (chyba, że jest jakaś inna opcja której nie zauważyłem). Jeśli chodzi o ten język to co tutaj jest trudnego ?Bo tak na pierwszy rzut oka to nawet spoko się wydaje. W czym C# miał by być lepszy.

0

Z dodatkowym menu dla danego użytkownika możesz zrobić np. tak
1.Tworzysz pełne menu z wszystkimi możliwymi opcjami, a te które maja np. być widoczne po zalogowaniu dajesz Visible=false;
2. Po zalogowaniu po prostu właczasz widzialność dla interesujących Ciebie pod itemów np. Moje_form->MainMenu1->Items->operator ->operator ->Visible=true;
Nie rozumiem o co chodzi Tobie z tymi oknami co chcesz osiągnąć? Pokazywanie okna to przez Show(), zamykanie Close().

0

Faktycznie działa. Dzięki. Próbowałem wcześniej kombinować z widocznością ale efekt był inny musiałem coś innego robić.

0

Witam.
Odkopuje temat bo jednak odpowiedzi które uzyskałem nie są dobre na dłuższą metę. Przeczytałem książkę o zarządzalnym c++ ale i tam nie znalazłem odpowiedzi.
Załóżmy, że mamy 3 przyciski i 101 labeli które wyświetlają jakieś informacje. Klikając przycisk pierwszy wyświetlamy pierwsze 50, klikając drugi wyświetlamy następne 50 a trzecim przyciskiem wyświetla się tylko 1 label. Korzystając ze sposobu z widocznością musiał bym w tym ostatnim przycisku ustawiać widoczność 100 labeli na false, a w przypadku dwóch pozostałych już "tylko" 51. To jest tylko przykład i to dość przesadzony ale myślę, że doskonale obrazuje problem. Czy istnieje jakiś elegancki sposób aby wyświetlić to co chcę nie martwiąc się o wyłączenie widoczności wszystkich pozostałych kontrolek? Próbowałem z dynamicznym tworzeniem przycisków ale one pozostają po kliknięciu. Próbowałem tworząc klasy zagnieżdżone i w dekonstruktorze coś zdziałać ale nic. Rozwiązanie nie musi być w C++ CLI może być również w C# bo to właściwie to samo.

0

Najlepiej zgrupuj labele w GroupBoxa czy Panel czy co tam będzie wygodnie i znikaj cały panel...

0

Ok to dobre rozwiązanie i ułatwi sprawę ale nie rozwiązuje całkowicie problemu, ponieważ mi najbardziej zależy na tym aby dana grupa kontrolek pojawiała się w momencie kliknięcia przycisku i znikała gdy kliknie się inny. Tworząc klasę i wykorzystując do tego celu konstruktor i dekonstruktor nie mogę się odnieść do głównego okna. Klasa jest zagnieżdżona wewnątrz klasy Form1. Dodając kontrolkę do konstruktora Form1 nie będę mógł usunąć elementu ani zmienić jego widoczności w klasie test.


ref class test
	{
		System::Windows::Forms::Label ^ lab;
		test()
		{
			lab = gcnew System::Windows::Forms::Label();
			//Form1->Text ;//= L"123 456";
		}

		~test()
		{
			delete lab;
		}

	};

 

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