ganz viele fenster
-
hallöle
ich schreib grad nen icq klon mit dem builder
mittlerweile bin ich soweit, dass ich n hauptfenster hab wo ich zu nem anderen rechner connecten kann und mich unterhalten und so und funzt auch alles ganz gutjetz wollte ich aber in die nächste stufe gehen, sprich für mehrere clients jewils ein eigenes chatfenster aufmachen, ich hab aber keine ahnung wie (bin immer noch n00b also nich hauen)
nich fenster in fenster (also mdi), sondern sdiselbst wenn ich wüsste wie ich neue instanzen von fenstern erstelle (was ich nicht tue, bitte erklären) muss ich die ja irgendwie nummerieren, dass ich die alle einzeln ansprechen kann
da ich aber nie wissen werde, wie viele clients zu mir connecten werden kann ich ja keine festen namen vergeben sondern muss das irgendwie dynamisch machenkann mir einer erklären wie das geht (am besten n00bie freundlich
vielen dank
M@x
-
Hi,
also neue Fenster erstellst du mit new:TForm2 *temp; // TForm2 muss natürlich bekannt sein, dazu Datei-Unit Header einschließen // den entsprechenden Header einbinden temp = new TForm2(this); temp->Show();
(die musst du dann wieder, wenn sie geschossen werden, mit delete freigeben)
Ich würde das dann so machen, dass ich die ganzen Forms in einen dynamischen Kontainer wie z. B. eine Vector packe! Da kann ich bel. viel Elemente einfügen und jeden dann einzeln ansprechen!
// oben bei den andern includes: #include <vector> // dann den vector als globale Var deklarieren: std::vector<TForm2 *> Fenster; // in Methode die Fenseter öffnet (z.B. ein ButtonClick) TForm2 *temp; temp = new TForm2(this); temp->Show(); Fenster.push_back(temp); Fenster.back()->Label1->Caption = Fenster.size(); // zum beim Schließen der Fenster delete Fenster.back(); Fenster.pop_back();
Ist ein kleines Testprojekt:
Form1 mit 2 Button und Form2 mit einem Label
1. Button öffnet die Fenster
2. Button schließt die Fenster
im Label wird die Fensternummer angezeigtFalls noch Fragen sind einfach nachfragen!
MFG
Alexander Sulfrian
-
hm jo danke
aber so wie ich das versteh liegen die fenster jetz auf nem stack
richtig?
dann kann ich die ja nicht spezifisch einzeln ansprechen, sondern immer nur das oberste schliessen(bzw killen), odda versteh ich da was falsch?
-
ich hab mir das nochmal überlegt
eigentlich brauch ich ja nur eine zuordnung socket->fenster
direkt ansprechen muss ich die fenster ja eigentlich nicht
wenn also n event auf dem und dem socket kommt, kann ich das an dem zugehörogen fenster ausgeben lassen
kann ich dafür ein neues objekt erstellen und von socket erben lassen und nur zusätlich noch einen zeiger auf das fenster implementieren?
geht doch bestimmt oder?
nur das bekomm ich dann wieder nicht implementiert im builder
-
Hi,
Du kannst auch mit
Fenster.at(x)->....
einbeliebiges inerhalb des vectors ansprechen!
Gib doch einfach mal vector in den Editor ein und drück F1! Die Hilfe erklärt alles (leider nur auf Englisch)MFG
Alexander Sulfrian
-
Siehe FAQ, "Komponenten benutzen - dynamische Arrays".
-
jou, danke für die hilfe allerseits
ich habs jetz anders gemacht
für jeden neuen client erstelle ich n neues fenster in welchem (u.a. (in nem ansistring) die ip steht)
dann klebe ich dieses fenster in eine TListBox (brauchte ich ja eh)temp = new TMainForm("nick","<ip>",this); ListBox->AddItem(temp->Nick,temp);
somit habe ich die zurdnung ip<->fenster immer gegeben (ich muss zwar immer die ganze liste durchsuchen wenn ich das fenster zu der ip finden möchte
for (int c=0;c<Liste->ListBox->Items->Count;c++){ TMainForm *TheObject = (TMainForm *)ListBox->Items->Objects[c]; if(von==TheObject->zugehoerigeIP){ smile(); break; } } //von=IP nach der gesucht wird, TheObject->zugehoerigeIP = IP aus dem fenster
mag unschön und langsam sein, aber das war halt das was im rahmen meiner möglichkeiten lag
P.S.
gibts es im builder sowas wie n "reformat code"?
in sun one (java) gibts das
dann setzt der die tabstops für die klammer der if abfragen etc. automatisch
von hand machen suckt mich mittlerweile irgendwie n bissi an[ Dieser Beitrag wurde am 06.07.2003 um 03:11 Uhr von M@xwell editiert. ]
[ Dieser Beitrag wurde am 06.07.2003 um 03:14 Uhr von M@xwell editiert. ]
-
Original erstellt von M@xwell:
P.S.
gibts es im builder sowas wie n "reformat code"?
in sun one (java) gibts das
dann setzt der die tabstops für die klammer der if abfragen etc. automatisch
von hand machen suckt mich mittlerweile irgendwie n bissi anHi,
nein leider nicht! Aber soooooo schlimm ist es doch nicht?MFG
Alexander Sulfrian