Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prozedur deaktivieren/reaktivieren (https://www.delphipraxis.net/187611-prozedur-deaktivieren-reaktivieren.html)

Antonov 14. Dez 2015 20:01

Delphi-Version: 2006

Prozedur deaktivieren/reaktivieren
 
Guten Abend alle zusammen,

ich steh vor einem Bequemlichkeitsproblem, wo ich nicht weiterkomme:
Neulich habe ich mir ein Berechnungstool erstellt, mit vielen Edits, die alle mit .OnChange auf eine einzige Prozedur ansprechen, die mir ein Endergebnis berechnet.
Jetzt habe ich vor, durch einen andere Prozedur (eine Art Kalibrierung) in die ganzen Edits etwas per Code hineinzuschreiben. Leider wird hierbei die Prozedur für .OnChange angesprochen, und das Programm wird dadurch ein wenig langsam.
Jetzt könnte ich in der Kalibrierungsprozedur die Eventhandler für alle Edits entfernen und nachher hinzufügen, aber ich frage mich (und mittlerweile das halbe Internet), ob es nicht einen Befehl gibt, eine Prozedur temporär "abzuschalten".
Habt ihr eine Idee?

p.s. Ich nutze FreePascal, aber ich hoffe, dass ich über Delphi erstens mehr Leute anspreche, zweitens das Wissen 1:1 in FreePascal übertragen kann.

stahli 14. Dez 2015 20:17

AW: Prozedur deaktivieren/reaktivieren
 
Also Du möchtest programmgesteuert Edit1.Text und Edit2.Text ändern und Deine Berechnungsfunktion soll darauf nicht anspringen?
Ist das so richtig verstanden?

Dann kannst Du z.B. ein Flag
Delphi-Quellcode:
NotCalc: Boolean;
auf True setzen und Deine Berechnungsfunktion mit
Delphi-Quellcode:
if (NotCalc) then Exit;
sofort wieder verlassen.

Antonov 14. Dez 2015 20:22

AW: Prozedur deaktivieren/reaktivieren
 
Verdammt ... so einfach lässt sich das lösen.
Ok, Danke! xD

... hm, ist das jetzt peinlich oder nicht?

stahli 14. Dez 2015 20:25

AW: Prozedur deaktivieren/reaktivieren
 
nee :-)

Perlsau 14. Dez 2015 21:34

AW: Prozedur deaktivieren/reaktivieren
 
Zitat:

Zitat von stahli (Beitrag 1324435)
Delphi-Quellcode:
if (NotCalc) then Exit;

Die Klammer wird nicht benötigt, wenn es sich um einen einfachen Ausdruck handelt. Mit einfach meine ich nur eine Bedingung, also daß entweder eine Boolean-Variable wie in deinem Fall eingesetzt wird, oder ein anderer Ausdruck wie z.B.
Delphi-Quellcode:
If S = '' then ...
(S='' stellt einen Booleanwert dar, denn die Aussage kann nur wahr oder falsch sein). Erst wenn mehrere Ausdrücke – mehrere Bedingungen – den resultierenden Boolean-Wert bilden sollen, benötigst du die Klammer, z.B.
Delphi-Quellcode:
If (S = '') and (c = 5) then ...
, um die Ausdrücke sauber voneinander zu trennen.


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