Zitat von
1ceman:
Nur das Problem ist, dass die Liste Die Elemente vom Typ TElement verwaltet und TElement den Typ TLinList nicht kennt und folglich nicht von der Procedure UserButton auf TabC zugreifen kann. Wenn ich "Tabc : TJvgTabControl;" jetzt bei TChat einfüge, dann hat jedes Element ein eigenes TabControl und nicht alle zusammen eins. Kann ich dem Typ TChat nicht einfach einen Zeiger auf das tabControl mitgeben, damit ich von dort aus
ein Tab hinzufügen kann?
Natürlich kannst du das machen, die Frage ist halt, musst du es tun. Es gibt immer irgendwo Punkte, wo sich eine Abhängigkeit nicht vermeiden lässt, dass ist so schon ok, die Kunst liegt darin die Abhängigkeiten so klein wie möglich zu halten.
Deine Liste z.B. ist hier z.B. eine (sorry) schlechte Lösung. Du kannst auch auf die TObjectList zurückgreifen. Dies ist eine Art von Liste, die mittels Arrays verwaltet wird. Die Implementierungsdetails sind aber (dank Kapselung) völlig egal. Du hast eine fertige Liste, die sogar wahlfreien Zugriff auf die Elemente (über den Index) erlaubt und doppelt-verkettet ist.
Was dein Problem angeht, ist halt die Frage, was genau UserButton machen soll. Ich meine klar, ich kann jetzt raten, aber weit würde ich wohl nicht kommen. Deshalb hier nochmal der Hinweis, der allg. für alle Beiträge gilt:
Je genauer und einfacher du dein Problem beschreibst, desto leichter kann dir jmd. helfen. Deshalb schreib lieber ein wenig mehr zum Problem. Das hilft allen. Wenn du dein Problem aufschreiben möchtest/musst, dann musst du dir vorher auch klar sein, worin es liegt (sonst klappt das mit dem Formulieren nicht), hierbei kommen einem häufig noch Ideen, so dass man selbst seine Fehler bemerkt bzw. eine Lösung findet. Andererseits hilft es den Leuten, die dir helfen wollen. Die können dir dann sehr genau sagen, wie geeignet dein Ansatz ist, dir evtl. Alternativen zeigen und vorallem dir direkt zum richtigen Problem helfen. Hier kommt es immerwieder vor, dass jmd. der denkt eine Beschreibung verstanden zu haben ein ganz anderes Problem löst.
Also sei doch so gut und erläuter erstmal in groben Zügen, was dein Programm so leisten soll. Wenn du dies getan hast (es muss ja nicht lang sein, versuche es aber auch verständlich zu halten, keiner ausser dir weiß was du vor hast), dann geh einfach auf dein konkretes Problem ein. Ich sehe, du möchtest hier auf ein Element zugreifen, mir ist nur leider überhaupt nicht klar warum? Was möchtest du mit dem Element machen? Was macht UserButton überhaupt? Und da es verdächtig nach einem Ereignis aussieht (bzw. dessen Behandlung), wann wird es ausgelöst?! Dir wird das alles sicherlich klar sein und da ist es auch verständlich, dass man mal übersieht, dass man ein paar Details zu vergisst / vorraussetzt (ubewußt), nur kann man dir so echt schwer helfen.