Avatar billede snowball Novice
28. marts 2000 - 13:16 Der er 6 kommentarer og
1 løsning

Check indhold af editbox

Hvordan checker man nemmest indholdet af en editbox ?

Editbox'en må kun indeholde tal, og der skal indtastes 6 tal før box'en er "gyldig". Hverken mere eller mindre end 6 tal !

F.eks. hvis den indeholder 123abc skal den komme med en fejl. Indeholder den 12345 eller 1234567 skal den også komme med en fejl.

Snowball
Avatar billede snowball Novice
28. marts 2000 - 13:22 #1
Nu du alligevel er her, så ta' også lige et kig på http://www.eksperten.dk/spm.asp?id=14114 ;)

Snowball
Avatar billede speedy Nybegynder
28. marts 2000 - 14:10 #2
I Editboksens (onKeyPress), kan du indsætte følgende kode.

hvis dette ikke virker skal det være på Editfeltets (onKeyUp) eller (onKeyDown) event.

begin
  case ord(key) of
    48..59:;
    8:;
  else
    key = #0;

  if length(Edit1.Text) = 6 then
    GyldighedsKnap.Caption := 'Gyldig';
  else
    GyldighedsKnap.Caption := 'Ugyldig';

end;

Er taget frit fra hukommenlsen (har ikke Delphi ved hånden lige nu)

Det skulle gerne virke.


/SpEeDy
Avatar billede delphidaner Nybegynder
28. marts 2000 - 14:12 #3
Du kunne jo lave en event til EditBox'ens OnExit, som så sådan ud:

procedure EditExit(Sender: TObject);

var
  Legal: Boolean;
  Temp: Integer;

begin

  Legal := Length(Text) = 6;

  try

    Temp := StrToInt(Text); // Test om det er et gyldigt tal.

  except

    Legal := False; // Hvis det ikke er.

  end;

  if not Legal then // Hvis krikerierne ikke blev opfyldt
  begin
    MessageBox(Screen.ActiveForm.Handle, 'Ugyldig værdi!', 'Fejl', MB_OK);
    SetFocus; // Giv Edit'en fokus
  end;

end;

Håber du kan bruge det :)
Avatar billede snowball Novice
28. marts 2000 - 14:35 #4
delphidaner's svar virker bedst synes jeg. DOG er der lige et lille problem: Hvis man skriver både tal og bogstaver (f.eks. 123abc, men ikke abc123!) crasher programmet, og skriver det ikke er en gyldig integer værdi (hvilket jo er logisk nok ;) )!!!

Hvis du lige kan lave det om, så får du dine point !

Snowball
Avatar billede speedy Nybegynder
28. marts 2000 - 19:42 #5
Programmet Crasher ikke, det er bare Delphi, der stopper. Hvis du kører exe-filen, er der ingen problemer.

/SpEeDy
Avatar billede retep Nybegynder
28. marts 2000 - 19:56 #6
En anden løsning, der er lidt pænere:

Function ValiderTekst(Tekst:String): Boolean;
Var
  Code, V : integer;
Begin
  Val(Tekst, V, Code);
  If (code = 0) and (length(tekst) = 6) then
    Result := True
  else
    Result := false;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  If not validerTekst(edit1.text) then
    Showmessage('Fejl i indtastningen!!!');
end;

Val er en Delphi funktion, der netop har til formål at validere om en tekst kan oversættes til et heltal...

Returværdien af variablen Code, kan også benyttes til at fortælle på hvilken plads i teksten der opstod et problem. Men når værdien af den er nul, er det fordi det er gået godt.

Venlig hilsen
Retep

Avatar billede snowball Novice
29. marts 2000 - 09:02 #7
Kanon retep !

Det virker bare som det skal :-)

Sorry delphidaner, men retep kom først med en helt brugbar løsning, så point'ene går til ham !

Snownall
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester