Dialogsteuerung....
-
Hallo,
schreibe gerade an einer SDI-Anwendung. Es ist eine Art -Wizard-.
Die Ansicht kann man sich ungefähr so vorstellen, dass es einen Hauptdialog und mehrere "Unterdialoge" gibt.Im Hauptdialog werden oben diverse Überschriften angezeigt, links existieren einige Buttons zum Laden von den "Unterdialogen", welche dann im mittleren Bereich des Hauptdialoges angezeigt und editiert werden sollen.
________________________ | | Titel.... | | |_______________| | Btn | | | Btn | | | Btn | Unterdlg | | | | |______|_______________|
Also, klingt schwieriger als es in Wirklichkeit ist.
Möchte auf einen Button im Hauptdialog klicken und dann im mittleren Teil den entsprechenden "Unterdialog" angezeigt bekommen. Aber Hauptdialog soll natürlich weiterhin angezeigt bleiben. (damit man dann auch auf einen anderen Btn drücken und somit einen neuen UDLG in den mittleren Teil laden kann);
Irgendwie komme ich da gerade nicht weiter.
Hat jemand vielleicht ne Idee.
Danke schon mal.
Gruss
S.
-
CDialogView und Toolbars wäre vllt. ein Ansatz.
-
Hi,
entweder ist noch zu früh am Morgen, oder ich werde echt langsam blind.
Die Klasse -CDialogView- habe ich weder jemals gehört noch in der MSDN gefunden....!Es wäre echt nett wenn Du vielleicht Deinen Vorschlag noch ein bisschen genauer beschreiben könntest...!
Schon mal vielen Dank für Deine Hilfe.
Gruss
S.
-
@das_brot:
Meinst du nicht vielleicht CFormView? Im letzten Schritt vom Assi kann man als auswählen, was die SDI-Anwendung als Basis-Klasse benutzt, wenn man CFormView auswählt bekommt man schonmal einen "Unterdialog", nun müsste man sich denke ich mal mit nem Splitter (CSplitterWnd?) das ganze Teilen (bzw. bei dir einmal horizontal und einmal vertikal) und dann irgendwie weitere Dialoge an die Teile des Splitters binden.Hab aber noch keine Ahnung wie das geht
-
Oder mal bei Codeproject umsehen? Da könnte man sich auf jeden Fall angucken, wie das mit der Toolbar funktioniert.
-
und hier
http://www.gdv.uni-hannover.de/doc/cpp/cundcpp/ctutor4.pdf
ab seite 329..
-
Hey, das sieht aber nett aus.
Wie kann man sich auf der Seite umsehen? Gibts irgendwo ne Übersicht über den Lesestoff?
-
Habe das PDF mal kurz überflogen.....
Sieht echt gut aus...eigentlich. Nur leider brauche keine VIEWS sondern richtige Dialoge. Diese sind dann nämlich überhäuft mit Steuerelementen.Bin mir momentan halt noch nicht sicher ob mir da die Funktionalität von CSplitterWnd weiterhelfen wird....!
Werde mich aber mal schlauer machen. Auf jeden Fall danke für die Hinweise.
Auch die Idee mit den Tool-Bars finde ich ganz gut. Danke.
Dann mache ich mich mal an die Arbeit....Gruss
S.
-
Stefan H schrieb:
Habe das PDF mal kurz überflogen.....
Sieht echt gut aus...eigentlich. Nur leider brauche keine VIEWS sondern richtige Dialoge. Diese sind dann nämlich überhäuft mit Steuerelementen.Schau dir CFormView an. Der ist einem Dialog SEHR ähnlich.
-
Genau, sieh dir mal CFormView an, da kann man ganz normal controls (CButton, CEdit, CListCtrl etc. benutzen!).
Wie kann man sich auf der Seite umsehen?
kA, hab das über google gefunden
ich finde das auch ganz interessant und versuche das gerade mal zu bauen, habe jetzt auch eine Frame-Klasse (wie in dem tut) erstellt, danach soll man doch einfach nur noch in der App-Klasse den neuen Header einbinden und CMainFrame durch die neue Frame-Klasse ersetzen.
RUNTIME_CLASS(CMainFrame), // Haupt-SDI-Rahmenfenster //setzt durch RUNTIME_CLASS(CSplitterFrame), // Haupt-SDI-Rahmenfenster
Ich kann dann zwar fehlerfrei kompilieren, aber bekomme immer ne Debug-Assertion bei
if (!ProcessShellCommand(cmdInfo))
hab ich was übersehen? habt ihr das schonmal versucht?
Sobald ich es wieder in CMainFrame einsetze geht es Fehlerfrei, nur natürlich ohne Splitter
-
Was passiert, wenn du die if wegläßt?
-
Dann kommt ne unbehandelte Ausnahme
ich habe so das Gefühl, das es daran liegt, das ich CFormView benutze und nicht CView.. werde das demnächst mal ausprobieren..
Was mich auch etwas stutzig macht, ist das man laut anleitung EigenerFrame.h und EigenerView.h einbinden soll, ich habe überhaupt keinen eigenen View, finde aber im Tut auch nicht was man da so erstellen soll - automatisch wurde da nix erstellt..edit: daran liegt's auch nicht - komisch..
Also ich mache bisher nur:
1. Projekt erstellen (SDI/EXE/alles standard)
2. dann erstelle ich ne Frame-Klasse als Splitter
3. füge den Header der neuen Klasse in die App-Klasse ein
4. ersetze in der App-Klasse in OnInitInstance bei RUNTIME_CLASS CMainFrame durch meine neue Frame-Klasse
5. kompilieren..ABSTURZ
-
Sry, meinte FormView *shame on me*.
-
Toll
ich habe den Fehler gefunden, es funktioniert so nur in einer MDI-Anwenung.. Also SDI muss das doch aber auch irgendwie gehen..
-
Was genau hast du denn vor?
Das hab ich noch nicht raus...
-
Na ich möchte ein Programm erstellen das ähnlich wie eine Website
aufgebaut ist. Also links ein Menü, oder aber auch ein ListCtrl/Eingabefelder, wenn man dort etwas anklickt soll auf der rechten Seite ein dazu passender Dialog aufgerufen werden, der sich aber ändern kann. Also so in der Art wie Outlook aufgebaut ist, nur das es nicht nur buttons geben soll, sondern auch eine suche (Eingabe über Edit, Ergebnis-Liste über ListCtrl).Hab inzwischen was bei CodeGuru gefunden, versuche das gerade erstmal zu verstehen. Das Optimum wär dann natürlich, wenn ich alles was angezeigt werden soll dann über eine XML-Datei steuern könnte, also DataSets für einzelne Menüpunkte und darin als Daten dann gleich die Controls samt Std-Values
Aber soweit bin ich noch lange nicht
ich will's erstmal versuchen einfach in einer SDI 2 FormViews anzuzeigen die durch einen verschiebbaren Balken getrennt sind.
-
Morgähn,
habe gestern auch noch mit einer SDI - Anwendung rumgespielt. Leider auch ohne Erfolg.
In einem frühenen Projekt habe ich das ganze schon einmal in einer dialogfeldbasierenden Anwendung hinbekommen. Bei den Resourcen kann man den Stil der einzelnen Dialoge verändern.
Hauptdialog (mit Frame links und oben) = Kontextmenü
Unterdialoge (die in der Mitte angezeigt werden) = Untergeordnet
Damals hat das alles wunderbar geklappt und super einfachMache ich das ganze allerdings jetzt bei dieser SDI-Anwendung funktioniert das nicht wirklich.
Bei den Dlgen mit dem Stil "untergeordnet" können die einzelnen Steuerelemente NUR mit der Tab-Taste angesprungen werden. Sobald man die Maus klickt ist der ganze Dlg quasi inaktiv. Irgendwie ganz komisch.....!In den Eigenschaften dieser Dialoge gibt es noch mehr so -seltsame- Einstellmöglichkeiten, wie z.B. "Steuerelement", "Untergeordnete ausschneiden", etc.
Meiner Ansicht nach müsste es doch dort recht einfach einstellbar sein. Unser Vorhaben wird ja quasi in jedem besch... Wizard angewandt. Sollte demnach ja nicht so ein Aufwand sein, oder?
Guten Start in den Tag.
Gruss
S.
-
Ich habe da jetzt was gefunden
http://www.c-plusplus.net/forum/viewtopic-var-t-is-4700-and-highlight-is-modifystyle.html