Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Edit Problem (https://www.delphipraxis.net/131538-edit-problem.html)

oliver1 26. Mär 2009 09:08


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

Nersgatt 26. Mär 2009 09:31

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?

DeddyH 26. Mär 2009 09:31

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.

oliver1 26. Mär 2009 09:33

Re: Edit Problem
 
oh sorry ich benutze die Delphi Version 5!

Nersgatt 26. Mär 2009 09:36

Re: Edit Problem
 
Gibt es in Delphi 5 das TMaskEdit? Wenn ja, dann verwende dies und setze die Eigenschaft EditMask auf '######'.

himitsu 26. Mär 2009 09:53

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 Sind Rubriken des Forums richtig gewählt

oliver1 26. Mär 2009 10:06

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:
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.
[edit=mkinzler]Delphi-Tag korrigiert Mfg, mkinzler[/edit]

DeddyH 26. Mär 2009 10:36

Re: Edit Problem
 
Die Länge bekommst Du mit Length(Edit.Text). Und die Schleife habe ich so gemeint:
Delphi-Quellcode:
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;
Schnell heruntergetippt, sollte aber hoffentlich funktionieren.

DP-Maintenance 26. Mär 2009 10:47

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.

fkerber 26. Mär 2009 10:54

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 ( http://www.delphipraxis.net/forum_main.php ) helfen!


Viele Grüße,
Frederic

GoTo0815 26. Mär 2009 15:13

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:
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;
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

Nersgatt 26. Mär 2009 15:20

Re: Edit Problem
 
Wenn man diese Version verwenden möchte, würde ich lieber TryStrToInt verwenden, als mutwillig Exceptions zuzulassen.
Delphi-Quellcode:
var i : Integer;
begin
  if not tryStrToInt(Edit1.Text, i) then
  begin
   showMessage('Zahlen eingeben');
  end;
end;
Wobei man bei den StrToInt-Dingern beachten muss, dass z.B. '$A' akzeptiert wird.
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

GoTo0815 26. Mär 2009 16:06

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