LockUpdate(...) Status abfragen möglich?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
DelUser01

LockUpdate(...) Status abfragen möglich?

Beitrag von DelUser01 »

Hallo

kann man den Status von oDlg:LockUpdate(...) abfragen?
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von Tom »

Meines Wissens nicht, aber man kann oDlg:LockUpdate(.T.) so oft aufrufen, wie man möchte. Es genügt allerdings ein einziges oDlg:LockUpdate(.F.), um das zu lösen.
Herzlich,
Tom
DelUser01

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von DelUser01 »

Hallo Tom,

genau um das wieder einschalten geht es.
Bei verschachtelten Aufrufen kann es eben passieren, dass der letzte, "unterste" Aufruf das LockUpdate wieder einschaltet, obwohl das noch nicht stattfinden soll.
Natürlich kann ich mir das merken, mit der Abfrage könnte ich mir das aber einfacher machen.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von Tom »

Hallo, Roland.

Du könntest natürlich eine Klasse ableiten, LockUpdate() überlagern und dort einen Counter setzen. Aber Du kannst auch einfach nach jedem Aufruf einer Funktion, die möglicherweise das LockUpdate() auf .F. setzt, wieder ein LockUpdate(.T.) einfügen. Wirksam wird's ja ohnehin erst mit dem nächsten InvalidateRect().
Herzlich,
Tom
DelUser01

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von DelUser01 »

OK Tom - Du hast recht mit dem InvalidateRect().
Das kommt bei mir aber immer direkt nach dem LockUpdate(.F.).
Somit ändert das nichts daran den Zustand zu merken oder abzufragen.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von Tom »

Wie wäre es dann mit einer Get-/Set-Funktion, die abgefragt wird?

Code: Alles auswählen

FUNCTION UnlockAllowed(lSet)
STATIC lAllowed := .T.
IF PCount()>0
  lAllowed := lSet
ENDIF
RETURN lAllowed
Beim ersten LockUpdate(.T.) wird UnlockAllowed(.F.) aufgerufen, vor jedem möglichen folgenden dann:

Code: Alles auswählen

IF UnlockAllowed()
  o:LockUpdate(.F.)
  o:InvalidateRect()
ENDIF
Nach dem endgültigen und dann erlaubten LockUpdate(.F.) muss UnlockAllowed(.T.) aufgerufen werden.

Man kann natürlich auch eine PUBLIC setzen, oder, eleganter, eine iVar des abgeleiteten Dialogobjekts.
Herzlich,
Tom
DelUser01

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von DelUser01 »

Hallo Tom

danke - so mache ich es jetzt auch - mit zwei Functions...
DelUser01

Re: LockUpdate(...) Status abfragen möglich?

Beitrag von DelUser01 »

Scheint auch mit einer Funktion zu gehen:

Code: Alles auswählen

Function MainCrtLockUpdate( lLock )
Static nLocks := 0
If lLock
   nLocks++
   Main_oCrt():LockUpdate( .T. )
Else
   If nLocks >= 2
      nLocks--
   Else
      nLocks := 0
      Main_oCrt():LockUpdate( .F. )
      Main_oCrt():InvalidateRect()
   EndIf
EndIf
Return( nLocks )
Ist für ein XbpCrt
Antworten