Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Letztes Zeichen im Editfeld... (https://www.delphipraxis.net/108671-letztes-zeichen-im-editfeld.html)

Störtebeker 17. Feb 2008 16:00


Letztes Zeichen im Editfeld...
 
Hallo,

ich schreibe ein Benutzerregistration für mein Programm, das eine INI erstellt und wenn die vorhanden ist, kommt beim nächsten Start die Loginform usw.

Beim Registrationsfenster wird eine Seriennummer verlangt, nach deren Eingabe der Reg-Button "Enabled" wird.
Nun habe ich sechs Editfelder, die zusammen die Seriennummer ergeben. Das erste feld ist "Enabled", die fünf folgenden sind "Disabled". Wird nun der erste Teil der Nummer in das erste Editfeld eingetragen, wird das zweite Editfeld automatisch auf "Enabled" gesetzt und der Cursor springt automatisch in das 2. Editfeld usw.

Nun möchte ich, dass ein entweder ein "Häkchen", oder ein "Kreuz" erscheint, wenn das letzte Zeichen im 6. Editfeld eingegeben wurde. Die Maximallänge jedes Editfeldes ist auf 5 Zeichen beschränkt.

Für das letzte Feld sieht momentan der Quelltext aus wie folgt:
Delphi-Quellcode:
procedure TForm1.Edit10Change(Sender: TObject);
begin
if
Edit6.Text='44551'
then begin
Image2.visible:=True;
Button1.enabled:=true;
end
else begin
Image2.Visible:=false;
Image3.Visible:=true;
Button1.Enabled:=false;
end
end;
Das mit dem Häkchen funzt, da es erst erscheint, wenn auch das letzte Feld komplett gefüllt ist, das X erscheint aber schon, wenn das Editfeld aktiviert wird.

So, nun die Frage:
Wie kann ich es anstellen, dass nur das letzte Zeichen (das 5. Zeichen) des letzten Editfeldes überprüft wird und dem entsprechen das Symbol auftaucht.

Ich kann mir vorstellen, dass der Text ersteinmal etwas verwirrend scheint.

Danke, schonmal.

Matze 17. Feb 2008 16:03

Re: Letztes Zeichen im Editfeld...
 
Oh ja, etwas verwirred ist er. Du meinst nicht zufällig sowas (im OnChange):

Delphi-Quellcode:
if Length(Edit6.Text) = 5 then
  // Edit 6 enthält 5 Zeichen
Natürlich kannst du auch die Stringlänger aller Feldinhalte überprüfen.

lbccaleb 17. Feb 2008 16:08

Re: Letztes Zeichen im Editfeld...
 
mit was oder nach was soll denn das letzte zeichen überprüft werden??

um das letzte zeichen rauszubekommen kannst du den text aus dem edit in ein string laden, und z.b. so:
Delphi-Quellcode:
var
  i: integer;
  edit6textstring: string;

  edit6textstring := edit6.text;
  i := strtoint(edit6textstring[5])


rausfinden! wenn ich dich jetzt richtig verstanden habe..

Störtebeker 17. Feb 2008 17:06

Re: Letztes Zeichen im Editfeld...
 
Naja, der richtige Eintrag für das letzte Editfeld heißt ja "44551".

Was ich vielleicht meinte ist, dass das Editfeld erst überprüft wird, wenn es vollständig ausgefüllt ist.

lbccaleb 17. Feb 2008 17:14

Re: Letztes Zeichen im Editfeld...
 
dann musst du das verwenden was matze gepostet hat..

Störtebeker 17. Feb 2008 17:29

Re: Letztes Zeichen im Editfeld...
 
Delphi-Quellcode:
procedure TForm1.Edit10Change(Sender: TObject);
begin
 if
  Edit6.Text='44551'
 then begin
 if
  Length(Edit6.Text) = 5 
 then begin
  Image2.visible:=True;//Häkchen
  Button1.enabled:=true;
 end
 else begin
  Image2.Visible:=false;//Häkchen
  Image3.Visible:=true;//Kreuz
  Button1.Enabled:=false;
 end
end
end;
So funzt das leider nicht ganz. Er scheint irgendwie das "ELSE" ereignis auszulassen. Wenn ich das Feld komplett ausfülle, kommt das Häkchen. Wenn ich allerdings wieder ein Zeichen lösche, bleibt das Häkchen und wenn ich danach wieder ein falsches Zeichen hinzufüge, bleibt das Häkchen, der Button bleibt "Disabled"...

Kann natürlich daran liegen, dass ich das
Delphi-Quellcode:
if Length...
an die falsche Position gesetzt habe, oder irgendwas vergessen habe. Aber ich wusste nicht, wie ich sonst die richtige Vorgabe
Delphi-Quellcode:
if Edit6.Text='44551'
für das Feld schreiben sollte.

Störtebeker 17. Feb 2008 17:33

Re: Letztes Zeichen im Editfeld...
 
Hat sich erledigt...

Ich musste aus:

Delphi-Quellcode:
procedure TForm1.Edit6Change(Sender: TObject);
begin
if
  Edit6.Text='44551'
then begin
if
  Length(Edit6.Text) = 5 
then begin
  Image2.visible:=True;//Häkchen
  Button1.enabled:=true;
end
else begin
  Image2.Visible:=false;//Häkchen
  Image3.Visible:=true;//Kreuz
  Button1.Enabled:=false;
end
end
end;
Delphi-Quellcode:
procedure TForm1.Edit6Change(Sender: TObject);
begin
if
  Length(Edit6.Text) = 5
then begin
if
  Edit6.Text='44551'
then begin
  Image2.visible:=True;//Häkchen
  Button1.enabled:=true;
end
else begin
  Image2.Visible:=false;//Häkchen
  Image3.Visible:=true;//Kreuz
  Button1.Enabled:=false;
end
end
end;
machen.

Sharky 17. Feb 2008 17:49

Re: Letztes Zeichen im Editfeld...
 
Hai Störtebeker,

eventuell wäre es so einfacher:

Delphi-Quellcode:
procedure TForm1.Edit6Change(Sender: TObject);
var
  okay : Boolean;
  editstr : String;
begin
  editstr := (Sender as TEdit).Text;
  okay := (Length(editstr) = 5) AND (editstr = '4451');
  Image2.Visible := okay;
  Button1.Enabled := okay;
  Image3.Visible := not (okay);
end;

Jelly 17. Feb 2008 18:32

Re: Letztes Zeichen im Editfeld...
 
Zitat:

Zitat von Sharky
Delphi-Quellcode:
  okay := (Length(editstr) = 5) AND (editstr = '4451');

Ich würd sagen, das wär in mindestens 99 / 100 Fällen false :-)

DeddyH 17. Feb 2008 18:34

Re: Letztes Zeichen im Editfeld...
 
Zitat:

Zitat von Jelly
Ich würd sagen, das wär in mindestens 99 / 100 Fällen false :)

Ich hatte es mir extra verbissen :D


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

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