[VC++] Anzeige von TabPages

the incredible Leitman

Erfahrenes Mitglied
Sers schon wieder :)

Ich bin dabei, in Visual Studio 2005 eine Windows Forms Applikartion zu erstellen in der ich Tab Pages verwendet... so weit so gut, kein Problem!

Jedoch muss ich nun die Anwendung nicht auf einem, sondern auf 4 Monitoren darstellen (auch noch kein Problem)
dabei sollen die einzelnen Tab Pages auf jedem Monitor zu sehen sein (schon ein Problem)
UND man soll auf jedem der Bildschirme mittels dieser Tabs verschiedene Seiten anzeigen können! (für mich unlösbar *gg*)


Muss ich da mehrere Forms nebeneinander aufmachen? oder geht das alles in einer?
In MFC ging das angeblich, aber das verwende ich nicht!


Mach mal ein Bild, falls ich mein Problem zu kompliziert dargestellt habe:
(ich liebe Paint :))
 

Anhänge

  • 25308attachment.bmp
    100,1 KB · Aufrufe: 19
Hi Leitman! ;)

Für die 4 Bildschirme würd ich jeweils ein Form machen. Könntest zusätzlich den FormBorderStyle entfernen.
Die Controls jeder TabPages würd ich jeweils in einem UserControl unterbringen.
In der normalen Ansicht zeigst die UserControls in deinem TabControl in deinem MainForm an.
Wenn Du die Anwendung maximierst, kannst diese UserControls dann in den 4 Forms anzeigen.

Schau Dir mal die Klasse Screen an. Damit Kannst die 4 Forms dann auf ihrem jeweiligen Minitor ausrichten...

//Edit: Verlesen. Zeig eine Referenz deines TabControls in den 4 Forms an.

P.S: Den letzten Thread hast noch nicht als erledigt markiert. ;)
 
Sag, du bist überall gell? :D
und schnell bist du verdammt! °o°

werd mir halt einmal die Screen Klasse zu Gemüte führen
so viel zu lernen...tztztz...

Meld mich sobald ich mehr weiß.
bin aber auch für andere Vorschläge offen ;)


danke (wieder mal :))

(PS: Thread erledigt :D)
 
ja, die Screen class ist mir sicher noch hilfreich :D

Werde es nun folgendermaßen angehen:
beim SystemStart check, wieviele Bildschirme es gibt und welche Auflösung diese haben; (mittels Screen Klassenfunktionen, THX@ cosmo :))
dann wird für jeden Monitor eine Form erstellt mit Tabs und anderen Controls;

Jedoch weiß ich nicht, wie ich mehr Forms zeitgleich aufmache, hab bisher nur Application::Run(formname);
oder formname->Show(); // oder ShowDialog()
verwendet. Da gibt es doch sicher eine andere Methode oder?
Im Prinzip möchte ich einfach eine Form (meine MainForm) halt 4 mal öffnen...oder so...
 
Form.Show() Sollte eigentlich ausreichen. Aber so wirst ein Form nicht zwei mal öffnen können.

Mach mehrere Forms und füge deine Controls hinzu. Das sollte gehen...

Ich mach heut abend mal ne Demo wenn Du magst. C# wirst sicherlich lesen könen, oder?
Pieps mich im ICQ an. Komme aber erst spät nachhause.
 
Christian Kusmanow hat gesagt.:
Form.Show()Ich mach heut abend mal ne Demo wenn Du magst. C# wirst sicherlich lesen könen, oder?
Das wär echt nett, C# ist kaum ein Problem,
ok, ich meld mich am Abend (bin aber auch länger unterwegs)

Habs inzwischen so gelöst:
Code:
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
	// Enabling Windows XP visual effects before any controls are created
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false); 

	// point to set forms side by side
	System::Drawing::Point^ p1 = gcnew System::Drawing::Point(0,0);	

	// array to save screen stuff
	array<Screen^>^screens = Screen::AllScreens;
	// amount of screens
	int upper = screens->GetUpperBound(0);
	
	for (int i= 0; i<=upper ; i++)
	{
		// create Form
		System::Windows::Forms::Form^ form1 = gcnew Form1();
		form1->Location = System::Drawing::Point(p1->X,p1->Y);
		form1->Show();

		// set point for next form beside
		p1->X = p1->X + 1600;
	}
	
	Application::Run();

	return 0;
}

Das funktioniert, es gehen 4 Forms nebeneinander auf,
alle Funktionstüchtig (habe bis jetzt aber noch nichts komplexes probiert, lediglich, ListBox füllen, Spielerein mit TextBoxen und so einfache Sachen)

Wie gesagt, es geht aber trotzdem ist das irgendwie die russische Lösung, kA ob ich das so machen darf / kann

mfG

Leitman
 
Russisch ist es, weil Du jeweils eine neue Instanz deines Forms erzeugst.
D.h. die Forms wissen voneinander nichts. Und Du hast den 4 fachen Speicherverbrauch.
Versuch also mal die gesamten Steuerelemente in ein UserControl zu packen
und es auf den Forms via Control.Add hinzuzufügen. Das sollte gehen. Muss es selber mal ausprobieren.
Sowas hab ich noch nicht versucht. :-(
Bis heut Abend...
 
toller Tipp, Danke!

Habe jetzt ein CustomTabControl erstellt, hab mich aber glaub ich vertan, wird nicht angezeigt sobald ichs im Designer auf meine Form ziehe! Hab sicher etwas vergessen...Aber die Idee ist trotzdem gut :)

bis am Abend, bin Bugs beheben *gg*


//edited 21.07.06 10:12
Wieder da, passt, Control funktioniert super (außer, dass ich halt nicht ohne Fehler im Designer auf die controleigenen Elemente zugreifen kann um ihnen Event zuzuweisen... aber lässt sich problemmlos ausführen und funkt!)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück