AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Fenster, welches man nur durch eine Sache schließen kann

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

Ein Thema von Grayknife · begonnen am 21. Mär 2015 · letzter Beitrag vom 22. Mär 2015
Antwort Antwort
Seite 2 von 2     12
Grayknife

Registriert seit: 13. Feb 2015
Ort: Hessen
26 Beiträge
 
#11

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

  Alt 21. Mär 2015, 14:37
Okey, manches verstehe ich, manches wiederum nicht

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 ? 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..
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

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

  Alt 21. Mär 2015, 15:03
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.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.626 Beiträge
 
Delphi 11 Alexandria
 
#13

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

  Alt 21. Mär 2015, 20:34
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#14

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

  Alt 21. Mär 2015, 21:58
@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.
Angehängte Dateien
Dateityp: zip Passwortabfrage.zip (3,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Grayknife

Registriert seit: 13. Feb 2015
Ort: Hessen
26 Beiträge
 
#15

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

  Alt 22. Mär 2015, 12:56
@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 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:
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?
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#16

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

  Alt 22. Mär 2015, 13:16
Schau Dir doch die Fehlermeldung an, dort steht doch eigentlich schon, was Du tun musst.

Du musst doch nur den String ExtractFilepath(ParamStr(0)) + 'Sound\Spielsound.wav' in PAnsiChar umwandeln.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#17

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

  Alt 22. Mär 2015, 13:17
@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.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#18

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

  Alt 22. Mär 2015, 14:06
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;

Geändert von hathor (22. Mär 2015 um 14:08 Uhr)
  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
 
#19

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

  Alt 22. Mär 2015, 15:31
@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
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
hathor
(Gast)

n/a Beiträge
 
#20

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

  Alt 22. Mär 2015, 19:03
http://fgaillard.com/2011/02/the-unf...-wm_setredraw/
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:45 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