AGB  ·  Datenschutz  ·  Impressum  







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

Ablauf verzögert sich

Ein Thema von Jinchuuriki · begonnen am 21. Okt 2017 · letzter Beitrag vom 22. Okt 2017
Antwort Antwort
Jinchuuriki

Registriert seit: 18. Sep 2017
7 Beiträge
 
#1

Ablauf verzögert sich

  Alt 21. Okt 2017, 15:40
Hallo,

ich habe ein Problem bei folgender Aufgabe:
Ich habe eine Spalte und möchte bei einer Eingabe überprüfen, ob die Eingabe eine Zahl oder nicht.
Sollte sie keine Zahl sein, erscheint ein Hinweis, dass nur Zahlen eingegeben werden sollen.
Am Ende der Spalte sollen alle Werte addiert werden.
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var Summe,i:Integer;
begin
    //Wenn die gedrückte Tastarturtaste im Bereich von 0 bis 9 liegt
    if not (Key in ['0'..'9',Char(VK_BACK)]) then //VK(Virtual-Key)_BACK = Backspace
    begin
        //Die Falsche Eingabe wird mit der Backspace-Taste(#0) gelöscht
        Key := #0;
        Label1.Caption := 'NUR ZAHLEN';
    end;

    //Variable wird initialisiert mit Startwert
    Summe := 0;
    //Tabellenspalte wird durchlaufen
    for i := 1 to StringGrid1.RowCount -2 do
    begin
        //Wenn das Feld leer ist, soll er mit der Abfrage weitermachen
        if StringGrid1.Cells[1,i] = 'then
        Continue
        else
        //Ist das Feld nicht leer, soll der Wert in die Variable addiert werden
        Summe :=Summe + StrToInt(StringGrid1.Cells[1,i]);
        //Letztes Feld kriegt die Summe aller Felder
        StringGrid1.Cells[1,StringGrid1.RowCount -1] := IntToStr(Summe);
    end;
end;
1.Zeile der Spalte ist beschriftet und fixed, deshalb startet die FOR-Schleife mit 1.

Problem:
Der ganze Ablauf, mit dem Zählen, verzögert sich um eine Ausführung.
Bsp:
Feld1= 1 Summe= ist leer
Feld2= 3 Summe= 1
Feld3= 6 Summe= 4

Was habe ich übersehen oder nicht bedacht?

MfG
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ablauf verzögert sich

  Alt 22. Okt 2017, 08:28
Wo legst du denn die Anzahl der Zeilen fest?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Jinchuuriki

Registriert seit: 18. Sep 2017
7 Beiträge
 
#3

AW: Ablauf verzögert sich

  Alt 22. Okt 2017, 09:42
Die Anzahl der Zeilen wird in den Eigenschaften auf 5 gesetzt. Ich ändere diese Einstellungen,nachdem ich das Grid erstellt habe,"noch" nicht.
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
677 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ablauf verzögert sich

  Alt 22. Okt 2017, 10:20
Tippe mal zwei Zahlen in ein Feld ein und schaue, was geschieht

Belasse die Tastenüberprüfung im OnKeyPress und verwende für die Berechnung stattdessen OnKeyUp.
Roland

Geändert von blawen (22. Okt 2017 um 10:30 Uhr)
  Mit Zitat antworten Zitat
Jinchuuriki

Registriert seit: 18. Sep 2017
7 Beiträge
 
#5

AW: Ablauf verzögert sich

  Alt 22. Okt 2017, 15:12
Danke für den Tipp,es läuft wie es sein muss.

Wieso funktioniert es nicht sofort bei OnKeyPress?

Werden, so zu sagen, beide Abfragen "gleichzeitig" durchgeführt und für die Abfrage in der FOR-Schleife ist beim ersten KeyPress,das Feld noch ohne den getätigten Eintrag?
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.890 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ablauf verzögert sich

  Alt 22. Okt 2017, 15:41
Im OnKeyPress besteht noch der alte Wert der Zelle. Erst nach Abarbeitung des Events wird der Wert neu gesetzt. Du rechnest also noch mit dem alten Zelleninhalt, wenn Du die Berechnung innerhalb dieses Events durchführst.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  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 15:46 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