Forum: PC-Programmierung Borland Builder Probleme mit mehrern Formularen


von Alex D. (Firma: Home) (needhelp)


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?

von Arc N. (arc)


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.

von Alex D. (Firma: Home) (needhelp)


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

von Arc N. (arc)


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
}

von needhelp (Gast)


Lesenswert?

Danke schön.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.