Borland Builder Probleme mit mehrern Formularen

(Firma: Home) #973890
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?
#973949
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.
#974909
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
1
class TMyForm : public TForm {
2
__published:
3
    // ...
4
private:
5
    // ...
6
public:
7
    __fastcall TMyForm(TComponent* Owner);
8
    // hier kann man dann z.B. eigene Methoden deklarieren
9

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

15

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

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren