Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inputbox Eingabe als "*********" (https://www.delphipraxis.net/84912-inputbox-eingabe-als-%2A%2A%2A%2A%2A%2A%2A%2A%2A.html)

mafiaente 23. Jan 2007 15:19


Inputbox Eingabe als "*********"
 
hallo,
also ich möchte so ne kleine nöchte-gern-passwortabfrage über einen inputdialog gestalten, indem man dort sein PW eingibt, dies dann mit nem vorher festgelegten string verglichen wird un dann entweder was passiert oder nicht! so mein problem ist jetz wie ich das mache, dass in dem inputdialog solche * kommen wie das so üblich ist! soll ja schließlich nich jeder mein topgeheimes PW sehen^^
hoffe mir kann das jmd näher bringen das in dem feld nur ******* zu sehen is

sakura 23. Jan 2007 15:23

Re: Inputbox Eingabe als "*********"
 
Schau Dir mal die Eigenschaft PasswordChar vom TEdit im Objektinspektor an ;)

...:cat:...

3_of_8 23. Jan 2007 15:23

Re: Inputbox Eingabe als "*********"
 
Setze "PasswordChar" auf #42.

xZise 23. Jan 2007 15:55

Re: Inputbox Eingabe als "*********"
 
@ Vorposter:

Zitat:

Zitat von mafiaente
also ich möchte so ne kleine nöchte-gern-passwortabfrage über einen inputdialog gestalten

@ Thread:
Erstelle eine neue Form, und benutzte da den Tipp von oben.

[edit]Mal eine Anleitung:
- Erstelle eine public-function "ShowModal" mit einen Boolean als Rückgabewert
- Erstelle eine Variable (oder Property) "Password" (o.s.ä.) von dem Typ "string"
- Erstelle eine private Variable "Aborted" (o.s.ä.) vom Typ Boolean
- Schreibe in der ShowModalFunktion:
Delphi-Quellcode:
ePW.text := '':
aborted := true;
inherited ShowModal;
Result := not aborted;
ePW ist das Edit in den man das Passwort schreibt.
- Schreibe beim Klick auf den Button "OK" folgenden Code:
Delphi-Quellcode:
Password := ePW.Text;
aborted := false;
- Jetzt kann man in der Hauptanwendung die Form aufrufen fast so wie ein Dialog ;)
Delphi-Quellcode:
if frmPW.ShowModal then
  PW := frmPW.Password;
[/edit]

gordon freeman 24. Jan 2007 16:24

Re: Inputbox Eingabe als "*********"
 
Hi,
ich wollte mir ein Modal angezeigtes Form bauen, was genau wie nach deiner Anleitung beschrieben angezeigt werden soll. Es wird eine TXT-Datei angezeigt und dann kann das Form mit einem Klick auf den Weiter-Button geschlossen werden. Allerdings schließt sich das Form nicht. Hier der Quelltext:

Delphi-Quellcode:
unit UFrmMsg;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TFrmMsg = class(TForm)
    MemoMsg: TMemo;
    BtnContinue: TButton;
    procedure BtnContinueClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function ShowModal(MsgFilePath : string):boolean;  
  end;

var
  FrmMsg: TFrmMsg;
  aborted : boolean;

implementation

{$R *.DFM}

{ TFrmMsg }

function TFrmMsg.ShowModal(MsgFilePath: string): boolean;
begin
  aborted := true;
  MemoMsg.Clear;
  try
    MemoMsg.Lines.LoadFromFile(MsgFilePath);
  except
    Application.MessageBox('An Error occured opening the file','File not found',MB_OK);
  end;
  inherited ShowModal;
  result := not aborted;
end;

procedure TFrmMsg.BtnContinueClick(Sender: TObject);
begin
  aborted := false;
end;

procedure TFrmMsg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.Terminate;
end;

end.
@Mods Ich weiß, dass gilt: Neue Frage - Neuer Thread, allerdings hängt meine Frage IMHO direkt mit der hier gestellten Frage zusammen. Wenn ihr nicht der Ansicht seit, verschiebt meine Frage bitte in einen geeigneten Bereich.

tia, Martin

shmia 24. Jan 2007 16:34

Re: Inputbox Eingabe als "*********"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Passwort Abfrage gibt es schon fix & fertig.
Der Dialog erlaubt nicht nur das Abfragen eines Passworts,
sondern enthält auch einen Passwort-Ändern-Dialog.
Hier die relevanten Properties:
Delphi-Quellcode:
  // PwChange = True: Change PW Dialog
  // PwChange = False: Input PW Dialog
  property PwChange:Boolean read FPwChange write FPwChange;
  property Caption : string read FCaption write FCaption;
  property OldPassword : string read FOldPassword write FOldPassword;
  property MinLen : integer read FMinLen write FMinLen;
  property NewPassword : string read FNewPassword;

