checkbox eines dialoges disablen...
-
Doch A ist ein modaler dialog.... wie mach ich das genau?!?
-
Wenn A ein modaler Dialog ist, "steht" der Mainframe solange wie der offen ist.
Der tut gar nix außer warten.Was hast du vor? Ich glaube, du musst umdenken.
-
weiß nicht, mag sein, ich will nur irgendwie von MainFrame aus einen dialog ändern der von mainFrame aus aufgerufen wird. Durch einen Menüpunkt. Dieses formular wird übrigens zusammen mit anderen in einem modalen propertySheet aufgemacht.
-
Mach bitte mal folgendes:
An der Stelle, wo du die Checkbox disablen willst, mach mal eine Message Box.Jetzt führe die Schritte aus, die du dir so gedacht hast.
...und dann sag mir nochmal, dass du einen modalen Dialog von MainFrame aus verändern willst, während er offen ist.
-
hab mich vielleicht falsch ausgedrückt. Die formfelder in dem formular haben membervariablen die mit den formfeldern verknüpft sind. aus mainFrame heraus will ich jetzt diese variablen lesen und checkboxen checken oder halt nicht checken bevor der dialog aufgerufen wir. Das funktioniert ja auch aber ich kann eben kein feld disabeln weil ich das nicht über die membervariablen machen kann sondern mit GetDlgItem darauf zugreifen muß und genau das ist mein Problem. ALso BEVOR der dialog geöffnet wird
-
Ahhhhh, jetzt hab ichs.
Mach eine BOOL Varible mit dem Assistenten für die Checkbox und setz die vor DoModal auf FALSE.
-
Das kann ich ja schon aber ich will die checkbox nicht "unchecken" sondern disabeln damit keiner ein hackerl reinmachen kann......
-
Arg... es ist zu warm...
Also:
Mach eine bool Variable (ohne Control dazu), die du setzt.
In der OnInitDialog kannst du dann deine Checkbox ganz nach Inhalt der Variablen de/aktivieren.
-
Brauche keine variable, hab eh alle daten die ich brauche. Ich kann keine OnInitDialog function in der formularklasse einbauen weil dann werden die Daten die ich schon vorher von mainframe aus setze durch den konstruktor überschrieben.....
Es ist schon so wie ich das meinte, ich muß irgendwie von mainFrame aus einen zugriff auf ein anderes formular bekommen, das muß ja gehen?!?!?
-
l00P schrieb:
Brauche keine variable, hab eh alle daten die ich brauche. Ich kann keine OnInitDialog function in der formularklasse einbauen weil dann werden die Daten die ich schon vorher von mainframe aus setze durch den konstruktor überschrieben.....
Also, das sollte sich gegenseitig nix tun.
Der Konstruktor wird auch aufgerufen, wenn du OnInitDialog nicht überschreibst. Setz einen Breakpoint rein und guck nach.
Du solltest nur kein UpdateData(TRUE); machen.
-
ich dachte nur das es das ist, anders weiß ich nlicht weiter...
hast du eine idee wie ich das also machen könnte? Da muß es doch eine möglichkeit geben auf ein "fremdes" formular zuzugreifen oder?!?!?
-
Da der Mainframe nix machen kann, während ein modaler Dialog offen ist, musst du das vorher belegen.
Das geht auch, ich habs ja schon zig mal gemacht.Versuchs nochmal und zeig, wenn es nicht geht mal den Code.
Da wo du aufrufst und die OnInitDialog.
-
Ja das will ich ja, die checkbox disabeln bevor der dialog aufgemacht wird. code kann ich dir morgen posten. Habs ja schon probiert, geht nicht bei mir.
also dann danke schonmal, meld mich morgen wieder
lg
-
hi!
hier mal der code, wird aber nicht viel helfen denk ich...
//in mainFrame, in der funktion die durch enien menüpunkt aufgerufen wird... if(configMisc.m_stopReceiving == true) { A* a; a->GetDlfItem(IDC_CHECKBOX)->EnableWindow(false); } UpdateData(false); //hier wird das propertysheet aufgebaut... CPropertySheet sheet("Configuration", this); sheet.AddPage(&configUser); sheet.AddPage(&configSite); sheet.AddPage(&configMisc);
//Das sit die formularklasse auf die ich von mainFrame aus zugreifen will... //wenn ich aber diesen code drinnen lasse, ist das ganze formular leer, warum //auch immer, sonst könnt ich ja die checkboxen gleich von hier aus disnablen //usw. BOOL ConfigMisc::OnInitDialog() { CButton* autoRe = (CButton*)GetDlgItem(IDC_CHECK_AUTORECEIVE); CButton* stopRec = (CButton*)GetDlgItem(IDC_STOP_RECEIVING); if(stopRec->GetCheck() == 1) { autoRe->EnableWindow(false); } return TRUE; }
-
Du hast den Aufruf der Basisklasse rausgelöscht.
BOOL ConfigMisc::OnInitDialog() { CDialog::OnInitDialog(); // Das MUSS rein! CButton* autoRe = (CButton*)GetDlgItem(IDC_CHECK_AUTORECEIVE); CButton* stopRec = (CButton*)GetDlgItem(IDC_STOP_RECEIVING); if(stopRec->GetCheck() == 1) // und hier nimm eine bool-Variable { autoRe->EnableWindow(false); } return TRUE; }
Also, die CDialog::OnInitDialog brauchst du auf jeden Fall, denn die erstellt die Controls.
Bevor diese Funktion aufgerufen wurde, existieren die Controls nicht, deswegen kannst du sie nicht von außen manipulieren und musst eine bool-Variable nehmen.
-
AAAAH jetzt funktionierts, ich hatte das CDialog::OnInitDialog(); vergessen , shit *g*
ja klar ich machs jetzt über eine bool, ich lade ja eh eine komplette Structur die das configfile ausliest und jetzt kann ich auch disablen
also danke für dein egeduld
lg
l00P
-
Kein Problem.