RadioGroup



  • Hallo!

    Ich habe ein Projekt mit 2 Units. Im Unit2 ist eine RadioGroup. Diese möchte ich in Unit1 aktualisieren.

    Form2-RadioGroupXY-Itemindex = index;

    Beim compilieren kommt die Fehlermeldung "exception der Klasse EAccessViolation..."!?

    Was ist falsch?



  • Hallo,

    Also das funktioniert schonmal garnicht :
    Form2-RadioGroupXY-Itemindex = index;

    Wenn dann so :

    Form2->RadioGroupXY->ItemIndex = index;
    

    Bist Du sicher das die Exception beim compilieren kommt und nicht beim Ausführen ?
    Falls das im laufenden Programm kommt, dann existiert Form2 evtl. noch nicht.

    Bis dann denn,
    🙂
    Nash



  • Ja, schon klar die Bindestriche sind im Sourcecode schon -> !
    Hab mich verschrieben, der Fehler kommt beim ausführen. Ich denke auch das Form2 zu diesem Zeitpunkt noch nicht existiert! Wie kann ich Abhilfe schaffen?
    mfg



  • Hallo,

    Wo rufst du denn das Ganze auf? Ist Form2 erzeugt und nichtmodal aufgerufen?



  • Hi,

    ich schreibe im Konstruktor von Form1 Konfigurationsdaten von einer Datei in eine Struktur, und dann will ich mit den Daten die RadioGroup aktualisieren.
    Das alles im Konstruktor von Form1. Muß ich für Form2 vorher schon Speicher reservieren? Oder wie gehts?

    mfg



  • Du könntest in den Projektoptionen die Erstellungsreihenfolge für Formulare ändern. Also Form2 vor Form1.



  • Pack den Code, mit dem Du auf andere Forms zugreifst in die OnShow(). Da sind dann die anderen Forms schon erzeugt und Du kannst auf sie zugreifen. Aber Vorsicht, dieses Ereignis wird jedes mal aufgerufen, wenn das Forms sichtbar gemacht wird.

    Alternativ kannst Du die Forms vor dem Zugriff auch manuell erzeugen. Dafür musst Du die Forms aber aus der Liste der automatisch zu erzeugenden Forms herausnehmen.

    Als dritte Möglichkeit könnte man noch aus dem Konstruktor heraus eine Nachricht an die eigene Form schicken und in der Routine dazu die Initialisierungen vornehmen. Dieses dürfte die sauberste Lösung sein (siehe OldCreateOrder, man weiß ja nie, was noch kommt).



  • Dasd schrieb:

    Du könntest in den Projektoptionen die Erstellungsreihenfolge für Formulare ändern. Also Form2 vor Form1.

    Dann ist aber doch Form2 auch das MainForm, oder nicht?



  • Joe_M. schrieb:

    Dasd schrieb:

    Du könntest in den Projektoptionen die Erstellungsreihenfolge für Formulare ändern. Also Form2 vor Form1.

    Dann ist aber doch Form2 auch das MainForm, oder nicht?

    Sicher? Ist möglich...



  • Hi,
    danke erstmal. Hab jetzt Form2 als MainForm, so funzt es. Aber andere Funktionen leiden darunter. Auf Form2 habe ich meine Konfiguration vorgenommem und wenn ich Form2 jetzt schließe, wird die ganze Anwendung geschlossen!



  • Hallo

    lagere die Initialisierung aus den Eventfunktionen in eigene Memberfunktionen aus und rufe die vom Hauptprogramm (<Projektname>.cpp) aus auf. Also nach dem die Forms mit Application->CreateForm(...) erstellt wurden und vor Application->Run().
    Vergiß nicht, das du dort die betreffenden Forms noch mal neu includen mußt.
    Das ist die sauberste Lösung.

    bis bald
    akari


Anmelden zum Antworten