EventHandler für zur Laufzeit erstellte Objekte
-
Hallo,
ich bin ja nun schon um einiges voran geschritten was mein Programm angeht.Jetzt bin ich allerdings über folgendes Problem gestolpert.
Ich erstell ein cppwebbrowser dynamisch(wegen Tabbrowsing etc.).
TCppWebBrowser *Browser2;
steht bei mir gleich unter der TForm Geschichte in der *.cpp.
Erzeugt wird er korrekt und arbeiten tut er auch korrekt.
Nun möchte ich aber gerne ihn ein OnNavigate2 oder so zuweisen.
Browser2->OnNavigate2=Browser2Naviagte2;
Und denn das OnNaviagte vom 1. kopiert und abgeändert.
Der meckert immer das er das nicht kennt. Wenn ich das fastcall allerdings in der *.h eintrage klappt alles.
Nur alles statisch einfügen macht ja kein grossen Sinn und wäre auch falsch.
Was ist da nun falsch?
-
Aus deiner reichlich konfusen Beschreibung wird nicht deutlich, was du tatsächlich machst. Warum postest du nicht einfach den entsprechenden Codeabschnitt?
-
Hallo
hero möchte dynamisch Events zuweisen. Und das ist ausfühlich in der BCB-FAQ erklärt, zum Beispiel hier.
bis bald
akari
-
Ich weiss nicht.
Ich erstell die Kompo ganz normal, nur sobald ich der ein Event zuweisen will, und das Event abfange, meckert der rum.
Browser2->OnNavigate=Browser2OnNavigate;
void ___fastcall::Browser2OnNavigate......
(wurde von der erste Komponenten kopiert und abgewandelt).Füge ich das void ___fastcall in der *.h ein, arbeitet das normal. Ansonsten meckert er unresolved external oder first Deklaration of .... usw.
Aber da ich mal 1 oder mal 10 Browser brauche, muss ich die dynamisch erstellen.
-
Weise allen Instanzen das gewünschte Event der ersten Instanz zu, also allen dasselbe.
Im Event kannst du über den Sender auswerten, wer jeweils der Auslöser ist, siehe FAQ.
-
Ich habe ein ähnliches Problem.
void __fastcall TForm1::mapGridDrawCell(TObject *Sender, int ACol, int ARow, const TRect &Rect, TGridDrawState State) { ... }
In der .h steht auch
void __fastcall mapGridDrawCell(TObject *Sender, int ACol, int ARow, const TRect &Rect, TGridDrawState State);
Und die Fehlermeldung lautet:
[ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall TForm1::DrawGrid1DrawCell(System::TObject *, int, int, Types::TRect&, System::Set<Grids::Grids__3, 0, 2>)' referenziert von I:\...\DEBUG\UNIT1.OBJ
Kann mir da jemand von Euch vielleicht weiter helfen? Wühl mich schon seit Stunden durch das Forum
Das const vorm TRect habe ich auf akari's Empfehlung in irgend einem Post hinzugefügt. Vorher hat der mein __fastcall gar nicht akzeptiert.
-
Hallo
Die Fehlermeldung bezieht sich auf eine Methode namens DrawGrid1DrawCell, aber dein Code-Auszug zeigt eine Methode mapGridDrawCell. Das hat nichts miteinander zu tun.
Vermutlich hattest du mal eine Methode namens DrawGrid1DrawCell, hast dann aber die Implementation gelöscht oder umbenannt. Nur die Deklaration steht noch da, und die muß nun noch gelöscht werden.bis bald
akari
-
Der Klatsch vom Schlag gegen meine Stirn wird wohl noch ne Zeit lang prickeln xD
Vielen Dank fürs Augenöffnen!