AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim Zugreifen auf 2. Form

Ein Thema von Acuaplano · begonnen am 28. Jun 2013 · letzter Beitrag vom 28. Jun 2013
Antwort Antwort
Seite 1 von 3  1 23      
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#1

Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 13:59
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:07
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!")
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#3

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:19
Da gibt's nicht viel zu zeigen

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;
(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!")
Ja... Nur ist es glaub ich so, dass ich mit ganz vielen Fingern auf einen Arm drücke

Geändert von Acuaplano (28. Jun 2013 um 14:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:28
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.......
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (28. Jun 2013 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#5

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:32
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:
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;
So sollte es doch auch in der Theorie funktionieren, oder nicht?

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

Geändert von Acuaplano (28. Jun 2013 um 14:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.438 Beiträge
 
Delphi 12 Athens
 
#6

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:51
So wird das nichts. Zip das ganze Projekt und hänge es hier an.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#7

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 14:57
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.
Angehängte Dateien
Dateityp: zip Dialogeditor.zip (4,18 MB, 4x aufgerufen)

Geändert von Acuaplano (28. Jun 2013 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.438 Beiträge
 
Delphi 12 Athens
 
#8

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 15:03
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#9

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 15:12
Ja, es funktioniert mit Label1 auf Form1, aber nicht mit Label1 auf Form2 (dort wo links "brum" steht ).
Es stehen beide Befehle zum ändern in der gleichen Prozedur und es funktionieren tut nur einer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.438 Beiträge
 
Delphi 12 Athens
 
#10

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 15:48
Sorry Lazarus habe ich nicht. Die ProcessMessages-Aufrufe kommen mir allerdings recht überflüssig vor.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz