Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Objekt Werte von MainForm in Unit2 übergeben, gehts kürzer?
Xearox - Sa 20.03.10 00:33
Titel: Objekt Werte von MainForm in Unit2 übergeben, gehts kürzer?
Also, meine Frage ist hier, wie kann ich Folgenden Code in Unit2 Verkürzen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure RessProWave; begin if not (Main.Form1.PBGold.Position=0) then begin
end; end; |
Ich will den Wert der Position der ProgressBar aus meiner Main Unit in der Unit2 Verwenden.
Ich habe hier in irgendeinen Thread gelesen, das man sowas in Public schreiben muss, jedoch komm ich da nicht weiter, da steht immer wieder, das der name PBGold nicht deklariert sei.
Also habe ich das so wie oben Probiert, so geht es, aber ich finde das einfahc zu lang, ich denke das es Kürzer geht, jedoch weiß ich nicht wie, kann mir hier jemand helfen?
jaenicke - Sa 20.03.10 00:42
Dafür deklariere am besten ein Ereignis. Direkt auf Interna des zweiten Fensters so zuzugreifen ist unnötig kompliziert und unübersichtlich.
Xearox - Sa 20.03.10 00:50
Meinst du, das ich die Position der Progressbar als Variable in der MainUnit Festlegen soll, und diese dann in Unit2 verwenden soll?
Also Beispiel
MainUnit
Delphi-Quelltext
1:
| GoldVorrat:=PBGold.Position; |
jaenicke - Sa 20.03.10 01:00
Wenn, dann an die zweite Unit übergeben:
Delphi-Quelltext
1: 2: 3: 4:
| procedure MachMist(Value1: String; ProgressDisplay: TProgressBar); begin ProgressDisplay.Position ... end; |
Das meinte ich zwar nicht, geht aber natürlich auch, ist halt nur nicht ganz so elegant.
Delete - Sa 20.03.10 02:30
Beides ist schlecht. Warum nicht auf die Daten und/oder Ereignisse zurückgreifen von denen auch die Fortschrittanzeige ihre Daten erhält?
Xearox - Sa 20.03.10 02:51
wie meinst du das genau?
ffgorcky - So 21.03.10 14:52
Also ich denke mal, dass Du das hier so weißt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| type TForm1 = class(TForm) private Wert:String; public function WertAusForm1():String; end;
public function TForm1.WertAusForm1():String; begin WertAusForm1:=Wert; end; |
Dann könntest Du aus Deiner Form2 doch so darauf zugreifen:
Delphi-Quelltext
1:
| meinWertAusForm1:=Form1.WertAusForm1(); |
Oder möchtest Du da doch wirklich direkt drauf zugreifen? - Dann müsstest Du doch einfach nur das Ganze so schreiben, indem Du Deinen Wert eben wirklich als
public definierst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TForm1 = class(TForm) private public Wert:String; end; |
Dann heißt die Abfrage aus Form2 so:
Delphi-Quelltext
1:
| meinWertAusForm1:=Form1.Wert; |
Oder habe ich das ganze jetzt als zu einfache Fragestellung verstanden?
Dann entschuldigt...
Ich sehe ja gerade,
138 Beiträge können nicht mal eben von einem Neuling sein.
Xearox - So 21.03.10 15:46
ich lerne halt dazu.
Ich versuche erst ein Problem zu lösen, bevor ich das nächste anpacke.
Wenn ich irgendwas nicht verstehe, google ich danach, und versuch irgendwelche Tutorials darüber zu finden.
Also ich habe mehrere Units.
In der MainUnit erstelle ich Objekte auf der Form, die ich in den anderen Units verwenden möchte, wie zum Beispiel die ScrollBar, welche ich nutze, grafisch dazustellen, wie viele Ressourcen noch zum Abbauen vorhanden sind. Nun ist das so, das ich in der Unit Buildings dies so geschrieben hab: GoldVorrat:=Main.Form1.PBGold.Position;
die ScrollBar hab ich in der Form1 "PBGold" genannt, Buildings hat keine Form, ist einfach eine Unit, welche ich dazu verwende, die MainUnit übersichtlicher zu machen. Also jede Funktion oder Procedure auszulagern.
Nun ist die Frage, wie kann ich die ScrollBar, welche den namen PBGold hat, in der Unit Buildings, auch als PBGold verwenden kann, und nicht immer schreiben muss "Main.Form1.PBGold.Position".
weil wenn ich die in Public verschiebe, macht delphi Probleme, und meckert rum. (Also das hier in Public verschieben "ScrollBar1: TScrollBar;" und "procedure ScrollBar1Change(Sender: TObject);")
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!