gordon freeman 24. Jan 2007 16:49

Re: Inputbox Eingabe als "*********"
 
Ich glaube, du hast mich nicht richtig verstanden, ich wollte KEINEN Passwortdialog, sondern nur vom Gedanken her einen Modal-Dialog, in dem ein Memo mit Text angezeigt wird und der nach dem Klick auf einen Button verschwindet. Leider funktioniert es nicht so, wie es oben beschrieben wurde, das ist mein Problem.

Khabarakh 24. Jan 2007 16:52

Re: Inputbox Eingabe als "*********"
 
Zitat:

Zitat von gordon freeman
[...]und dann kann das Form mit einem Klick auf den Weiter-Button geschlossen werden.

Nunja, dann solltest du auch genau das noch in den Quelltext einfügen ;) .

gordon freeman 24. Jan 2007 16:53

Re: Inputbox Eingabe als "*********"
 
Wofür dann diese "aborted" Variable, das habe ich noch nicht verstanden. Ist die dann nicht überflüssig?

Khabarakh 24. Jan 2007 17:11

Re: Inputbox Eingabe als "*********"
 
Diente zur Unterscheidung zwischen OK und Abbrechen. Und wenn, dann bitte als privates Feld ;) .

shmia 24. Jan 2007 17:18

Re: Inputbox Eingabe als "*********"
 
Nimm mal ein neues Formular und setze zwei BitButtons drauf.
BitBtn1: property Kind=bkOK
BitBtn2: property Kind=bkCancel
Damit ist das Grundgrüst für ein modales Formular schon fertig.
Es wird kein Eventhandler benötigt, da über das Property ModalResult der Buttons alles von selbst geht.
Es wird keine sonstige Variable ("aborted") oder ähnliches benötigt, das regelt alles ModalResult.

xZise 24. Jan 2007 17:21

Re: Inputbox Eingabe als "*********"
 
Zitat:

Zitat von gordon freeman
Wofür dann diese "aborted" Variable, das habe ich noch nicht verstanden. Ist die dann nicht überflüssig?

Da ich dachte das du einen Dialog wolltest (OK, Abbrechen), habe ich das mit aborted gesagt. In der steht, ob die Form über Abbrechen oder über OK geschlossen worde.
Du muss natürlich das schließen selber übernehmen.
Du könntest alternativ das als Property anlegen, und bei "write" "SetAborted" schreiben, mit der Methode, die FAborted setzt & schießt.

Ich poste mal den Code für Dialoge mit OK und Abbrechen:

Delphi-Quellcode:
type
  TDialogFrm = class(TForm)
  // etc.
  private
    aborted : Boolean;
  // etc.
  end;

procedure bAbortClick...
begin
  close;
end;

procedure bOKClick...
begin
  aborted := false;
  close;
end;

function ShowModal... : Boolean;
begin
  aborted := true;

  // Alles auf "Ursprung" setzten, wenn die Form nicht seperat erstellt wird

  inherited; // ggf. inherited ShoModal;

  result := not aborted;
end;
Um das mit meheren Modi zu machen (OK, Ignorieren etc.), funktioniert das ganze dann über Integer, welche dann entsprechend gesetzt werden.
Am besten dazu dann noch Konstanten schreiben, oder viel besser, die vorhanden nehmen (ID_YES etc.) ^^

Die Muhkuh 24. Jan 2007 17:23

Re: Inputbox Eingabe als "*********"
 
Mit Integer? Wofür gibt es dann den ModalResult. Shimas Variante ist die einfachste und auch schnell mit anderen Buttons erweiterbar.

xZise 24. Jan 2007 17:29

Re: Inputbox Eingabe als "*********"
 
Zitat:

Zitat von Die Muhkuh
Wofür gibt es dann den ModalResult.

Sry, aber mit ModalResult habe ich mich nicht beschäftigt, und weiß leider net, wie ich das beeinflussen kann ...

gordon freeman 24. Jan 2007 21:40

Re: Inputbox Eingabe als "*********"
 
Zitat:

Zitat von xZise
Sry, aber mit ModalResult habe ich mich nicht beschäftigt, und weiß leider net, wie ich das beeinflussen kann ...

Einfach für den Button im Objeltinspektor unter der EIgenschaft "ModalResult" einstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 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