Autor Beitrag
netscanner
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 16.02.06 20:55 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 154



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: Do 16.02.06 21:07 
Aber wie ist es bei einer InputBox?
Würde mich auch interssieren

_________________
Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
netscanner Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Do 16.02.06 21:22 
In der Unit 'Dialogs' musst du folgendes einfügen:

ausblenden volle Höhe 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:

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
uwewo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 154



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 154



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 154



BeitragVerfasst: Do 16.02.06 22:31 
Datei -> Neu
Registerkarte Dialoge
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: 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: .


Zuletzt bearbeitet von Danniolo am Di 11.08.09 01:41, insgesamt 1-mal bearbeitet
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 17.02.06 01:21 
user profile iconKoller 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:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.