Checkbox-funktion im Menü, aber wie ????
-
Hallo zusammen,
ich hab ein problem und zwar folgendes. Ich habe in meinem Programm CheckBox'en, mit denen ich mir halt was anzeigen kann oder dieses auch wieder ausblenden lassen kann. Jetzt möchte ich gern diese funktionalität in das Menü unter den Menüpunkt "Ansicht" verlagern.
Nun ist es so, das man Checkboxen mit einem IF-Konstrukt Ein- bzw. Ausschalten kann. Wie kann ich das oben im Menü lösen? Habe das If auskommentiert und das dazugehörige else und nur den QT aus dem IF implementiert. D.h. anzeigen lassen kann ich was, aber ausblenden nicht!!
BITTE um Hilfe !!!
BIG THX im voraus!!!
Slawo
-
hallo,
ich hoffe, ich habe dich richtig verstanden...
lausche auf das event BN_CLICKED und mach dort folgendes:
OnBnClickedDontshow() { if(m_checkbox.GetCheck()) { //setted flag do something; } else { //unsetted flag do something; } }in der methode, die dein programm ausführt wenn du im menu auf ansicht klickst, rufst du dann OnBnClickedDontshow() auf.
gruß
Daniel
-
@ Daniel.
Danke erstma für deine Hilfestellung, aber ich check nicht ganz. hehe.für ne Checkbox sieht das ca. so aus:
if(m_checkbox == TRUE) { //anzeigen } else { // ausblenden }m_checkbox ist in dem Fall eine Boolsche Variable meiner checkbox.
Wie ist das mit dem Menüeintrag, muß ich da auch ne Boolsche Variable machen?
-
@ Slawo:
Beides ist richtig..
Auchif(m_check != NULL) { // TRUE } else { //FALSE }Und klar musst du da ne BOOLsche Variable nehmen...sonst würde die Checkbox ja keinen Sinn machen oder?
Sollte eigentlich nichts anderes sein wie in denem Quellcode, nur dass du halt mit nem Event wie BN_CLICKED arbeiten musst
-
m_checkbox ist eine controlvariable der checkbox (im editor rechtsklick->add variable...) und die hat eine funktion zum überprüfen des zustandes (gecheckt, nicht gecheckt). aber ich glaube (!!!) es geht auch, wenn du die membervariable als bool erzeugst.
auf dieses checkbox control machst du (ebenfalls im editor) einen rechtsklick->add evend handler "BN_CLICKED". in die nun erzeugte methode schreibst du deinen code, der ausgeführt werden soll, wenn jemand die checkbox anklickt.
und selbiges schema mit dem menu.
hoff ich konnte weiter helfen.
gruß
Daniel
-
Ok, soweit hab ich das verstanden wie ihr mir das hier gesagt habt, aber wie sag ich dem Menüeintrag, das wenn ich Ihn anklicke, er was anzeigen soll ( das geht ja schon
) und wenn ich ihn dann nochma anklicke, er wieder die ganze geschichte ausblenden soll?Das soll so funktionieren, wie man auch z.B. sich die Statusleiste aus dem Menü heraus ein und ausblenden lassen kann. Da ist auch so ein Häckchen vor, ich denk das hat damit was zutun, oder ?
-
ich kann zwar einen Ereignisshanlder hinzufügen für den Menüeintrag, aber BN_CLICKED is nicht dabei. Da gibts nur sowas wie "Meldungstyp" und es steht nur COMMAND bzw. UPDATE_COMMAND_UI drin. Und daneben hab ich ne Liste meiner Klassen, wo er den QT dann einzufügen hat.
hmmm...
Meine IDE ist VS.Net , keine ahnung ob das damit was zutun hat.
-
Ich denke ich müßte irgendwie auf das Häckchen zugreifen, aber wie????
BITTE um HILFE!!!
-
nur so ne frage, aber hast du auch nen UpdateData() drin?
Und das On_BNCLICKED findest du, wenn du die Eventhandler von der Checkbox mal aufrufst...
-
ehhmmm, ja UpdateData ist drin. On_BNCLICKED hab ich auch gefunden, bloß will ich ja keine Checkbox mehr sondern den Menüeintrag zum ein- und ausblenden. Oder verstehe ich dich falsch. Also mein vorgehen bei der sache ist das folgende:
1. ich öffne in der Ressourcenansicht das IDR_MAINFRAME im Ordner "Menu"
2. füge einen neuen Menüpunkt (bzw. Schaltfläche) hinzu
3. benenne diesen und klicke mit rechts drauf und dann auf "Ereignishandlesr hinzufügen"
4. Dort kann ich nur als Meldungstyp COMMAND bzw. UPDATE_COMMAND_UI auswählen sonst nichtsund jetzt nochmal, soll ich einfach jetzt nen Eventhandler einer Checkbox für eine Menüschaltfläche verwenden???? Oder wie ist das gemeint mit dem On_BNCLICKED??? Ich versteh langsam nur Bahnhof

-
Würde mich über ein paar ratschläge echt freuen Jungs und Mädels !!!
-
Aso ich dachte du willst ne Checkbox IM menü haben.
Ich hab das mal probiert, bin aber leider auch nicht auf den richtigen nenner gekommen. Einmal ausführen geht, aber dann nochmal zum wieder ein/ausblenden hab ich net hinbekommen.Ich hab den EventHandler UPDATE_COMMAND_UI genommen. Musst mal in der Info dazu gucken, was da steht.
-
dieses "Problem" hab ich schon lange geloest {o;
ich hab die funktion im menue das ich datei pfade bzw datei endungen in nem fenster ein und ausblenden kannBEGIN_MESSAGE_MAP(...) ON_COMMAND(ID_VIEW_SHOWPATH, OnShowPath) ON_UPDATE_COMMAND_UI(ID_VIEW_SHOWPATH, OnUpdateViewShowpath) ON_COMMAND(ID_VIEW_SHOWEXTENSION, OnShowExtension) ON_UPDATE_COMMAND_UI(ID_VIEW_SHOWEXTENSION, OnUpdateViewShowextensions) END_MESSAGE_MAP() void CDingsBums::OnShowPath() { if(m_iShowPath == 0) { m_iShowPath = 1; // do something with activated menu point } else { m_iShowPath = 0; // do something with deactivated menu point } } void CDingsBums::OnUpdateViewShowpath(CCmdUI *pCmdUI) { pCmdUI->SetCheck(m_iShowPath); } void CDingsBums::OnShowExtension() { if(m_iShowExtension == 0) { m_iShowExtension = 1; // do something with activated menu point } else { m_iShowExtension = 0; // do something with deactivated menu point } } void CDingsBums::OnUpdateViewShowextensions(CCmdUI *pCmdUI) { pCmdUI->SetCheck(m_iShowExtension); }m_iShowPath und m_iShowExtension sind integer member variablen
das OnUpdate ist dafuer da es im menue aktiviert mit haken zu zeigen
und das je nachdem ob aktiviert oder deaktiviert, daher die notwendige member variablefuer spaetere verarbeitungen bzw settings braucht man immer nur die member variable abfragen
geht auch ne BOOL statt int, is aber voellig egal find ich
die variablen sollte im konstruktor auch gesetzt werden je nach anforderung
-
@ Mr. Evil:
Es hat gefunzt,
, hab mich an deine Lösung gehalten !!!Trotzdem BIG THX an alle die geholfen haben!!!

Ciao.
Slawo