AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

in edit maximal 1 KOMMA zulassen

Ein Thema von HappyTreeFriend · begonnen am 24. Jun 2003 · letzter Beitrag vom 24. Jun 2003
Thema geschlossen
Seite 1 von 2  1 2      
HappyTreeFriend

Registriert seit: 17. Jun 2003
14 Beiträge
 
#1

in edit maximal 1 KOMMA zulassen

  Alt 24. Jun 2003, 17:17
Moin Leutz

Also ich hab mal wieder n kleines Problemchen... Ich will, dass in bestimmte Edit-Fenster in meinem Programm nur maximal 1 Komma stehen darf, also, dass man es praktisch auch nur 1 mal eingeben kann. Die 2. Lösung wäre, dass wenn es ein zweites mal steht, eine Showmessage angezeigt wird, dass ein Komma zu viel ist.


Code:
procedure TForm7.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in [#8, #9,#44, #48 .. #57]) then key:=#0;
end;
{Hier wird das Komma im Editfenster erlaubt... müsste #44 sein, jedoch will ich ja, dass es nur 1 mal erlaubt ist, damit eine eingabe wie 1,2,3,... nicht geht.}
Kann man das vielleicht über solch eine Procedure machen?

thx 4 reply

so long Euer HappyTreeFriend
 
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 24. Jun 2003, 17:25
Hallo und herzlich Willkommen im Forum!

Ist zwar jetzt evtl. nicht die schönste Lösung, aber ein Gedankengang wert.

Also,
Du hast ja schon die Prozedur damit die Kommata-Taste schonmal erlaubt ist. Zudem machst Du Dir eine globale Variable vom Typ Boolean. Die ist bei Programmstart erstmal False. Jetzt gibst Du also Deine sachen im Edit ein, im OnChange des Edits, überprüfst Du wann und ob das , gedrückt wurde, in dem Augenblick, setzt Du die Boolean-Variable auf True. Jetzt muss Du bei jedem weiteren Tastendruck prüfen welche Taste es ist, zudem schaust Du noch ob die Variable schon True ist, wenn das der Fall ist und , wurde gedrückt, so schreibst Du "Key := #0;" somit ist das , wirkungslos und sollte nicht/nie mehr im Edit auftauchen, ob Du jetzt auch noch eine Message bringst, ist dann Deine Entscheidung, mich würde es stören. Es gibt "warscheinlich" eine Hilfe zu dem Programm und da kann man durchaus schrieben das im Edit nur ein Kommata erlaubt ist, somit könnte man sich die Message sparen. Zudem könntest Du zu dem Edit noch ein Hint machen mit dem Hinweis das nur ein Kommata erlaubt ist.

Grüsse, Daniel
 
HappyTreeFriend

Registriert seit: 17. Jun 2003
14 Beiträge
 
#3
  Alt 24. Jun 2003, 18:04
Hm... also ich hab versucht, das so zu machen, wie du das sagst, aber irgendwie bekomm ich das ned so ganz hin. wäre vielleicht hilfreich, wenn du mir nen kleinen quelltext schicken könntest.
 
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 24. Jun 2003, 18:42
Hallo,

hier mal was zusammengeklickt.
Delphi-Quellcode:
var
  Form1: TForm1;
  MyVar: Boolean;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  iTemp: Integer;
begin
  if not (Key in [#48..#57, #8, #44]) then
    Key := #0;

  for iTemp := 0 to Length(Edit1.Text) do
  begin
    if Edit1.Text[iTemp] = #44 then
    begin
      MyVar := True;
    end; //if
  end; //for iTemp

  if MyVar and (Key = #44) then
  begin
    Key := #0;
    ShowMessage('Blupp');
  end; //if
end;
So ungefähr könnte das aussehen. Es ist nicht fertig, aber den Rest müsstest Du auch alleine hinbekommen. Da gehören noch 1-2 Abfragen rein. Aber im groben sollte es das tun.

Grüsse, Daniel
 
HappyTreeFriend

Registriert seit: 17. Jun 2003
14 Beiträge
 
#5
  Alt 24. Jun 2003, 19:30
Danke. Werd das mal einbauen... denke, dass das so funzt.

ENDLICH GEHTS WEITER
 
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#6
  Alt 24. Jun 2003, 19:38
Ginge da eigentlich nicht auch, dass man im OnChange mit Pos() prüft, ob ein Komma schon vorhanden ist?
 
Daniel B
(Gast)

n/a Beiträge
 
#7
  Alt 24. Jun 2003, 19:50
Hallo,
Zitat von Stanlay Hanks:
Ginge da eigentlich nicht auch, dass man im OnChange mit Pos() prüft, ob ein Komma schon vorhanden ist?
Versuch Dein Glück und zeig uns dann den Code. Ich warte.
Aber hier direkt reinhacken und nicht testen!

Grüsse, Daniel
 
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8
  Alt 24. Jun 2003, 20:00
Code:
if pos (DecimalSeparator,text) <> 0 then begin // Komma überhaupt da ??
then
        key := #0; // zweites Komma unterdrücken
P.S.: nicht getestet !
Gruß
Hansa
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 24. Jun 2003, 20:04
Moin HappyTreeFriend,

sollte so gehen:

Delphi-Quellcode:
procedure TForm7.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
  if (key = #44) and (pos(#44,(Sender as TEdit).Text) > 0) then begin
    key := #0;
    exit; // Vorher kannst Du hier auch noch was anzeigen lassen.
  end;
  if not (key in [#8, #9,#44, #48 .. #57]) then key:=#0;
end;
Voraussetzung für meine Variante:
Dieses Ereignis darf nur für ein TEdit Feld verwendet werden.

@Stanlay:
Die Idee war gut, nur wirst Du im OnChange das Problem haben zu entscheiden, welches der beiden Kommata das erste war, um das andere wieder löschen zu können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
 
HappyTreeFriend

Registriert seit: 17. Jun 2003
14 Beiträge
 
#10
  Alt 24. Jun 2003, 20:11
also immoment hab ich diese Variante am laufen:

Code:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if not (key in [#8, #9,#44, #48 .. #57]) then key:=#0;
    if (key = #44) and (Pos(',', edit1.text) > 0) then
    key:=#0


end;
scheint soweit zu gehen!



Mal was anderes

Ich möchte, da ich in manchen Editfenstern Zufallszahlen erzeuge, einen kleinen "Slotmachine" Effekt einbauen. Also dass er irgendwelche zahlen ziemlich schnell hintereinander im editfeld anzeigt und am ende dann die Zufallszahl bringt. Der Effekt muss nicht großartig sein, einfach ein paar zahlen schnell hintereiander ins Editfenster eintragen..

ich dachte es geht ganz einfach mit sowas wie
edit1.text:='3'
sleep(100);
edit1.text:='6'
sleep(100);
edit1.text:='1'


aber da bringt er dann nur die '1' ..

kann mir da noch jemand weiterhelfen? )

Danke!!!
 
Thema geschlossen
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz