Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fokus auf mehrere Komponenten setzen (https://www.delphipraxis.net/187996-fokus-auf-mehrere-komponenten-setzen.html)

Freyr77 1. Feb 2016 09:05

AW: Fokus auf mehrere Komponenten setzen
 
So, nun habe ich nach einer Woche mein Programm wieder geöffnet. Was vorher funktioniert hat, funktioniert jetzt nicht mehr so wirklich. Ich versuche vom Hauptmenü mit Hilfe eines Buttons die Unit für den Spielmodus zu öffnen.

Das sieht so aus:

Delphi-Quellcode:
procedure TForm2.btnspielmodus501Click;
var
  Form1: TTSpielmodus501;
begin
Form1:=TTSpielmodus501.Create(self);
if FileExists('C:\Users\BERGMANN\Documents\DartProjekt\Spielmodus501.pas') then begin
  TTSpielmodus501.ShowModal;
  end else begin
    MessageDlg('Spiel konnte nicht gestartet werden', mtError, [mbOK], 0);
  end;
end;
So weit, so gut. Das hat schon immer funktioniert. Es ist auch nichts rot markiert. Jetzt sagt er mir aber beim kompilieren auf einmal :

"Diese Form des Methodenaufrufs ist nur für Klassenmethoden oder Konstruktoren zulässig"

Hat da jemand Lösungsansätze?

Sir Rufo 1. Feb 2016 09:15

AW: Fokus auf mehrere Komponenten setzen
 
Nur eine Instanz kann man mit
Delphi-Quellcode:
ShowModal
zum Anzeigen überreden. Die Klasse selber ist nur die Beschreibung.

Mit Auto kann man nicht fahren, sondern mit dem Auto oder mit deinem Auto (eben etwas Konkretem und nicht mit einer Definition).

Insgesamt sieht das was du dort machst sehr seltsam aus. Wozu prüfst du diese *.pas Datei ab? Das ist eine Anleitung, wie dein Programm gebaut werden soll.

Das ist dann so, dass du dein Auto nur dann benutzen könntest, wenn du auch die Konstruktionspläne besitzt. Hört sich seltsam an :stupid:

Freyr77 1. Feb 2016 09:15

AW: Fokus auf mehrere Komponenten setzen
 
Hat sich erledigt, war mal wieder ein Flüchtigkeitsfehler..

Sir Rufo 1. Feb 2016 09:18

AW: Fokus auf mehrere Komponenten setzen
 
Zitat:

Zitat von Freyr77 (Beitrag 1328918)
Hat sich erledigt, war mal wieder ein Flüchtigkeitsfehler..

Auch das Prüfen der *.pas Datei?

Delphi hat einen Compiler und keinen Interpreter. Der Quellcode wird nach der Erstellung von der Anwendung selber nicht mehr benötigt.

Freyr77 1. Feb 2016 09:19

AW: Fokus auf mehrere Komponenten setzen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1328919)
Zitat:

Zitat von Freyr77 (Beitrag 1328918)
Hat sich erledigt, war mal wieder ein Flüchtigkeitsfehler..

Auch das Prüfen der *.pas Datei?

Delphi hat einen Compiler und keinen Interpreter. Der Quellcode wird nach der Erstellung von der Anwendung selber nicht mehr benötigt.

Wie gestalte ich das denn eleganter? Was ich mit dem Code erreichen will ist aber verständlich, oder?

Sir Rufo 1. Feb 2016 09:30

AW: Fokus auf mehrere Komponenten setzen
 
Ich kann nur raten, was du da möchtest.

Du willst prüfen, ob es diesen Spielmodus 501 gibt.

Wenn es den allerdings nicht gibt, dann gibt es auch keine Klasse
Delphi-Quellcode:
TSpielmodus501
und du kannst das Programm gar nicht erstellen.

Freyr77 1. Feb 2016 09:41

AW: Fokus auf mehrere Komponenten setzen
 
Der Button in TForm2 soll das OnCreate von der unit Spielmodus501(TForm1) öffnen.

Also das ist quasi die Auswahl, dass man diesen Spielmodus spielen will. Danach erfolgt die Eingabe der Namen und dann starte das ganze.

Er kompiliert das ganze auch so, wenn ich allerdings auf den Button drücke sagt er mir jetzt Zugriffsverletzung bei Adresse 00000000..

Sir Rufo 1. Feb 2016 09:44

AW: Fokus auf mehrere Komponenten setzen
 
Dafür reicht
Delphi-Quellcode:
procedure TForm2.btnspielmodus501Click;
var
  Form1: TTSpielmodus501;
begin
  Form1 := TTSpielmodus501.Create( self );
  Form1.ShowModal;
end;
Ich weiß nur nicht, ob du mit dieser lokalen Variablen glücklich wirst ... aber das wirst du dann schon sehen ;)

Zitat:

Zitat von Freyr77 (Beitrag 1328927)
Er kompiliert das ganze auch so, wenn ich allerdings auf den Button drücke sagt er mir jetzt Zugriffsverletzung bei Adresse 00000000..

Ich wette mal, dass du in
Delphi-Quellcode:
TTSpielmodus501
auf die Variable
Delphi-Quellcode:
Form1
zugreifen möchtest ...

Ersetze das dort einfach mal mit
Delphi-Quellcode:
Self
.

Freyr77 1. Feb 2016 11:09

AW: Fokus auf mehrere Komponenten setzen
 
Delphi-Quellcode:
procedure TTSpielmodus501.SiegerSpieler1;
begin
  if (lblpunktestand1.Caption < inttostr(1)) then
  ShowMessage('spielername1' + 'hat das Spiel gewonnen.');
  end;
Nächstes Problem: Ich habe jetzt diese Prozedur geschrieben, um zu sehen ob es funktioniert. Habe sie in OnCreate eingebunden. Es passiert allerdings NICHTS wenn der Punktestand auf 0 geht.

frankyboy1974 1. Feb 2016 13:47

AW: Fokus auf mehrere Komponenten setzen
 
hallo,

Zitat:

Habe sie in OnCreate eingebunden. Es passiert allerdings NICHTS wenn der Punktestand auf 0 geht.
Es reicht nicht wenn du die Methode einmalig im OnCreate aufrufst, du musst Sie schon bei jeder Änderung des Punktestandes neu aufrufen.

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.
Seite 3 von 4     123 4      

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