![]() |
Auf anderes Fenster zugreifen
Hallo,
wie kann ich mit delphi .Net auf andere Fenster zu greifen. Wenn ich diese wähle, kann ich noch nichtmal auf ein einfaches Label zu greifen. z.b.
Delphi-Quellcode:
Dieses kann ich noch nichtmal kompilieren. Ich kann doch keine größere Anwendung mit nur einen Fenster schreiben...
procedure DatenBox.Button1_Click(sender: System.Object; e: System.EventArgs);
begin hauptform.label1.text := "Test"; end; |
Re: Auf anderes Fenster zugreifen
Kannst du für die Zukunft bitte mal genauere Fehlermeldungen schreiben als nur
Zitat:
|
Re: Auf anderes Fenster zugreifen
Ich denke mal er meint das er von einer 2. Form aus Irgendwas auf einer anderen Form ändern will.
1. Srings werden in ein ' und nicht in " gepackt. 2. du must die Unit deiner "Hauptform" in die Unit deiner "DatenBox" mit eintragen dann kannst du von da aus auch auf deiner "HauptForm" zugreifen. Wenn die Unit deiner "HauptForm" Unit1 heist must du das so eintragen. implementation uses unit1; |
Re: Auf anderes Fenster zugreifen
Zitat:
Zitat:
|
Re: Auf anderes Fenster zugreifen
Wie ich in einem anderen bereits schrieb: .Net kennt keien globalen Variablen!
Auch wenn D.Net das vor dir versteckt wird es nicht mehr standardmäßige diese "Dinger" vom Formdesigner anlegen. Du kannst zwar im Formdesigner festlegen welche Sichtbarkeit ein Control haben soll, aber ich kann keinen Sinn Sinn darin sehen sehen, warum ein Form Zugriff auf Controls eines anderen haben sollte. :gruebel: Um dir mal einen einfachen Weg zu zeigen (nicht unbedingt optimal, aber für den Anfang verständlich ;) ): Du könntest dem 2 Form. eine Property verpassen, die den Owner auf den Typen deines Hauptformulars wandelt.
Delphi-Quellcode:
Wenn das n D.Net nicht geht, dann:
property MainForm :MainForm read Owner as MainForm;
Delphi-Quellcode:
Dadurch kannst du im 2. Form easy auf Properties des MainForms zugreifen ohne ständig umwandeln zu müssen.
property MainForm :MainForm read get_MainForm;
... function AnderesForm.get_MainForm : MainForm; begin result := Owner as MainForm; end; Wenn du das Form anlegst übergibst du ihm das aufrufende Formular als Owner:
Delphi-Quellcode:
Das MainForm braucht nun natürlich auch eine Property, die dich den text des Labels von außerhalb ändern lässt:
using Dlg := AnderesForm.Create() do
begin Dlg.Owner := self; Dlg.ShowDialog(); end;
Delphi-Quellcode:
Falls D.Net keine inline Properties kennt, musst du es wie oben mit einem getter & setter machen. ;)
property DingsBums : string read label1.Text write label1.Text;
Im anderen Form reicht nun ein:
Delphi-Quellcode:
Nachtrag: Ups, da stand doch noch ein "new Anderesform()" :mrgreen:
MainForm.DingsBums := 'Test';
|
Re: Auf anderes Fenster zugreifen
Zitat:
Angefangen von irgendwelchen Initialiesierungsdaten wie Optionen (z.b. Farben) bis hin zu kompletten Datenmengen, die man auf der einen Form definiert aber auf verschiedenen Forms nutzt. Wie würdest du den obrige Beispiele handeln? :gruebel: |
Re: Auf anderes Fenster zugreifen
Zitat:
.Net + globale Variablen -> (geht nicht) or (proprietärer, hässlicher D.Net Hack). Gewöhne dich einfach daran, dass .Net eine OOP Umgebung ist in der altertümliche Dinge wie globale Variablen nicht mehr existieren. |
Re: Auf anderes Fenster zugreifen
Während ich die Antwort geschrieben habe, hast du deine gepostet. Und als ich sie umgeschrieben habe, hast du dieses geschrieben.
Zitat:
|
Re: Auf anderes Fenster zugreifen
Zitat:
Sie sind eine perfekte Lüsung für alle, die zu faul/unfähig sind es richtig zu machen. Wenn man 2cm weiter als zu Nasenspitze denkt wird einem bei dem Gedanken kotzübel, dass sie überall beschrieben werden könnten ohne dass du darauf reagieren kannst... Zitat:
Zitat:
|
Re: Auf anderes Fenster zugreifen
Ich mach nur das, was ich aus Delphi Büchern gelernt habe. Z.B: Borland Delphi 4 von Walter Doberenz und Thomas Kowalski. Dort habe ich das mit den globalen Variablen her..., die dort halt als die perfekte Lösung hin gestellt werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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-2025 by Thomas Breitkreuz