![]() |
Edit Problem
Hallo zusammen!
ich hab da mal en paar Fragen die ihr hoffentlich beantworten könnt! In mein Edit-Fenster will ich das keine Buchstaben eingegeben werden können und fals doch soll eine Fehlermeldung erscheinen! Als zweites sollen genau 6 Ziffern in das Edit-Feld passen! Geht das irgendwie? Und fals einer nichts in das Edit-Feld schreibt soll auch eine Fehlermeldung kommen! Das hab ich zwar schon probiert aber irgendwie haut das nich hin! Hoffentlich kann mir einer von euch helfen! Bitte schreibt noch ein Beispiele mit den Delphi-Code dazu. Liebe Grüße |
Re: Edit Problem
Kurz eine Nachfrage: Wirklich Delphi.NET? Weil Du Version 5 gewählt hast.
Wenn wirklich .NET, ist es eine VCL-Anwendung oder WinForms? |
Re: Edit Problem
Hallo Oliver,
Willkommen in der DP :dp:, die Anzahl der maximal einzugebenden Zeichen kannst Du mit MaxLength festlegen, setz diese Eigenschaft einfach im Objektinspektor auf 6. Ob ein Edit leer ist, kannst Du mit einem einfachen Vergleich auf '' ermitteln. Und eine Möglichkeit, nur Zahlen zuzulassen, wäre, im OnChange-Ereignis des Edits in einer Schleife den Text durchzugehen und jedes Zeichen auf Ziffern abzuprüfen. |
Re: Edit Problem
oh sorry ich benutze die Delphi Version 5!
|
Re: Edit Problem
Gibt es in Delphi 5 das TMaskEdit? Wenn ja, dann verwende dies und setze die Eigenschaft EditMask auf '######'.
|
Re: Edit Problem
und wieder mal falsche Spart :warn:
(war da nicht 'ne Umbenennung geplant :gruebel: ) Jetzt nicht böse gemeint, aber da wir grad mal wieder jemand "Verlaufenen" haben ... Wieso hast du ausgerechnet in dieser Sparte gepostet ... bzw. über welchen Weg hast du deinen Post erstellt? Wir versuchen das ja irgendwie verständlicher zu machen ... siehe ![]() |
Re: Edit Problem
Wie geht das genau mit der schleife das es jede Ziffer prüft ob es kein buchstabe ist?
un wie geht das mit der Fehlermeldung wenn man weniger als 6 Ziffern einträgt? hier mal noch mein Delphi-Code:
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag korrigiert Mfg, mkinzler[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var a, b, ausgabe: integer ; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); ausgabe:= (a xor b xor 840917 mod 1000000); edit3.text:=inttostr(ausgabe); end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.clear; edit2.clear; edit3.clear; edit2.text:=FormatDateTime('ddmmyy', Now); end; end. |
Re: Edit Problem
Die Länge bekommst Du mit Length(Edit.Text). Und die Schleife habe ich so gemeint:
Delphi-Quellcode:
Schnell heruntergetippt, sollte aber hoffentlich funktionieren.
function IsNumber(const s: string): Boolean;
var i: integer; begin Result := true; for i := 1 to Length(s) do if not (s[i] in ['0'..'9']) then begin Result := false; exit; end; end; |
DP-Maintenance
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "VCL / WinForms / Controls" verschoben.
Diese Sparte dient dem Vorschlagen fertiger Codes für unsere Codelib - daher verschoben. |
Re: Edit Problem
Hi!
Auch von mir herzlich willkommen in der DP! Ein paar Bitten hätte ich noch: Könntest du bitte deinen ersten Beitrag editieren (Button oben rechts am Beitrag) und zum einen dann Delphi für Win32 auswählen und zum anderen einen anderen Titel wählen, der etwas mehr über die Art des Problems aussagt (z.B. Edit: Nur zahlen zulassen). Vor der Erstellung deines nächten Themas solltest du bitte folgendes beachten: Zuerst die Suche des Forums nutzen (zu dem Thema hier wärst du sicher fündig geworden) und wenn man dann nichts gefunden hat, sollte man sich zuerst überlegen, welches Unterforum das richtige ist - dazu sollten auch die Beschreibungen der Sparten hier ( ![]() Viele Grüße, Frederic |
Re: Edit Problem
Hallo,
ich möchte nur zu DaddyHs Beitrag hinzufügen, dass eine Prüfung auch im OnExit stattfinden kann. Persönlich empfinde ich dass für den User manchmal als angenehmer, wenn nicht wegen eines Vertippens gleich eine Fehlermeldung kommt. Einfaches Beispiel ausgehend davon, dass Edit.Maxlength gesetzt wurde. Habe den Code hier geschrieben und hoffe dass er keine Fehler enthält
Delphi-Quellcode:
Schöner wäre es natürlich allgemeingültig für alle Edits das Edit zu ersetzen durch 'with sender as TEdit do' Habe das aber der einfachheit halber hier weggelassen
procedure EditExit(Sender: TObject);
var i: integer; s: string; begin Try Edit.Text := IntToStr(StrToInt(Edit.Text)); Except // Hier kann die Fehlermeldung rein und eventuell das Setzen eines gültigen Standardtextes z.B: Edit.Text := '000001'; End; if Length(Edit.Text) < Edit.Maxlength then Begin // führende Nullen schreiben s:=''; for i:= 1 to Edit.MaxLength - length(Edit.Text) do s:=s+'0'; Edit.Text := s + Edit.Text ; End; end; |
Re: Edit Problem
Wenn man diese Version verwenden möchte, würde ich lieber TryStrToInt verwenden, als mutwillig Exceptions zuzulassen.
Delphi-Quellcode:
Wobei man bei den StrToInt-Dingern beachten muss, dass z.B. '$A' akzeptiert wird.
var i : Integer;
begin if not tryStrToInt(Edit1.Text, i) then begin showMessage('Zahlen eingeben'); end; end; Daher würde ich doch die einzelnen Zeichen prüfen, wie oben schon vorgeschlagen, oder eine Komponenten verwenden, die nur die Eingaben aktzeptiert, die erlaubt sind (z.B. TMaskEdit). Gruß, Jens |
Re: Edit Problem
Hallo,
kannte ich noch gar nicht! Ich lerne nie aus :-) Danke! Hendrik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 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