![]() |
Delphi-Version: 7
Kann nicht auf Komponente auf anderer Form zugreifen?
Es geht dabei um ein Projekt was ich nicht selbst programmiert habe, sondern ein Kollege der aber mittlerweile nicht mehr hier arbeitet, also weiß ich nciht genau was er hier gemacht hat.
Ich habe das Projekt um die Unit "uFahrer" erweitert. "uFahrer" steht in der Uses-Liste der Unit "Gate" und wird mit "frmFahrer.ShowModal" aufgerufen. Nun will ich aus der "uFahrer" ein TEdit-Feld in "Gate" füllen. Habe also "Gate" in die Uses-Liste von "uFahrer" aufgenommen. Nun ging ich davon aus das ich mit "GateFrame.edFahrer.Text := 'Fahrer'" auf edFahrer zugreifen könnte. Kann ich aber nicht?! ("GateFrame" ist der Name des Formulars) "Undfinierter Bezeichner: GateFrame" ist die Aussage des Compilers. Wenn ich mit Strg auf "Gate" klicke in meiner USes-Liste öffnet er auch die richtige Unit, also gehe ich doch davon aus das ihm diese bekannt ist?! Womit kann das noch zusammenhängen das ich da nicht hinkomme? |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Und dabei blickst Du noch durch? Wenn sich 2 Units gegenseitig einbinden deutet das fast immer auf schlechtes Design hin. Besser Du entscheidest Dich für eins der beiden und tauschst Daten über eine Property aus.
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Was gibts da nicht zu blicken? Es sind nur 2 Units. uFahrer und Gate.
Gate beinhaltet Eingabefelder für Fahrerdaten. uFahrer bietet eine Liste aller Fahrer die sich im Moment auf dem Gelände befinden. (Es geht dabei nicht nur um den Namen, sondern noch weitere Daten die in verschiedene Felder gefüllt werden müssen. Daher kommt eine Dropdownbox o.ä. nicht in Frage). in uFahrer habe ich nun meine Tabelle mit den Fahrern. Da mache ich Doppelklick auf einen und die Daten werden ins die richtigen Felder in Gate gefüllt? Klingt für mich nicht kompliziert. Und im "kleinen maßstab" (Ein Projekt mit nur 2 Forms, die jeweils nur eine TButton und TEdit Komponente enthalten) geht das auch problemlos. |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Zitat:
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Weils mir nicht viel bringt das ich weiß das es im "kleinen Maßstab" funktioniert.
Es muss auch in meinem richtigen Projekt funktionieren, und nicht nur in meinem kleinen Testprojekt. Und daher die Frage wodran es noch liegen kann das Form2 Form1 nicht erkennt. |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Bist Du Dir denn sicher dass GateFrame wirklich der Name des aufrufenden Formulars ist ? Alleine von der Bezeichnung hätte ich auf ein Formular getippt, in dem das Frame liegt, so dass Du das über Formular.Gateframe. aufrufen musst
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Zitat:
Dann müsste ich nurnoch rausfinden in welchem Formular das Frame liegt. |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Mal ein Beispiel für das von mir gemeinte mit 3 Units:
Delphi-Quellcode:
unit uFahrer;
uses ...; type TFahrer = class ... end;
Delphi-Quellcode:
unit uListenformular;
uses ..., uDetailformular, Fahrer; ... Detailformular.Fahrer := Fahrer_aus_Liste; Detailformular.ShowModal;
Delphi-Quellcode:
Somit genügt es, wenn das Listenformular das Detailformular kennt, andersherum muss nicht.
unit uDetailformular;
uses ..., uFahrer; type TDetailformular = class(TForm) ... private FFahrer: TFahrer; public property Fahrer: TFahrer read FFahrer write FFahrer; |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Ruf mal über Ansicht die Objekthirachie auf und wähle GateFrame an. Dann siehst Du im Treeview der Objekthirachie ob es ein übergeordnetes Element gibt
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Zitat:
Hab auch mit Propertys noch nicht gearbeitet, bin noch relativ neu in Delphi. Ich weiß auch nicht genau was bei dir Listenformular und Detailformular sein soll. Aber meiner Meinung nach machen die Aufrufe so keinen Sinn. Wenn ich in der unit "Gate" in die objekthierarchie schaue ist "GateFrame" logischerweise ganz oben, ohne übergeordnete Elemente da sich die Objekthierarchie ja nur auf die ausgewählte unit bezieht. |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Zitat:
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Ok, hab ich schon vermutet das es so ist. Daher auch meine Verwirrung.
Wieso ruft das Listenformular denn das Detailformular auf? Das Listenformular wird per Button auf dem Detailformular doch erst per ShowModal geöffnet. |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Das verstehe ich nun wieder nicht. Ich denke, Du willst Details zum aktuellen Listenelement bearbeiten?
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Nein, so ist es nicht^^ Sry, dann haben wir uns etwas falsch verstanden. Ich versuchs nochmal ;)
Also, ich habe 5 Eingabefelder auf meinem Detailformular (Gate). Diese sind leer, hier wird nichts ausgewählt. Per Klick auf einen Button erhält der benutzer nun eine Liste mit sämtlichen Fahrern die sich zur Zeit auf dem Gelände befinden. Mit Daten wie Name, Vorname, Spedition, Ware, Kennzeichen... Hier wählt der Benutzer einen Datensatz aus und die Daten werden in die Felder auf dem Detailformulat geladen. Hoffe so ist es verständlicher was ich will :) |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Liste der Anhänge anzeigen (Anzahl: 1)
Dafür gilt das Gesagte aber äquivalent. Ich baue mal schnell ein Beispiel.
[edit] Bitteschön, extra in Delphi 7 ;) [/edit] |
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Danke :) Würde mir sicher helfen ;)
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Siehe mein Edit im letzten Beitrag.
|
AW: Kann nicht auf Komponente auf anderer Form zugreifen?
Vielen Dank :)
Ich werde mir das mal zu Gemüte führen. Ist auf jedenfall genau die Funktionalität die ich brauche ;) Ich denke mein Problem ist/war das ich noch nicht wirklich objektorientiert programmiert habe in Delphi. Also mit eigenen Klassen und Objekten. Das sollte ich vielleicht mal nachholen und mich da etwas belesen :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz