Avatar billede jonathan_andersen Nybegynder
29. april 2004 - 20:49 Der er 4 kommentarer og
1 løsning

KUN Extended Editbox!

Jeg har tidligere oprettet dette spørgsmål:
///
Jeg har lavet et program der kan løse 2. gradsligninger i delphi.... sådan set meget simpelt. Programmet crasher bare hvis man indtaster et bogstav i en af felterne til andengradsligningen.....

Hvordan laver jeg et script i delphi der melder fejl til brugeren hvis man har indtastet andet end et tal ind i en editbox???
///

Jeg fik dette script:

var
v,code : Extended;
begin
val(a.Text,v,code);
        if code <> 0 Then
        Begin
        Showmessage('Venligst indtast kun tal');
        a.SetFocus;
        end
        else
        {kode her}
end;

Det virker også udemærket. Den flipper bare også ud hvis jeg skriver decimal-tal, og det var ikke meningen. Hvad gør jeg!?
Avatar billede morten_s Nybegynder
29. april 2004 - 21:03 #1
Prøv dette

Bemærk at når du kører programmet under delphi vil du stadig få en fejlmeddelelse, denne skyldes delphis debugger og kommer ikke når du starter programmet direkte fra windows

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c: Integer;
begin
  try
    a:= StrToInt(Edit1.Text);
    b:= StrToInt(Edit2.Text);
    c:= StrToInt(Edit3.Text);
  except
    ShowMessage('Indtast et hel tal');
  end;
  //Din kode her
end;
Avatar billede x-masman Nybegynder
29. april 2004 - 21:04 #2
try
  TempI := StrtoInt(Opgave.text);
  except
    on E:EConvertError do
      begin
      showmessage('Forkert type i Edit');
      Exit;
      end;
  end;
Avatar billede morten_s Nybegynder
29. april 2004 - 21:11 #3
Når du bruger heltal vil jeg istedet for Edit anbefale spinedit, du finder den under samples folderen

Alternativt kan du bruge editmask under aditional folderen hvor du kan opsætte en maske over hvad der må indtastes

opsætter EditMask til f.eks. 000,00 kan der indtastes et 3 cifret tal med to decimaler, der kan ikke indtastes andet end tal
Avatar billede stefmeister Nybegynder
29. april 2004 - 21:17 #4
Hvad med bare at gøre sådan at brugeren slet ikke KAN taste nogle bogstaver ind i Edit boksen?

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',#08])then
Key := #0;
end;

Sådan som den står her kan man taste alle tal og trykke backspace (også Del).
Avatar billede hrc Mester
03. maj 2004 - 19:07 #5
Hvordan kan det være at steffmeisters forslag ikke dur? Det er godt nok den allersimpleste variant der ikke tillader andet en heltal, men ved at koble den på OnKeyPressed eventen af dine TEdits kan du helt styre indtastningen.

Et eller andet sted på Eksperten har jeg smidt et eksempel der tillader indtastning af decimaltal (kun positive - havde helt glemt at der fandtes negative tal da det var lang tid siden jeg havde tjekket min bankkonto)
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