Ein statisches Frame sichtbar auf mehreren Formularen ?
-
Hallo zusammen,
ich habe folgendes Problem :
ich habe mehrere Formulare, in die ich immer ein Frame einbauen muss. Dieser Frame beinhaltet immer die gleichen Daten.
Deshalb dachte ich an ein statischen Frame, den ich beim Aufruf des Konstruktors der jeweiligen Form diesen Frame einbinden will.
Leider weiss ich nicht, ob das geht und wenn ja wie.
Ich weiss auch nicht, nach was ich in der Hilfe suchen sollte...
Hier ein Auszug des Quelltexts:class TStatusfenster : public TFrame
{
__published: // Von der IDE verwaltete Komponenten
... //Hier steht einiges...private: // Anwender-Deklarationen
public: // Anwender-Deklarationen
static TStatusfenster *Statusfenster;
void StatusleisteAnpassen(int FormularBreite);
};
//---------------------------------------------------------------------------
extern PACKAGE TStatusfenster *Statusfenster;Die Form, in der ich das Frame einbinden will :
//---------------------------------------------------------------------------
__fastcall TTransfer::TTransfer(TComponent* Owner)
: TForm(Owner)
{
TStatusfenster::Statusfenster->Visible = true;
TStatusfenster::Statusfenster->Parent = this;
}Fehlermeldung hier:
[Linker Fehler] Unresolved external 'TStatusfenster::Statusfenster' referenced from C:\... uns so weiter...Danke im Voraus,
um eine Erklärung wäre ich dankbar.
-
Hallo zusammen.
Da noch niemand irgendwas dazu gesagt hat, frage ich mich nun, ob es zu schwer ist, ich mich einfach schlecht ausgedrückt habe, oder sonstiges. Bitte gib mir einer eine Rückmeldung, da es echt wichtig ist...
Danke !
-
Hallo
Warum schreibst du z.B.
TStatusfenster::Statusfenster->Visible;
?
Laut deinem Auszug hast du keinen Namespace 'TStatusfenster' definiert, der ja auch mit dem Typnamen des Frames kolidieren würde.
Schreib also lieberStatusfenster->Visible;
Natürlich mußt du TStatusfenster im Formular inluded.
bis bald
akari
-
Danke akari, bitte aber mal langsam...
akari schrieb:
Hallo
Warum schreibst du z.B.
TStatusfenster::Statusfenster->Visible;
?
Laut deinem Auszug hast du keinen Namespace 'TStatusfenster' definiert, der ja auch mit dem Typnamen des Frames kolidieren würde.
Schreib also lieberStatusfenster->Visible;
Natürlich mußt du TStatusfenster im Formular inluded.
bis bald
akariAlso: Includiert habei ich es natürlich,
die Sache mit Namespace der mit dem Frametypnamen kollidiert... Das verstehe ich nicht... Ich habe es extra so gemacht, weil ich dachte, da der TFrame static ist, bräuchte ich diese Schreibweise... Jetzt ist mir gerade beim Schreiben klar geworden, dass ich davon ausgegangen bin, dass ich keine Instanz davon habe. Aber natürlich habe ich die ja... Hmm... doof.... Ich werde es heute abend, sobald ich aus dem Geschäft komme, ausprobieren und Rückmeldung geben, ob es funktioniert... Danke schon mal...
-
Hallo
die Sache mit Namespace der mit dem Frametypnamen kollidiert... Das verstehe ich nicht
Ganz einfach : du hast einen Typ TStatusfenster. Wenn du eine Istanz davon aufrufst mit
TStatusfenster::Statusfenster->Visible;
ist mit TStatusfenster nicht der Typ der Klasse gemeint (den weiß der Compiler durch den Namen der Instanz), sondern der Name des Namespace, in dem TStatusfenster definiert ist. Aber es kann eben nicht zwei Symbole mit dem gleichen Namen geben.
bis bald
akari
-
Oliver,
Oliver Kohl schrieb:
...ich habe mehrere Formulare, in die ich immer ein Frame einbauen muss. Dieser Frame beinhaltet immer die gleichen Daten....
Deshalb dachte ich an ein statischen Frame, ...
ich habe noch nie mit Frames gearbeitet, da ich CB4 benutze. Prinzipiell scheint sich in Deinem Fall aber auch ein Vererbungs-Modell anzubieten.
Also Vorschlag: Definiere eine Formular-Basis-Klasse mit dem Frame und leite alle anderen Formulare davon ab. Das spart (nach meiner Erfahrung) eine Menge Arbeit.