AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi NACH einem bestimmten Zeichen im Edit über OnKeyPress reagie
Thema durchsuchen
Ansicht
Themen-Optionen

NACH einem bestimmten Zeichen im Edit über OnKeyPress reagie

Ein Thema von juergen · begonnen am 4. Mär 2006 · letzter Beitrag vom 5. Mär 2006
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

NACH einem bestimmten Zeichen im Edit über OnKeyPress reagie

  Alt 4. Mär 2006, 22:05
Hallo zusammen,
ich habe nun schon einiges gesucht, aber nicht das richtige gefunden...

Ich möchte in einem Editfeld NACH einem #58 (Doppelpunkt) prüfen, ob dann
die nächste eingegebene Zahl > 5 ist. (im OnKeyPress Event)
Jetzt habe schon schon einiges gesucht, aber das richtige noch nicht gefunden.


Ich schätze ich muss irgendetwas mit Selstart und Length machen, nur wie?

Kann mir hier jemand helfen?

In meiner 2005er PE Version vermisse ich da als Anfänger Beispiele.
Ich meine in DP 5 mal gesehen zu haben, dass dort in der Hilfe auch Beispiel mit dabei waren...
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 4. Mär 2006, 22:28
Finde per Pos oder Posex den Doppelpunkt, lese das nächste Zeichen aus und überprüfe es dann auf die Größe;

also grob

Delphi-Quellcode:
str:= edit1.text;
n:= pos(':',str);
if n>-1 do // Überprüfung, ob überhaupt ein Doppelpunkt vorliegt
 begin
 s:= str[n];
 if strttoint(s)>5 then
  bla;
 else
  bla2;
 end;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 4. Mär 2006, 23:31
Hallo Toxman,
erst einmal danke für deine Hilfe.
Leider bekomme ich es nicht hin.
Ich habe mal folgendes probiert: (den Doppelpunkt brauch ich nicht prüfen, der ist garantiert vorhanden)
Delphi-Quellcode:
var
string1, liTSPos : String;
HighMinute : Integer;
begin
    string1:= InputA.text;
    HighMinute:= pos(':',string1);
    liTSPos:= string1[HighMinute];
     if strtoint(liTSPos)> 5 then begin
      if not (key in [#8,#13,#48..#53]) then key:=#0 ;
     end
     else
     ...
Sowie ich ein Zeichen eingeben, kommt eine Exception...

Kannst du erkennen, wo hier das Problem ist?


Gruß Jürgen
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 4. Mär 2006, 23:51
Hallo,
mit strtoint(liTSPos) versuchst Du den ':' in einen Integer umzuwandeln.
Delphi-Quellcode:
   HighMinute:= pos(':',string1);
   liTSPos:= string1[HighMinute];//liTSPos enthält jetzt ':'
   if strtoint(liTSPos)> 5 then begin
Versuch es mal damit:
Delphi-Quellcode:
var s : String;
begin
  s := Edit1.Text;
  if (Length(s) > 0) and
     (s[Edit1.Selstart] = ':') and
     (not (key in [#8,#13,#54..#57])) then
      key := #0;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 5. Mär 2006, 00:00
So, ich habs...
Folgendermaßen habe ich es nun gelöst:

Delphi-Quellcode:
if (InputA.SelLength = 0) then begin
    lsText := InputA.Text;
    liTSPos := Pos(#58, lsText);
    if (liTSPos > 0) and (InputA.SelStart = liTSPos) and (Length(lsText) - liTSPos >= 1)
    then begin
        if not (key in [#8,#13,#48..#53]) then key:=#0 ;
      Beep;
  end; // (InputA.SelLength = 0)
  end
else

//Edit
Hallo Lannes,
Das funktioniert auch. (wobei ich noch nicht weiß, WARUM das funktioniert. Muss ich mir unbedingt anschauen)
Das nehme ich jetzt auch.
vielen Dank und gute Nacht!

Grüsse Jürgen
Jürgen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 5. Mär 2006, 07:14
Hallo Jürgen,

teste mal so:
  • versuche die 5 mit der Entf-Taste zu löschen.
  • kopiere die 9 in die Zwischenablage und füge sie vor der 5 wieder ein.
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 5. Mär 2006, 13:32
Hallo Marabu,
jupp, das geht natürlich.
Muss man sowas abfangen, ich meine verhindern?
Ich habe ja noch das OnExit Ereignis, (auch von dir) wo dann z.B. aus 12:9
beim verlassen des Edits 12:09 wird. Aus 12:99 wird dann eben 13:39. Aus 2:5 wird nun doch 12:50
Ich meine, der Anwendner sieht ja den Wert mit welchem dann gerechnet wird.
Über den üblichen Weg über Tastatur kann der Anwender nur richtige Werte eingeben, fügt er allerdings
"verbotenerweise" aus der Zwischenablage etwas ein, nun gut, er sieht dann den Wert der dabei raus kommt.
Eine Falschrechnung bzw. sogar Exception kann von meiner Seite aus nicht entstehen.
Über die Kombination des OnKeyPress- und anschließend über das OnExit-Event erreiche ich aus meiner Sicht das "optimale" Ergebnis.

Das ist MEIN Gedankengut dazu. Ob das für den Anwender so richtig ist weiß ich auch nicht so genau...

Gruß Jürgen
Jürgen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 5. Mär 2006, 13:55
Hallo Jürgen,

wenn dir in D2K5 die Komponente TDateTimePicker zur Verfügung steht, dann ziehe die mal auf eine Form, setze Format auf HH:mm und Kind auf dtkTime und schreibe mal wie dir das gefällt.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: NACH einem bestimmten Zeichen im Edit über OnKeyPress re

  Alt 5. Mär 2006, 14:34
Hallo Marabu,
nicht schlecht!!!
Interessant wäre hier für mich "nur" noch 1 Sache:
1) kein Einfügen möglich (für mich eher vernachlässigbar)
2) Cursor springt je nach eingegebener Zahl direkt eine Stelle weiter. Das gefällt.
Aber:
Nach soviel Mühen möchte ich nun aber unbedingt bei dem angepaßten Edit bleiben.
zu 1) werde ich verzichten.
zu 2) das wäre noch eine Herausforderung für mich das anzupassen.
Je nach eingegebener Zahl einfach eine Stelle weiter zu springen. Werd' ich wohl auch machen.

In meiner Anwendung kann man für die Stundenwerte x-beliebige Anzahl an Stellen eingeben.(z.B. 9999:56)
Das scheint mit dem DateTimePicker nicht zu gehen.

Auf jeden Fall weiß ich nun für die Zukunft, dass man bei reinen 24 Stundenformat sich unbedingt den DateTiemePicker näher ansehen sollte.

Danke dazu!

Gruß Jürgen
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:03 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