Warum funktioniert hier ActiveMDIChild nicht?



  • Hi,
    habe folgendes Problem:
    Ich habe meine Hauptform als fsMDIForm und ein anderes Formular als fsMDIChild. Jetzt versuche ich über ActiveMDIChild auf ein RichEdit zuzugreifen:

    ActiveMDIChild->Editor->Lines->SaveToFile(SaveDialog->FileName);  //Editor=RichEdit
    ActiveMDIChild->Editor->Modified = false;
    

    Doch der Compiler sagt mir in beiden Zeilen:

    'Editor' is not a member of 'Forms::TForm'

    Wenn ich aber stattdessen dynamic_casten tu, funktionierts:

    TEditorfenster* kin = dynamic_cast<TEditorfenster*>(ActiveMDIChild);
    kin->Editor->Lines->SaveToFile(SaveDialog->FileName);
    kin->Editor->Modified = false;
    

    Weiß einer Warum ActiveMDIChild nicht funktioniert?

    [ Dieser Beitrag wurde am 28.12.2002 um 21:48 Uhr von FeelingDevil editiert. ]



  • Weil TForm kein Member namens Editor hat, sondern nur deine agbeleitete Klasse?!



  • Naja, ne, Editorfenster(Name der Childform) hat ne Member Editor, sonst würde ja auch dynamic_cast nicht funktionieren. Irgendwo ist da der Wurm...



  • Du musst halt casten, weil ActiveMDIChild kein TEditorfenster, sondern ein TForm ist.



  • Achso, scheint plausibel. Okay, danke für die Hilfe 😉



  • Eins muss ich noch loswerden:

    Das steht auch in der Hilfe!



  • Original erstellt von Eßer:
    Das steht auch in der Hilfe!

    Dann erklär mir eines - Eser, Beschützer der Forenprinzipien - wieso hast du dann nicht selbst auf die Hilfe verwiesen? (-;

    Sei mir nicht böse aber wenn du andere korrigierst solltest du selbst auch nach deinen Korrekturen handeln (-;

    -junix



  • Mir is leider grad erst aufgefallen, dass ichs vergessen hatte. Ich hab mich gewissermaßen selber verbessert. 😉

    Edit: ist natürlich peinlich, wenn ich andere veressere und mich dann selbst nicht dran halte. *schäm*

    [ Dieser Beitrag wurde am 29.12.2002 um 22:09 Uhr von Eßer editiert. ]



  • Ja hab grad in der Hilfe nachgeschaut. Jetzt wo du es sagst sehe ich das auch, aber vorher hätt ich das nicht gemerkt. Habe gedacht, ich spreche mit ActiveMDIChild auch die Komponenten auf der Form an, jedoch kann ich damit nur auf die Elemente der Klasse TForm zugreifen, also Tag oder WindowState.
    Danke nochmal für die Hilfe. Bis die Tage.


Log in to reply