Autor Beitrag
matmalign
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 16.06.03 17:43 
Hi zusammen,

habe ein problem das sehr simpel klingt - nicht für mich!

ich möchte das man bei der eingabe in ein editfeld maximal 1 minuszeichen eintippen kann. ums deutlich zu machen: ich möchte in die editfelder positive als auch negative zahlen zur eingabe zulassen - nur wenn ich zweimal '-' eintippe kommt eine fehlermeldung

schon mal danke im vorraus

Moderiert von user profile iconTino: Titel geändert.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.06.03 18:02 
Merk dir doch wann eine Minus eigegeben wurde und wenn das nächste mal eins kommt ignorierst du es.
matmalign Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 16.06.03 18:23 
hm... diese antwort tät mir bestimmt etwas sagen - wenn ich etwas weiter mit dem stoff wäre

kann man delphi nicht auch einfach nur sagen er soll maximal ein minuzeichen zu beginn des editfeldes zur eingabe zulassen

also entweder gleich zu beginn ein minuszeichen oder gar keins
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 16.06.03 18:44 
Du müßtest das eigentlich so lösen können, daß du ins OnKeyPress-Ereignis gehst und dort dann überprüfst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
If (Key=Strich [ich kenne den ASCII-Wert nicht]) And (Minus=True) Then
Begin
Lasse Minus zu;
Minus:=False;
End
Else Key:=#0 [Rückschritt]


Minus ist ein Boolean, mit dem du arbeiten mußt, denn diese Variable merkt sich, ob ein Minus erlaubt ist, oder nicht. Du mußt sie im FormCreate-Ereignis auf False setzen und dann unbedingt damit arbeiten, sonst gehts nicht (nicht in meiner Lösung). :-)

_________________
Hasta La Victoria Siempre
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mo 16.06.03 19:33 
überprüf doch einfach ob schon eins vorhanden ist

ausblenden Delphi-Quelltext
1:
If (Key='-' and pos(Edit1.Text, '-') > 0) then Key := #0;					

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
matmalign Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 16.06.03 19:47 
hey das könnte funktionieren - ich werds gleich mal ausprobieren
danke
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mo 16.06.03 20:04 
// Arg, hab *mist*e gelabert, man muss ja auch noch das minus nachträglich dazufügen können ;)

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.


Zuletzt bearbeitet von Tweafis am Mo 16.06.03 20:05, insgesamt 1-mal bearbeitet
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 16.06.03 20:05 
Den letzten Tip kann man gebrauchen. Alternativ kannst du auch hier die Funktion IsValidInteger nehmen

www.delphi-forum.de/...ic.php?p=37474#37474

und Edit jedes mal prüfen lassen ob der String einen gültigen Integer enthällt. Allerdings ist es etwas für danach, d.h. es verhindert nicht, daß das Minuszeichen das Editfeld ereicht.

_________________
Popov
matmalign Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 16.06.03 21:28 
hab jetzt mal folgendes versucht - es hat ja schon fast funktioniert

hab zunächst einmal die ziffern 1-9 , das minuszeichen , und die backspace taste zur eingabe zugelassen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    '0'..'9', #45, #8: ;

jetzt hatte ich vor eine bedingung für #45('-') anzuknüpfen
und zwar wenn '-' im editfeld nicht an 1. stelle steht dann werden nur noch die ziffern 1-9 und die backspace taste zur eingabe zugelassen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
   else
   if (key = #45) and ((pos(Edit1.Text, #45)) < 1) then
    case Key of
    '0'..'9', #8: ;

aber das funktioniert auch nicht :?

Moderiert von user profile iconTino: Delphi-Tags eingefügt.
matmalign Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 17.06.03 08:39 
ich glaubs kaum - aber grad hat ich wohl ne göttliche eingebung

sieht recht kompliziert aus aber es funktioniert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key <> #45) then
  case Key of
    '0'..'9', #8:
  else key := #0;
  end;

    if (key = #45) and not ((pos(Edit1.Text, #45)) = 0) then
      case Key of
      '0'..'9', #45, #8: ;
      else key := #0;
      end;


      if (key = #45) and ((pos(Edit1.Text, #45)) = 1) then
        case Key of
        '0'..'9', #8: ;
        else key := #0;
        end;

        if (key = #45) and not ((pos(Edit1.Text, #45)) = 1) and (length(Edit1.Text) >= 1) then
          case Key of
          '0'..'9', #8: ;
          else key := #0;
          end;

end;

bin mir sicher das es noch einfacher geht aber so ist es momentan ganz ok

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 17.06.03 11:21 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  case Key of
    '0'..'9', #8: ;
    #45: If pos(Edit1.Text, '-') > 0 then Key := #0;
  else Key := #0;
  end;

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: Di 17.06.03 17:11 
Moin erstmal!

Was bei der ganzen Sache noch zu bedenken ist, ist daß das "-"-Zeichen ganz vorne oder ganz hinten stehen muß. 123-456 ist nämlich nicht gleich -123456!

Gruß Renegade

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 17.06.03 19:02 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  case Key of
    '0'..'9', #8: ;
    #45: If (pos(Edit1.Text, '-') > 0 or Edit1.SelStart<>0 or Edit1.SelLength <> 0) then Key := #0;
  else Key := #0;
  end;


So könnte man das umgehen.

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.