![]() |
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:
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.
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; 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. |
Re: Letztes Zeichen im Editfeld...
Oh ja, etwas verwirred ist er. Du meinst nicht zufällig sowas (im OnChange):
Delphi-Quellcode:
Natürlich kannst du auch die Stringlänger aller Feldinhalte überprüfen.
if Length(Edit6.Text) = 5 then
// Edit 6 enthält 5 Zeichen |
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.. |
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. |
Re: Letztes Zeichen im Editfeld...
dann musst du das verwenden was matze gepostet hat..
|
Re: Letztes Zeichen im Editfeld...
Delphi-Quellcode:
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"...
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; Kann natürlich daran liegen, dass ich das
Delphi-Quellcode:
an die falsche Position gesetzt habe, oder irgendwas vergessen habe. Aber ich wusste nicht, wie ich sonst die richtige Vorgabe
if Length...
Delphi-Quellcode:
für das Feld schreiben sollte.
if Edit6.Text='44551'
|
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:
machen.
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; |
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; |
Re: Letztes Zeichen im Editfeld...
Zitat:
|
Re: Letztes Zeichen im Editfeld...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz