Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi keine Buchstaben im Edit-Feld...? (https://www.delphipraxis.net/5779-keine-buchstaben-im-edit-feld.html)

deadline 19. Jun 2003 07:54


keine Buchstaben im Edit-Feld...?
 
moinsen,
also ich hätte da mal wieder so eine frage... *g*

Wie geht das, dass beim click auf Buton2 in Edit1.text nach Buchstaben "gescannt" wird und der Rest des Vorgangs in "procedure THaupt.Buton2Click(Sender: TObject);" nicht durchgeführt wird, aber eine Fehlermeldung kommt wo drin steht "keine Buchstaben zulässig."

Ausserdem würde ich mal gern wissen wie ich das hinbekomme, dass die Texte aus Edit1 und Edit2 durch einander dividiert werden...

Würde mich über Hilfe hierbei sehr freuen...


mfg.
deadline

[EDIT=thomasdrewermann]Rechtschreibfehler berichtigt.[/EDIT]

Sharky 19. Jun 2003 08:31

Re: keine Buchstaben im Edit-Feld...?
 
Zitat:

Zitat von deadline
... Fehlermeldung kommt wo drin steht "keine Buchstaben zulässig."
....

Hai Deadline,

das würde ich so schon einmal nicht machen. Es sieht schlecht aus dem Anwender eine Eingabe von Buchstaben zu erlauben und im Später eine Fehlermeldung zu zeigen. Besser ist es die Eingabe von "Nichtzahlen" zu verhindern. Suche mal im Forum. Das hatten wir schon oft.

Zitat:

Ausserdem würde ich mal gern wissen wie ich das hinbekomme, dass die Texte aus Edit1 und Edit2 durch einander dividiert werden...
Text zu divieren? Das kann nicht gehen :lol:

Ich denke mal Du möchtest die Zahlen die der anwender eingegeben hat dividieren. Schaue dir dazu einmal die Funktion StrToInt an.

JoelH 19. Jun 2003 08:37

hmm,
 
also du kannst einfach durch den Strign durchgehen und nach Buchstaben suchen lassen,
etwa so:

Delphi-Quellcode:
function sortiereBuchstabenaus (Edit1:string):string;
var i : integer;
    helpstring1, helpstring2 : string;
begin
  helpstring1 := uppercase(Edit1);
  helpstring2 := '';
  for i = 1 to length(helpstring1) do
  begin
    if not((copy(helperstring1,i,1) in ['A','B','C','D','E' ....usw.!]) then
      helperstring2 := helperstring2 + copy(Edit1,i,1);
  end;
  result := helperstring2;
end;
So sollten keine Buchstabeneingaben mehr funktionieren, sie werden einfach aussortiert. Hoff ich, hab es nicht getestet und der Vergleich muss noch komplett gemacht werden.

[EDIT=thomasdrewermann]Rechtschreibfehler entfernt.[/EDIT]

deadline 19. Jun 2003 08:43

Re: keine Buchstaben im Edit-Feld...?
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von deadline
... Fehlermeldung kommt wo drin steht "keine Buchstaben zulässig."
....

Hai Deadline,

das würde ich so schon einmal nicht machen. Es sieht schlecht aus dem Anwender eine Eingabe von Buchstaben zu erlauben und im Später eine Fehlermeldung zu zeigen. Besser ist es die Eingabe von "Nichtzahlen" zu verhindern. Suche mal im Forum. Das hatten wir schon oft.

Zitat:

Ausserdem würde ich mal gern wissen wie ich das hinbekomme, dass die Texte aus Edit1 und Edit2 durch einander dividiert werden...
Text zu divieren? Das kann nicht gehen :lol:

Ich denke mal Du möchtest die Zahlen die der anwender eingegeben hat dividieren. Schaue dir dazu einmal die Funktion StrToInt an.

tjo, also das mit den buchstaben.. ich hab nie gesagt dass ich da buchstaben drib erlauben will.. nein, diese Edit-felder sind nur für zahlen gedacht... *gg*

ausserdem hatte ich eigendlich auch nit vor text zu editieren, sondern wollte ZAHLEN devidieren... ;)

mfg
deadline

JoelH 19. Jun 2003 08:48

hmm,
 
man mit
Delphi-Quellcode:
var resultat : single;
begin
  resultat := StrToFloat(Edit1.Text) / StrToFloat (Edit2.Text);
end;
probiert ?


EDIT ZUSATZ :

WARUM SAGST DU NICHT GLEICH DASS DU NUR ZAHLEN ERLAUBEN WILLST,da kannst du das if Statement oben vereinfach ;)

Zaubermaus 19. Jun 2003 08:55

Hallösche!

Um in einem Edit-Feld nur Zahlen zuzulassen, nutze ich folgende Proc:

Delphi-Quellcode:
procedure Form.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key in ['!'..'/',':'..'~']) then Key := #0;
end;
Der Anwender kann nur Zahlen eintragen - alle anderen Eingaben werden abgewiesen.

die Zaubermaus

Sharky 19. Jun 2003 08:59

Re: keine Buchstaben im Edit-Feld...?
 
Zitat:

Zitat von deadline
..... nein, diese Edit-felder sind nur für zahlen gedacht... *gg*
...

Wie gesagt, es gibt eine Suchfunktion!!!

Aber ich bin heute gut gelaunt:

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.OnKeyPress := NurZahlen;
 Edit2.OnKeyPress := NurZahlen;
 Edit1.Text := '';
 Edit2.Text := '';
end;

{*********************************************************}

procedure TForm1.NurZahlen(Sender: TObject; var Key: Char);
begin
 If Not (Key IN ['0'..'9',',','-',#8,#9,#13]) then
  begin
   Key := #0;
  end;
end;

{*********************************************************}

procedure TForm1.Button1Click(Sender: TObject);
 var
 zahl1,
 zahl2 : Extended;
begin
if (Length(Edit1.Text) >0 ) AND (Length(Edit2.Text) > 0 ) then
 begin
  zahl1 := StrToFloat (Edit1.Text);
  zahl2 := StrToFloat (Edit2.Text);
  if (Zahl2<>0) then
   begin
    Label1.Caption := FloatToStr (zahl1/zahl2);
   end
  else
   begin
    MessageDlg('Diviesion durch 0', mtError, [mbOK], 0);
   end;
 end
else
 begin
  MessageDlg('Wie soll ich ohne Zahlen rechnen?', mtConfirmation, [mbOK], 0);
 end;
end;
Benötigt:
1 Button
2 Edit
1 Label

Christian Seehase 19. Jun 2003 08:59

Moin Zusammen,

das Abfangen einer nicht zulässigen Eingabe mittels KeyPress funktioniert aber auch nur so lange, wie der Anwender nichts durch paste einfügt.
STRG-V funktioniert bei einem Edit schliesslich standardmässig.

APP 19. Jun 2003 09:01

Hallo,
um nur Ziffern in einem TEdit zuzulassen, schau mal in die Library Nur Ziffern in Edit, ist dort einfacher und eleganter gelöst...

Sharky 19. Jun 2003 09:04

Zitat:

Zitat von Christian Seehase
Moin Zusammen,

das Abfangen einer nicht zulässigen Eingabe mittels KeyPress funktioniert aber auch nur so lange, wie der Anwender nichts durch paste einfügt.
STRG-V funktioniert bei einem Edit schliesslich standardmässig.

Hmmm.... bei mir nicht!

Es geht nur über das Kontextmenü mit der rechten Maus. Und das kann man ja leicht verhindern.

deadline 19. Jun 2003 09:05

Re: hmm,
 
erstmal danke @ Zaubermaus ;-)


nun zu dir JoelH *g*

Zitat:

Zitat von JoelH
man mit
Delphi-Quellcode:
var resultat : single;
begin
  resultat := StrToFloat(Edit1.Text) / StrToFloat (Edit2.Text);
end;
probiert ?

ich habe das so ausprobiert, nur ich möchte das ergebnis dieser division nun in einem label ausgeben und da sagt der mir, dass single und string nit zusammen passen... was kann ich da machen???


mfg
deadline

Christian Seehase 19. Jun 2003 09:13

Moin Sharky,

Zitat:

Zitat von Sharky
Hmmm.... bei mir nicht!

dann hast vermutlich ein Hauptmenü bei dem STRG-V als Shortcut verwendet wird. Dadurch lässt sich das übersteuern.
Das Kontextmenü wegzulassen halte ich nicht unbedingt für eine gute Idee, denn mancher hat sich daran gewöhnt auf diese Weise etwas dort einzutragen oder herauszukopieren.
BTW: Wenn Du auch STRG-C anderweitig verwendet hast, geht das natürlich auch nicht mehr.

JoelH 19. Jun 2003 09:13

hmm,
 
versuch doch mal die Delphihilfe zum Thema Strignfunktionen ;)

Wenn das eine StrToFloat heisst wie wird wohl der Rückweg heissen ?

Delphi-Quellcode:
//tarraaaa
Label1.Caption := FloatToStr(resultat);

CepheidenX 19. Jun 2003 09:13

Zitat:

Zitat von APP
Hallo,
um nur Ziffern in einem TEdit zuzulassen, schau mal in die Library Nur Ziffern in Edit, ist dort einfacher und eleganter gelöst...

Jupp das ist eleganter. Hat aber einen Nachteil man kann keine Fließkommazahlen eingeben. Aber das nachzurüsten ist kein Problem. Allerdings sollte man beachten das nur ein "Komma" erlaubt ist.

JoelH 19. Jun 2003 09:16

Zitat:

Zitat von CepheidenX
Allerdings sollte man beachten das nur ein "Komma" erlaubt ist.

Wenn man anwenderfreundlich ist sollte man, direkt bei der Eingabe, Punkte durch Kommas ersetzten ;)

Sharky 19. Jun 2003 09:17

Zitat:

Zitat von CepheidenX
... Allerdings sollte man beachten das nur ein "Komma" erlaubt ist.

Naja, wenn man es wirklich richtig machen möchte muss man darauf achten das nur das Windows eingestelle "Dezimaltrennzeichen" erlaubt ist! :P :P

Stanlay Hanks 19. Jun 2003 09:49

Dieses Dezimaltrennzeichen ist glaub ich in der Variablen "decimalseparator" (oder so ähnliche) bei Programmstart gespeichert.

CepheidenX 19. Jun 2003 10:28

Nicht ganz, wenn man anwenderfreundlich ist würde man diese Einstellung aus den Systemeinstellungen übernehmen.

/Edit upps das mit den Dezimaltrennzeichen wurde schon gesagt

JoelH 19. Jun 2003 10:45

hmm,
 
ich poste jetzt auch nurnoch zu einer Postingarmenzeit, da stürtzen sich ja glaich alle auf dieses eine Posting dann :D :D

Aber was lernen wir daraus ? Das es einen Dezimalseperator gibt, hab ich gar nicht bedacht in meinen Üebrlegungen, ich programmier zu viel deutsche Software glaub ich :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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-2025 by Thomas Breitkreuz