Delphi-PRAXiS
Seite 1 von 2  1 2   

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

Fenster, welches man nur durch eine Sache schließen kann
 
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 :-D

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

Popov 21. Mär 2015 01:46

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Wie du schon richtig lagst - die Inputbox heißt InputBox :D

Delphi-Quellcode:
s := InputBox('Titel', 'Irgendein Text', 'Irgendein Inhalt oder leer');

mm1256 21. Mär 2015 09:11

AW: Fenster, welches man nur durch eine Sache schließen kann
 
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.

Sir Rufo 21. Mär 2015 09:33

AW: Fenster, welches man nur durch eine Sache schließen kann
 
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;

himitsu 21. Mär 2015 10:14

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Vielleicht noch einen Abbrechenbutton mit einbauen, sonst kommt man dort nie wieder raus, außer das ist so gewollt. :lol:

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;

Sir Rufo 21. Mär 2015 10:28

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

Zitat von himitsu (Beitrag 1294315)
Vielleicht noch einen Abbrechenbutton mit einbauen, sonst kommt man dort nie wieder raus, außer das ist so gewollt. :lol:

Es ist so gewollt
Zitat:

Zitat von Grayknife (Beitrag 1294291)
Jede Form, dieses Fenster anders zu schließen soll es nicht geben.


himitsu 21. Mär 2015 10:38

AW: Fenster, welches man nur durch eine Sache schließen kann
 
Ich würde das aber eher als "Bug" bezeichnen und dann den Taskmannager bitten es zuzumachen. :oops:

Sir Rufo 21. Mär 2015 10:44

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

Zitat von himitsu (Beitrag 1294318)
Ich würde das aber eher als "Bug" bezeichnen und dann den Taskmannager bitten es zuzumachen. :oops:

Wieso ist es ein Bug, wenn die Anforderung genau so lautet? :gruebel:

Man kann sich fragen ob die Anforderung sinnvoll ist, aber ein Anwendungs-Bug ist das definitiv nicht, eher ein Design-Fehler bei der Anforderung :stupid:

himitsu 21. Mär 2015 10:50

AW: Fenster, welches man nur durch eine Sache schließen kann
 
OK, so ausgedrückt klingt es besser. :D

mm1256 21. Mär 2015 11:38

AW: Fenster, welches man nur durch eine Sache schließen kann
 
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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf