Avatar billede strahd Nybegynder
02. marts 2004 - 19:14 Der er 9 kommentarer og
1 løsning

Problem med Edit felt i C++ Builder.

Har et problem. Kan ikke få buideren til at forstå at det kun er tekst jeg vil ha at man skal kunne skrive i edit feltet.
Har lavet det med tal, så man kun kan skrive tal.
Koden ser sådan her ud.

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
AnsiString eksisterende_tal;
bool ok = false;
eksisterende_tal = Form1->Edit1->Text;

try
{
  for (int i = 0; i<=eksisterende_tal.Length();i++)
  {
    if(!isalnum(StrToInt(eksisterende_tal.SubString(i,1))))
    {
      ok=true;
    }
    else
    {
      ok=false;
    }
    if(ok==true)
    {
    }
  }
}
  catch(Exception &e)
  {
    Form1->Edit1->Text = Form1->Edit1->Text.Delete(Form1->Edit1->Text.Length() -0,1);
  }
}

Er der nogen der har en løsning på problemet og eventuelt en bedre måde at løse den kode jeg har lavet fordi den flytter cursoren til start af edit feltet og det var ikke planen.
Avatar billede jakobdo Ekspert
03. marts 2004 - 09:43 #1
Kan du ikke bruge et "andet" edit felt, som hedder MaskEdit?
Avatar billede jakobdo Ekspert
03. marts 2004 - 09:50 #2
MaskEdit er ikke din løsning...
Og dit eksempel virker ikke 100%, prøv at skriv tal... Ryk cursor til start og skriv ABC
Avatar billede strahd Nybegynder
03. marts 2004 - 09:56 #3
Ved godt at den så sletter alt i edit feltet, men det er en mindre fejl jeg kan leve med. Medmindre der er nogen som har en bedre løsning.
Avatar billede jakobdo Ekspert
03. marts 2004 - 11:00 #4
Du kan bruge disse metoder:

//For Bogstaver...
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if (Key >= 'a' && Key <= 'z')
    ;
  else
    Key = 0x00;
}

//For Tal...
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if (Key >= '0' && Key <= '9')
    ;
  else
    Key = 0x00;
}
Avatar billede strahd Nybegynder
03. marts 2004 - 14:10 #5
Meget god løsning men den tillader ikke hverken space eller at du sletter hvis du skriver forkert.
Avatar billede jakobdo Ekspert
03. marts 2004 - 14:14 #6
Det tilføjer vi da bare...
Avatar billede jakobdo Ekspert
03. marts 2004 - 14:26 #7
Så brug denne:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if ((Key >= 'a' && Key <= 'z') || (Key >= 'A' && Key <= 'Z') || Key == VK_SPACE || Key == VK_DELETE    || Key == VK_BACK)
    ;
  else
    Key = 0x00;
}
Avatar billede strahd Nybegynder
03. marts 2004 - 14:35 #8
Godt Gået.. Tak for hjælpen.
Avatar billede jakobdo Ekspert
03. marts 2004 - 14:36 #9
Avatar billede jakobdo Ekspert
03. marts 2004 - 14:37 #10
Selv tak... :o)
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





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis