Entwickler-Ecke
Sonstiges (Delphi) - Inputbox mit ***
netscanner - Do 16.02.06 20:55
Titel: Inputbox mit ***
Hi ich habe eine kleine Frage:
Um mein Programm zu öffnen muss man am Anfang ein Passwort in eine InputBox eingeben.
Das was ich reinschreibe wird logischerweise als normale Buchstaben dargestellt...
Wie kann ich das nun so programmieren, dass anstatt der Buchstaben *** angezeigt wird?
Gruß Martin
uwewo - Do 16.02.06 21:04
Hi Martin,
ist ganz einfach, markiere Dein Edit Feld und gebe im Objektinspektor
bei PasswordChar einen * ein.
Das wars
Uwe
Tobias1 - Do 16.02.06 21:07
Aber wie ist es bei einer InputBox?
Würde mich auch interssieren
netscanner - Do 16.02.06 21:08
Titel: wäre schön
wäre schön wenn's so einfach ginge...es ist aber kein edit feld sondern eine InputBox (Funktion in Delphi ^^)...
Leider hat das Ding keinen Object Inspector
Marco D. - Do 16.02.06 21:22
In der Unit 'Dialogs' musst du folgendes einfügen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean; var Form: TForm; Prompt: TLabel; Edit: TEdit; DialogUnits: TPoint; ButtonTop, ButtonWidth, ButtonHeight: Integer; begin Result := False; Form := TForm.Create(Application); with Form do try Canvas.Font := Font; DialogUnits := GetAveCharSize(Canvas); BorderStyle := bsDialog; Caption := ACaption; ClientWidth := MulDiv(180, DialogUnits.X, 4); Position := poScreenCenter; Prompt := TLabel.Create(Form); with Prompt do begin Parent := Form; Caption := APrompt; Left := MulDiv(8, DialogUnits.X, 4); Top := MulDiv(8, DialogUnits.Y, 8); Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4); WordWrap := True; end; Edit := TEdit.Create(Form); with Edit do begin Parent := Form; passwordchar:='*'; Left := Prompt.Left; Top := Prompt.Top + Prompt.Height + 5; Width := MulDiv(164, DialogUnits.X, 4); MaxLength := 255; Text := Value; SelectAll; end; ButtonTop := Edit.Top + Edit.Height + 15; ButtonWidth := MulDiv(50, DialogUnits.X, 4); ButtonHeight := MulDiv(14, DialogUnits.Y, 8); with TButton.Create(Form) do begin Parent := Form; Caption := SMsgDlgOK; ModalResult := mrOk; Default := True; SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth, ButtonHeight); end; with TButton.Create(Form) do begin Parent := Form; Caption := SMsgDlgCancel; ModalResult := mrCancel; Cancel := True; SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15, ButtonWidth, ButtonHeight); Form.ClientHeight := Top + Height + 13; end; if ShowModal = mrOk then begin Value := Edit.Text; Result := True; end; finally Form.Free; end; end; |
Allerdings muss man jetzt die VCL neu kompilieren, frag mich net wie das geht :gruebel:
uwewo - Do 16.02.06 21:23
Sorry,
habe ich überlesen.
Warum verwendest Du überhaupt eine Inputbox???
Es gibt doch Extra das Form Password Dialog.
Uwe
Danniolo - Do 16.02.06 21:25
Warum willst du dafür unbedingt eine InputBox nehmen?
Nimm doch einfach eine Form + Edit(Passwordchar:='*') + 2 Buttons - fertig..
Die VCL neu zu kompilieren is meiner Meinung nach ein bisschen übertriben :D
uwewo - Do 16.02.06 22:01
Habe mal ein bißchen gegoogelt, es gibt bestimmt 10 verschiedene
Möglichkeiten das Problem mit einer InputBox zu lösen.
Allerdings geht es schneller mit Password Dialog oder wie Danniolo schon sagte,
"eine Form + Edit(Passwordchar:='*') + 2 Buttons - fertig.."
netscanner - Do 16.02.06 22:19
@ Danniolo: Wie komm ich dann von dieser Form in die "geschützte Form"?
@ uwewo: wo finde ich den pw dialog?
uwewo - Do 16.02.06 22:31
Datei -> Neu
Registerkarte Dialoge
Danniolo - Fr 17.02.06 00:09
Wenn du mit "Form in die geschützte Form bringen" meinst, dass man das fenster weder schließen, noch maximieren, noch minimieren kann, dann solltest du die Form auf BorderStyle "byDialog" stellen und einen Punkt darüber bei "BorderIcons" "biStystemMenu" deaktivieren. Dann kann die Form nicht "verändert" werden. Ich hoffe, dass dein Problem damit gelöst ist :wink: .
UGrohne - Fr 17.02.06 01:21
Koller hat folgendes geschrieben: |
In der Unit 'Dialogs' musst du folgendes einfügen:
[...]
Allerdings muss man jetzt die VCL neu kompilieren, frag mich net wie das geht :gruebel: |
Niemals nie nicht würde ich an den VCL-Dateien rumpfuschen, wenn es nicht unbedingt notwendig ist und es keinen anderen Ausweg gibt. Und nur um sich den Umweg über eine neue Unit zu machen, die man dann trotzdem überall einbinden kann zu ersparen würde ich das gleich drei mal nicht machen! :mahn:
Delete - Fr 17.02.06 01:29
@Koller: Mal abgesehen davon dass dein Delphi damit inkompatible zu anderen Delphis wird, macht man das so, indem man eine neue Klasse ableitet und diese um die gewünschten Eigenschaften erweitert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!