![]() |
Probleme beim Zugreifen auf 2. Form
Heyho,
ich arbeite grad' an einem Tool für ein Spiel und brauche dafür 2 Formulare. Hat soweit gut funktioniert, bis ich mich dem 2. Formular gewidmet hab: Das 2. Formular konnte ich soweit einbinden, sodass es auch angezeigt wird. Genauso ließen sich auch einfache Sachen für das Interface im 2. Formular erstellen (Button wird gedrückt -> Edit-Feld wird angezeigt). Das eigentliche Problem ist aber, dass sich manche Sachen in der 2. Form einfach nicht aufrufen lassen wollen. Damit meine ich z.b. ein Label, dass ich darauf platziert hab und ich es, was ich auch mache, nicht zur Laufzeit verändern kann. In der 1. Form funktioniert dabei alles wunderbar. Anderes Beispiel: Ich wollte anfangs die Größe eines Panels zur Laufzeit verändern, was im 2. Formular wieder nicht ging. Oder hier noch'n seltsames Beispiel: Das Deaktivieren von Edit-Feldern funktioniert, wenn ich es durch einen RadioButton INNERhalb des 2. Formulars mache. Wenn ich jetzt aber versuche aus der 1. Unit bzw. Form darauf zuzugreifen passiert nix. Selbst wenn ich ne extra Funktion schreibe, die das selbe tut, aber in der 2. Form steht (TForm2.Test), geht es nicht. Kann da jemand vielleicht irgendwelche logischen Zusammenhänge erkennen? :D |
AW: Probleme beim Zugreifen auf 2. Form
Ja, aber zeig doch mal den Code-Teil, wo du die zweite Form zum Leben erweckst
(Erinnert mich ein wenig an "Wenn ich mit dem Finger auf den Arm drücke tut es weh, und auch am Bein, am Kopf, am Fuß, usw. Was ist da los?" A: "Der Finger ist gebrochen!") |
AW: Probleme beim Zugreifen auf 2. Form
Da gibt's nicht viel zu zeigen :D
Delphi-Quellcode:
procedure TForm2.Test2;
begin Form1.Label1.Caption := 'Test'; // Funktioniert end; ... procedure TDialogBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer); begin Form2.Label1.Caption := 'Test'; // Funktioniert nicht end; Zitat:
|
AW: Probleme beim Zugreifen auf 2. Form
Also wenn das wirklich so ist wie Du in Deinem Beispiel beschreibst, dann solltet Du eigentlich ein paar Fehlermeldungen "...unbekannt.." bekommen.
Der Zugriff von Form1 auf Form2 funktioniert nur wenn Form1 auch in den USES aufgenommen wurde. Gleiches gilt auch umgekehrt. Nur der Zugriff von Form1 auf Form2 und von Form2 auf Form1 kann wegen zirkulärer Bezüge nicht funktionieren. Also zeig bitte auch mal die USES Einträge. Gruß K-H P.S. Was heißt hier überhaupt "funktioniert nicht"? Der Compiler wirft mit Fehlermeldungen um sich, es erscheint ein BlueScreen, statt des erwarteten Ergebnisses schaltet sich das Radio ein....... |
AW: Probleme beim Zugreifen auf 2. Form
Unit1:
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Unit2, ExtCtrls, Menus, StdCtrls, ActnList, Windows, Contnrs; type ... Unit2:
Delphi-Quellcode:
So sollte es doch auch in der Theorie funktionieren, oder nicht?
unit Unit2;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Buttons, Windows; type { TForm2 } TForm2 = class(TForm) ... end; var Form2: TForm2; implementation uses Unit1; Edit: "Funktioniert nicht" heißt in diesem Fall einfach nur, dass nix passiert! Ich wär ja froh, wenn da wenigstens ne Fehlermeldung irgendwo auftauchen würde, aber es tut sich ja nichts Edit2: Und mit den Uses sollte es ja nichts zu tun haben. Ich kann ja das Label, egal aus welcher Unit, nicht verändern |
AW: Probleme beim Zugreifen auf 2. Form
So wird das nichts. Zip das ganze Projekt und hänge es hier an.
|
AW: Probleme beim Zugreifen auf 2. Form
Liste der Anhänge anzeigen (Anzahl: 1)
Zu Befehl.
Tut mir Leid dafür, dass da nichts kommentiert ist. Wollte das eigentlich zum Ende hin machen, aber ich hoffe das sollte nicht zu Schlimm sein. Hab da auch teilweise ein paar Zeilen eingefügt zum Testen eingefügt, falls da mal was sinnlos erscheint. Edit: Es muss zuerst eine neue Dialogbox im Graphen erstellt werden (Neue Dialogbox -> 1 Verzweigung), bevor was im anderen Fenster (2. Form) verändert werden kann. |
AW: Probleme beim Zugreifen auf 2. Form
Funktioniert doch.
Form2.Test2 wird in TForm1.DeleteClick ausgeführt. Ich erzeuge also über Neue DialogBox - 1 Verzweigung ein Neues Objekt und wähle dann über das Kontextmenü "Löschen" an. Danach steht im Label1 ein "No". Das alles mit der EXE im Zip. |
AW: Probleme beim Zugreifen auf 2. Form
Ja, es funktioniert mit Label1 auf Form1, aber nicht mit Label1 auf Form2 (dort wo links "brum" steht :D).
Es stehen beide Befehle zum ändern in der gleichen Prozedur und es funktionieren tut nur einer :? |
AW: Probleme beim Zugreifen auf 2. Form
Sorry Lazarus habe ich nicht. Die ProcessMessages-Aufrufe kommen mir allerdings recht überflüssig vor.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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