Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Fenster, welches man nur durch eine Sache schließen kann (https://www.delphipraxis.net/184381-fenster-welches-man-nur-durch-eine-sache-schliessen-kann.html)

Grayknife 21. Mär 2015 13:37

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Okey, manches verstehe ich, manches wiederum nicht :-D

Haben Sir Rufos Beispiel und mm1256 was gemeinsam? Also Ist eines Teil vom anderen oder so?

Ich lege also eine neue Form an, die nenne ich PauseForm.
Darein kommt ein Edit und ein Button, der Button ist erst aktivierbar, wenn in der OnChange-Prozedur des Edits, das editfeld mit dem Passwort übereinstimmt. Wenn man auf den Button klickt. schließt sich das Fenster und man kann weiter spielen.
Der Pausebutton beinhaltet nur PauseForm.showmodal ?

@mm1256 wie kann ich denn die Bordericons "deaktivieren" ? (damit ist doch jetzt schließen,minimieren,maximieren gemeint?! )
Und was bedeutet $00 ? :D Ich gehe also wieder im Objektinspektor auf Eigenschaften von der PauseForm und nutze die OnKeyUP und OnKeyDown prozedur oder so?!

@Sir Rufo was muss ich mit dieser Prozedur machen? Die LForm ist sozusagen die PauseForm. Ahh, da steige ich gerade nicht durch <,<
Sorry..:|

mm1256 21. Mär 2015 14:03

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Du bist schon auf der richtigen Spur. Das Beispiel von SirRufo ist so gedacht: Du erstellst in der neuen Form im Interface eine procedure zum Anzeigen der Form.

Bordericons deaktivieren machst du im OI (ObjectInspector) bei den Eigenschaften der Form.

Hinweis/Tipp: Du solltest mal in deinem Profil angeben, mit welcher Delphi-Version du arbeitest.

jaenicke 21. Mär 2015 19:34

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Ich würde es einfach so machen wie wohl 99% aller anderen Spiele:
Einfach den Spielinhalt ausblenden und erst mit dem richtigen Passwort wieder anzeigen.

Wie das konkret bei dir geht, hängt von der Art der Umsetzung ab. Wenn du z.B. die Elemente selbst zeichnest, kannst du das Zeichnen einfach unterbrechen, wenn du visuelle Komponenten wie Shapes missbrauchst, kannst du einfach ein Panel über das ganze Formular davorlegen.

Dann brauchst du auch kein neues Formular mit Sperren für das Schließen oder ähnliches, denn wenn einer der Mitspieler dann das Programm schließt, ist es einfach weg. Aber schummeln geht nicht.

Popov 21. Mär 2015 20:58

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Grayknife

Ich hab spaßeshalber ein Beispiel programmiert. Man kann es so machen, aber auch anders. Wenn du es selber machen willst, dann guck nicht rein, sonst reingucken.

Grayknife 22. Mär 2015 11:56

AW: Fenster, welches man nur durch eine Sache schließen kann
 
@Popov Ja genau so stell ich mir das vor! :) Nur bei dir gibt es auch noch einen Schließenknopf im Pausefenster <,<

Noch mal was anderes, ich habe jetzt alle Bilder mit
Delphi-Quellcode:
Bild.LoadfromFile(ExtractFilepath(ParamStr(0)) + 'Bilder\Bild.bmp');
zugewiesen, so dass ich jedes Bild in einen Unterordner bei der .Exe Datei verschoben habe.
das Klappt auch ganz gut! :)
Nun habe ich mir gedacht, machste das einfach auch mit den Sounds:
Delphi-Quellcode:
sndplaySound(ExtractFilepath(ParamStr(0)) + 'Sound\Spielsound.wav',SND_ASYNC or SND_LOOP);
-> Aber da kommt jetzt eine Fehlermeldung: "Inkompatible Typen: 'string' und 'PAnsiChar' "

Habe ich falsch gedacht? Ich habe einfach den Schnipselcode kopiert.
Funktioniert das so gar nicht mit sndplaysound bzw. kann man so nicht auf den Sound im Unterordner zugreifen?

BadenPower 22. Mär 2015 12:16

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Schau Dir doch die Fehlermeldung an, dort steht doch eigentlich schon, was Du tun musst.

Du musst doch nur den String
Delphi-Quellcode:
ExtractFilepath(ParamStr(0)) + 'Sound\Spielsound.wav'
in PAnsiChar umwandeln.

Popov 22. Mär 2015 12:17

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Zitat:

Zitat von Grayknife (Beitrag 1294397)
@Popov Ja genau so stell ich mir das vor! :) Nur bei dir gibt es auch noch einen Schließenknopf im Pausefenster <,<

Du solltest auf den Schließenknopf nicht verzichten, sonst hast du keine Möglichkeit aus dem Spiel auszukommen, wenn du dir z. B. auf dem Weg zu Klo das Bein brichts. Dann bekommt man dein Spiel nur noch über den Taskmanager beendet. Ein Ausstieg sollte es immer geben.

Und zu dem Problem:

Delphi-Quellcode:
sndplaySound(ExtractFilepath(ParamStr(0)) + 'Sound\Spielsound.wav',SND_ASYNC or SND_LOOP);
...
Der erste Parameter ist PChar, also musst du dein String Ergebnis auch so umwandeln.
Delphi-Quellcode:
sndplaySound(PChar(ExtractFilepath(ParamStr(0)) + 'Sound\Spielsound.wav'),SND_ASYNC or SND_LOOP);
...
Ansonsten kannst du dir das Beispiel hier angucken: http://www.delphipraxis.net/1294363-post7.html Da kommt auch Sound vor.

hathor 22. Mär 2015 13:06

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Die Function lockWindowUpdate ist in der Unit Windows.

Ein PASSWORD-Schutz ist einfach:

Delphi-Quellcode:
var s : String;

procedure TForm1.Button9Click(Sender: TObject);
begin
if Edit1.text='' then Exit;
s:=Edit1.text; // Passwort eingeben und MERKEN !
Edit1.text:='';
 lockWindowUpdate(self.handle); // LOCK
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
if Edit1.text='' then Exit;
if s=Edit1.text then
 lockWindowUpdate(0); // UNLOCK
end;

Sir Rufo 22. Mär 2015 14:31

AW: Fenster, welches man nur durch eine Sache schließen kann
 
@hathor

MS sagt definitiv nein zu deinem Vorschlag
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Eine Alternative steht auch in der Doku

hathor 22. Mär 2015 18:03

AW: Fenster, welches man nur durch eine Sache schließen kann
 
http://fgaillard.com/2011/02/the-unf...-wm_setredraw/


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
Seite 2 von 2     12   

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