www.mikrocontroller.net

Forum: PC-Programmierung Borland Builder Probleme mit mehrern Formularen


Autor: Alex D. (Firma: Home) (needhelp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich schreibe zur Zeit ein Programm mit dem Borland Builder C++. 
Mein Problem sieht folgendermaßen aus: Ich habe 2 Formulare. Ein 
Hauptformular und eines mit 2 Buttons. Vom Hauptformular kann man einen 
Button drücken und so öffnet sich das 2. Formular. Jetzt benötige ich 
aber Funktionen sowie Variablen und einen DLL Pointer von Formular eins 
auch in Formular 2. Wie kann ich diese dort verwenden?

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für C# gilt, kann man auch in C++ umsetzen
Beitrag "C# - Anfänger braucht Hilfe beim Umgang mit Klassen --> Zugriff auf Daten"

Als "Hack" geht's mit dem C++Builder aber auch einfacher:
Da der C++Builder für jede Form eine globale Variable anlegt und die 
Forms vor dem eigentlichen Programmstart initialisiert, braucht man in 
der entsprechenden Form nur eine Methode (zur Not gingen auch ein paar 
öffentliche Variablen), der man die entsprechenden Parameter übergibt.

Autor: Alex D. (Firma: Home) (needhelp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin ehrlich gesagt etwas eingerostet und frische zur Zeit mein 
Wissen wieder auf. Könnte man vllt. ein Beispiel hier reinstellen. 
(wegen Methoden Deklaration usw.)

Thx im Vorsaus

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex D. wrote:
> Ich bin ehrlich gesagt etwas eingerostet und frische zur Zeit mein
> Wissen wieder auf. Könnte man vllt. ein Beispiel hier reinstellen.
> (wegen Methoden Deklaration usw.)
>
> Thx im Vorsaus

Da es zu MVC/MVP bzw. Singleton im Netz genügend Stoff gibt,
hier nur ein Beispiel für die unsaubere Methode.

Der C++Builder erzeugt normalerweise zu jeder Form einen Header und das 
dazugehörige CPP-File. Im Header sieht das etwa so aus
class TMyForm : public TForm {
__published:
    // ...
private:
    // ...
public:
    __fastcall TMyForm(TComponent* Owner);
    // hier kann man dann z.B. eigene Methoden deklarieren

    void init(MyVarType1& myVarType1Ref, MyVarType2* myVarType2Ptr, MyDLLPointerType myDLLPtr);
    // andere Variante
    void init(TForm* mainFormP);
};


// irgendwo in der cpp dann
void TMyForm::init(MyVarType1& myVarType1Ref, MyVarType2* myVarType2Ptr, MyDLLPointerType myDLLPtr) {
   // irgendwas 
}

void TMyForm::init(TForm* mainFormP) {
   mMainFormP = mainFormP;
   // ab hier kann man dann über den passend zu castenden Zeiger auf die 
   // öffentlichen Eigenschaften/Methoden des Hauptformulars zugreifen
}

Autor: needhelp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schön.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.