LockUpdate(...) Status abfragen möglich?
Moderator: Moderatoren
LockUpdate(...) Status abfragen möglich?
Hallo
kann man den Status von oDlg:LockUpdate(...) abfragen?
kann man den Status von oDlg:LockUpdate(...) abfragen?
- Tom
- 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?
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
Tom
Re: LockUpdate(...) Status abfragen möglich?
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.
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.
- Tom
- 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?
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().
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
Tom
Re: LockUpdate(...) Status abfragen möglich?
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.
Das kommt bei mir aber immer direkt nach dem LockUpdate(.F.).
Somit ändert das nichts daran den Zustand zu merken oder abzufragen.
- Tom
- 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?
Wie wäre es dann mit einer Get-/Set-Funktion, die abgefragt wird?
Beim ersten LockUpdate(.T.) wird UnlockAllowed(.F.) aufgerufen, vor jedem möglichen folgenden dann:
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.
Code: Alles auswählen
FUNCTION UnlockAllowed(lSet)
STATIC lAllowed := .T.
IF PCount()>0
lAllowed := lSet
ENDIF
RETURN lAllowed
Code: Alles auswählen
IF UnlockAllowed()
o:LockUpdate(.F.)
o:InvalidateRect()
ENDIF
Man kann natürlich auch eine PUBLIC setzen, oder, eleganter, eine iVar des abgeleiteten Dialogobjekts.
Herzlich,
Tom
Tom
Re: LockUpdate(...) Status abfragen möglich?
Hallo Tom
danke - so mache ich es jetzt auch - mit zwei Functions...
danke - so mache ich es jetzt auch - mit zwei Functions...
Re: LockUpdate(...) Status abfragen möglich?
Scheint auch mit einer Funktion zu gehen:
Ist für ein XbpCrt
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 )