Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Minus im edit nur als erstes Zeichen erlauben (https://www.delphipraxis.net/13593-minus-im-edit-nur-als-erstes-zeichen-erlauben.html)

Nikolas 21. Dez 2003 21:58


Minus im edit nur als erstes Zeichen erlauben
 
HI

Ich versuche ein edit zu bauen, in dem man nur floats eintragen kann.
(d.h. nur zahlen , max ein komma, max ein minus und das auch nur am Anfang)

Mein letztes Problem ist jetzt das, dass ich es einfach nicht hinbekomme, das Minus nur als erstes Zeichen zuzulassen. :wall:
Mir würde ein befehl helfen, mit dem ich lesen könnte, ob der Cursor im Edit an der ersten Stelle steht, oder nicht. Nur der ist schwierig zu suchen

Hat da jemand eine Idee? :gruebel:

Christian Seehase 21. Dez 2003 22:08

Re: Minus im edit nur als erstes Zeichen erlauben
 
Moin Toxman,

schau Dir doch mal TEdit.SelStart an.

Nikolas 21. Dez 2003 22:11

Re: Minus im edit nur als erstes Zeichen erlauben
 
klingt in der OH sehr vielversprechend.
Damit wirds funzen.

THXbyTOX :dp:

eddy 22. Dez 2003 10:13

Re: Minus im edit nur als erstes Zeichen erlauben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Toxman,

ich hab' das zwar nicht erfunden, aber für Zahlen macht's sich gut als Komponente.

Im Quelltext findest Du bestimmt die Lösung für Dein Problem.

mfg
eddy

Hansa 22. Dez 2003 11:21

Re: Minus im edit nur als erstes Zeichen erlauben
 
Hi,

dafür braucht man nun wirklich keine Fremdkomponente. Du brauchst doch nur z.B.
Delphi-Quellcode:
length (Edit1.Text) > 1
zu überprüfen und dann das - zu unterdrücken oder zuzulassen.

Lantis 22. Dez 2003 12:56

Re: Minus im edit nur als erstes Zeichen erlauben
 
Könnte ungefähr so aussehen:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9',#8,#44,#45]) then Key := #0;
  if (length(edit1.Text)>0) and (Key in [#45]) then Key := #0;
  if (pos(#44,edit1.Text)>0) and (Key in [#44])then Key := #0;
end;
Gruß Lantis

fkerber 22. Dez 2003 13:58

Re: Minus im edit nur als erstes Zeichen erlauben
 
Hi!

Zu dem was Hansa sagt:

Zitat:

Delphi-Quellcode:
length (Edit1.Text) > 1

Ich glaub nicht, dass das geht! Weil ich könnte ja auch schreiben:

12345,78 und mich dann entschließen an Stelle 1 (also eigentlich erlaubt) ein Minus zu schreiben, aber das geht dann nicht mehr, oder irre ich mich da?

Ciao fkerber

Alibi 22. Dez 2003 14:10

Re: Minus im edit nur als erstes Zeichen erlauben
 
Hab mal eine kleine Procedure für das OnKeyPress geschrieben um nur Integer zuzulassen, auch negative:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckInteger(Sender: TObject; var Key: Char);
begin
  if ((Sender as TLabeledEdit).SelStart = 0) then
  begin
   if not (Key in [#45,'0'..'9', #8]) then
     Key := #0;
  end else
    if not (Key in ['0'..'9', #8]) then
      Key := #0;
end;
Hier eine Variante für Kommmazahlen:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckComma(Sender: TObject; var Key: Char);
begin

  if Key = #44 then
    Key := DecimalSeparator;

  // Nur ein Komma zulassen
  if (Key = DecimalSeparator) and
     (pos(DecimalSeparator,(Sender as TLabeledEdit).Text) > 0) then
    Key := #0
  // Das Komma darf nicht am Anfang stehen
  else if (Key = DecimalSeparator) and ((Sender as TLabeledEdit).SelStart = 0) then
    Key := #0

  // -, nicht zulassen
  else if ((Sender as TLabeledEdit).SelStart = 1) and
     ((Sender as TLabeledEdit).Text[1] = #45) and
     (Key = DecimalSeparator) then
    Key := #0

  // Ein Minus darf am Anfang stehen und nur Zahlen zulassen sowie Backspace
  else if ((Sender as TLabeledEdit).SelStart = 0) then
  begin
   if not (Key in [DecimalSeparator,#45,'0'..'9', #8]) then
     Key := #0;
  end else
  begin
    if not (Key in ['0'..'9', #8, DecimalSeparator]) then
      Key := #0;
  end;
end;
Aber: Ich hab in dem Projekt das so gemacht, dass als Komma nur ein . zugelassen wird. Wenn die Kommataste gedrückt wurde, dann wird ein Punkt hinzugefügt, kein Komma.

notam 22. Dez 2003 15:26

Re: Minus im edit nur als erstes Zeichen erlauben
 
Hi!

Bin neu hier hier. Kann man das nicht einfach mit TMaskEdit realisieren? :?

Beispielsweise: #9999;1;_
Unter 'TCustomMaskEdit.EditMask' werden alle Befehle aufgelistet.

himitsu 22. Dez 2003 15:37

Re: Minus im edit nur als erstes Zeichen erlauben
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

Zitat:

Zitat von himitsu
Kannst natürlich auch mal das versuchen.
  • InputBox für Extended
  • incl. negativen Bereich
  • nimmt das im System angegebenen Dezimaltrennzeichen
  • überprüft die korrekte Schreibweise der eingegebene Zahl
    (allerdings nicht, wenn die Zahl über Zwischenanlage eingefügt wird)

Da du ja anscheinend keine negativen Zahlen brauchst, hab ich dir mal eine Version ohne erstellt.

Download des Codes siehe: Nur Zahlen und Punkte in InputBox

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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