Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Namen von boolschen Variablen / Bool Variablen überwachen (https://www.delphipraxis.net/186756-namen-von-boolschen-variablen-bool-variablen-ueberwachen.html)

Sugar 26. Sep 2015 12:30

Delphi-Version: 7

Namen von boolschen Variablen / Bool Variablen überwachen
 
Hallo Forum,

ich möchte in einer Anwendung grafisch anzeigen wenn gewisse Schalter (bool) gesetzt sind und natürlich auch die Anzeige entfernen, wenn der Schalter nicht gesetzt ist.

Den Schalter kann der User selbst jederzeit setzen. Zum Beispiel:

Ich erlaube dem User auf ein PopUpMenü-Eintrag zu klicken um einen Editiermodus zu aktivieren.
Verschiedene Aktionen (speichern, ESC-Taste, abbrechen etc.) beenden diesen Editiermodus. Dahinter verbirgt sich eine boolsche Variable die in jedem einzelnen Eventhandler entsprechend verändert wird.

Mir schwebt nun eine Funktion vor, die sämtliche boolschen Variablen umschaltet und abhängig von der Variable weitere Dinge verrichtet:

Also praktisch so:

Jemand schaltet das Editieren ein (boolEDIT:=TRUE) passiert nicht auf den Button oder PupUpKlick, sondern der Button schickt die Variable an diese Funktion und diese schaltet den Wert um und reagiert abhängig vom Namen der Variablen.

So nach dem Motto:

Procedure SwitchBool ( NameDerBoolVariable: ??? (String) )
Begin
NameDerBoolVariable := Not NameDerBoolVariable;
if NameDerBoolVariable = 'boolEdit' then
begin
// zeig was sexy an..
end;

Sir Rufo 26. Sep 2015 12:41

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
Das macht man mit einer
Delphi-Quellcode:
property
. Im Setter kann man dann auf die Änderung reagieren und einen Event auslösen (Vor der Änderung, Nach der Änderung).

Sugar 27. Sep 2015 12:36

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
OK, es geht also...

Kannst du mir ein Beispiel zeigen oder auf die Sprünge helfen?

Aviator 27. Sep 2015 13:47

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
Deklariere im Public-Abschnitt oder auch Private (was eigentlich Quatsch ist) eine
Delphi-Quellcode:
property
Delphi-Quellcode:
type

TTestClass = class
private
  FMyProperty: Boolean;
  procedure SetMyProperty(Value: Boolean);
  function GetMyProperty: Boolean;
public
  // Alternativ zu GetMyProperty kannst du auch einfach FMyProperty einsetzen, da beim Lesen ja nur der aktuelle Wert zurückgegeben werden soll
  property MyProperty: Boolean read GetMyProperty write SetMyProperty;
end;

implementation

procedure TTestClass.SetMyProperty(Value: Boolean);
begin
  if SomeCondition then // Hier kannst du entscheiden, wann deine Variable gesetzt werden soll
    FMyProperty := Value;
end;

function TTestClass.GetMyProperty: Boolean;
begin
  Result := FMyProperty;
end;

Alles nur so hier reingeschrieben. Es könnte also auch der ein oder andere (Schreib-)Fehler darin enthalten sein.


Edit: Im Setter (SetMyProperty) kannst du natürlich noch hunderte weitere Schritte ausführen wie z.B. ein paar Buttons je nach Zustand ein- oder ausschalten. Halte den Setter aber so kurz wie möglich.

Delphi-Quellcode:
procedure TTestClass.SetMyProperty(Value: Boolean);
begin
  if SomeCondition then // Hier kannst du entscheiden, wann deine Variable gesetzt werden soll
    FMyProperty := Value;

  DoSomeOtherStuffHere;
end;

Dejan Vu 28. Sep 2015 06:22

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
Zitat:

Zitat von Aviator (Beitrag 1317068)
Deklariere ... oder auch Private (was eigentlich Quatsch ist)

Wieso ist das Quatsch?

Jumpy 28. Sep 2015 09:39

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
Ich mag mich täuschen, aber ich habe den TE so verstanden, dass er gerne eine Prozedur hätte, der er eine beliebige (oder zumidnest verschiedene) Boolsche variablen übergeben kann und dir Prozedur negiert deren Wert und abhängig von der konkreten Variablen wird dann noch irgendwas in der Anzeige gesteuert.

Das wird aber wohl so naiv nicht funktionieren, weswegen er vielleicht um es einfach zu halten vielleicht das switchen der Variablenwerte jeweils für die Variablen an der richtigen Stelle selber macht und dann jeweils eine Prozedur aufruft, um die Anzeige anzupassen:

Delphi-Quellcode:
  [...irgendwo im Code passiert:]
  EditsOnLeftSideVisible:= True // False // not EditsOnLeftSideVisible ???
  AdjustView

procedure AdjustView()
  begin
  //...andere Prüfungen
  PanelWithEditsOnLeftSide.Visible:=EditsOnLeftSideVisible;
  //...andere Prüfungen
  end;
Eine Funktion, die nur eine boolsche Variable "Switched", könnte man realisieren, indem man die variable als Referenz übergibt:

Delphi-Quellcode:
procedure SwitchBoolValue(var aBool:Bool);
  begin
  aBool:=not aBool;
  end;

Sugar 29. Sep 2015 06:44

AW: Namen von boolschen Variablen / Bool Variablen überwachen
 
Zitat:

Zitat von Jumpy (Beitrag 1317096)
Ich mag mich täuschen, aber ich habe den TE so verstanden, dass er gerne eine Prozedur hätte, der er eine beliebige (oder zumidnest verschiedene) Boolsche variablen übergeben kann und dir Prozedur negiert deren Wert und abhängig von der konkreten Variablen wird dann noch irgendwas in der Anzeige gesteuert.

Stimmt! So war der ursprüngilche Gedanke. Hintergrund ist der, dass ich nicht an jeder Stelle an der diese Variable(n) verändert werden, manuell die Routine zum Anpassen der Ansicht aufrufen muss. Ich will - sozusagen - auf das "Event" des Ändern des Werts der Bool-Variable reagieren.

Ich probiere es zunächst einmal mit dem Hinweis auf den Setter. Vielen Dank zunächst..


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf