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
Thema durchsuchen
Ansicht
Themen-Optionen

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 1 von 2  1 2      
Grayknife

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

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

  Alt 21. Mär 2015, 01:06
Hallo liebe DPler

Inzwischen bin ich nun schon schön weit mit meinem Schiffe versenken!

Jetzt möchte ich gerne eine Art Pause-Button hinzufügen, also wenn man zum Beispiel kurz auf die Toilette gehen muss, oder sich einen Kaffee holen möchte, oder einen Kuchen, oder eine Tomatensuppe, oder eine Flasche Wein, oder ein Handtuch, und und und

Dazu gibt es für jeden Spieler einen Knopf. Zuvor hat sich jeder Spieler einen Namen ausgesucht, sowie ein Passwort.
Dieses Passwort soll jetzt zur Geltung kommen. Wenn einer der Spieler seinen Pauseknopf betätigt, soll das Spiel angehalten werden, indem sich ein kleines Fenster öffnet, wo man nur sein Passwort eingeben kann und OK drücken kann. Jede Form, dieses Fenster anders zu schließen soll es nicht geben.
Versteht ihr wie ich das meine?
Gibt es sowas wie Inputbox, oder so was ähnliches, was speziell mein Problem lösen kann?

Grüße
Grayknife
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

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

  Alt 21. Mär 2015, 01:46
Wie du schon richtig lagst - die Inputbox heißt InputBox

s := InputBox('Titel', 'Irgendein Text', 'Irgendein Inhalt oder leer');
  Mit Zitat antworten Zitat
mm1256

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

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

  Alt 21. Mär 2015, 09:11
Hallo,

"InputBox" wird dir nicht weiter helfen. Es sei denn, du zeigst es in einer Schleife so lange an, bis das Passwort übereinstimmt. Das ist jedoch meiner Meinung nach schlechter Programmierstil und für den/die Spieler auch nicht hilfreich, denn der Abbrechen-Button ist dann zwar vorhanden, aber quasi ohne Funktion.

Was du brauchst ist ein Formular welches du modal anzeigst (ShowModal) wo du

- alle BorderIcons deaktivierst, damit das Fenster nicht mit der Maus geschlossen werden kann

- Das Ereignis "onKeyDown" oder "OnKeyUp" abfängst. Hier musst du verhindern, dass das Formular mit Alt+F4 bzw. Crtl+F4 geschlossen wird. Wenn F4 gedrückt wird, setzt du Key einfach auf $00;

Auf das Formular setzt du ein TEdit und einen Ok-Button. Im OnChange-Ereignis des TEdit setzt du "Enabled" des Buttons auf True, wenn das Passwort übereinstimmt.
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 Sir Rufo
Sir Rufo

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

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

  Alt 21. Mär 2015, 09:33
Nur mal so auf die Schnelle:
Delphi-Quellcode:
procedure PasswordForm( const UnlockPassword : string );
var
  LForm : TPasswordForm;
begin
  LForm := TPasswordForm.Create( nil );
  try
    repeat
      LForm.ShowModal;
    until LForm.Password = UnlockPassword;
  finally
    LForm.Free;
  end;
end;
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 21. Mär 2015, 10:14
Vielleicht noch einen Abbrechenbutton mit einbauen, sonst kommt man dort nie wieder raus, außer das ist so gewollt.

Delphi-Quellcode:
function PasswordForm(const UnlockPassword: string): Boolean;
var
  LForm: TPasswordForm;
begin
  LForm := TPasswordForm.Create(nil);
  try
    //Result := (LForm.ShowModal = mrOK) and (LForm.Password = UnlockPassword); // nur einmal fragen, ohne Schleife
    while (LForm.ShowModal = mrOK) and (LForm.Password <> UnlockPassword) do ;
    Result := (LForm.ModalResult = mrOK) and (LForm.Password = UnlockPassword); // Result := LForm.Password = UnlockPassword;
  finally
    LForm.Free;
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Mär 2015 um 10:16 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
 
#6

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

  Alt 21. Mär 2015, 10:28
Vielleicht noch einen Abbrechenbutton mit einbauen, sonst kommt man dort nie wieder raus, außer das ist so gewollt.
Es ist so gewollt
Jede Form, dieses Fenster anders zu schließen soll es nicht geben.
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 21. Mär 2015, 10:38
Ich würde das aber eher als "Bug" bezeichnen und dann den Taskmannager bitten es zuzumachen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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
 
#8

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

  Alt 21. Mär 2015, 10:44
Ich würde das aber eher als "Bug" bezeichnen und dann den Taskmannager bitten es zuzumachen.
Wieso ist es ein Bug, wenn die Anforderung genau so lautet?

Man kann sich fragen ob die Anforderung sinnvoll ist, aber ein Anwendungs-Bug ist das definitiv nicht, eher ein Design-Fehler bei der Anforderung
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 21. Mär 2015, 10:50
OK, so ausgedrückt klingt es besser.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mm1256

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

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

  Alt 21. Mär 2015, 11:38
Na ja, ich denke auch, weder Anwendungs-Bug noch Design-Fehler. Im Gegenteil, finde es als sinnvoll wenn ich als Spieler mal eine Pause (aus welchen Gründen auch immer) einlegen möchte/muss, dann sollen die Mitspieler nicht ohne mich weiter spielen können, und/oder sich irgendwelche anderen Vorteile von meiner Abwesenheit haben.
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
Antwort Antwort
Seite 1 von 2  1 2      

 

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 17:04 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