Doppeltes Starten von Programmteilen
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Doppeltes Starten von Programmteilen
Ich habe einen itemselected bei meinem Browser angegeben.
Dadurch werden Dokumente aus der Datenbank geöffnet.
Wenn ich jetzt einen Doppelklick auf eine Zeile mache,
passiert es ab und zu, dass die Funktion zwei Mal aufgerufen wird.
Sieht aber eben ganz schön blöd aus, wenn das Dokument geöffnet, dann wird gehalten, dann macht man Word zu und es geht nochmal auf.
Wie kann ich das verhindern?
Dadurch werden Dokumente aus der Datenbank geöffnet.
Wenn ich jetzt einen Doppelklick auf eine Zeile mache,
passiert es ab und zu, dass die Funktion zwei Mal aufgerufen wird.
Sieht aber eben ganz schön blöd aus, wenn das Dokument geöffnet, dann wird gehalten, dann macht man Word zu und es geht nochmal auf.
Wie kann ich das verhindern?
Viele Grüße
Stevie
Stevie
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
Moin Stevie,
indem Du bei Aufruf Deiner Methode zuerst mal :itemselected() NIL zuweist und nach Beenden von Word wieder die Methode.
Dann kann immer nur ein Dokument in Word geäöffnet werden.
Nachteil: Word muß immer geschlossen werden, bevor in Deinem Programm ein neues Dokument geöffnet wird.
Besser: In Deiner itemselected()-Methode in einem CLASS-Array ablegen, welche Dokumente bereits geöffnet sind.
Soll jetzt ein Dokument per Klick geöffnet werden, wird erstmal in dem Array gescannt - ist es schon drin, passiert nix weiter. Ansonsten kommt es dazu und wird in Word geöffnet.
Nach dem Schliessen von Word musst Du das dann wieder aus dem Array entfernen - wie Du das machen willst, kann ich Dir nicht sagen - aber vielleicht kannst Du ja für Word den OnExit-Callback-Slot belegen (oder so ähnlich) und Dir dann dort den aktuellen Dokumentennamen geben lassen.
Viele Grüße,
Martin
indem Du bei Aufruf Deiner Methode zuerst mal :itemselected() NIL zuweist und nach Beenden von Word wieder die Methode.
Dann kann immer nur ein Dokument in Word geäöffnet werden.
Nachteil: Word muß immer geschlossen werden, bevor in Deinem Programm ein neues Dokument geöffnet wird.
Besser: In Deiner itemselected()-Methode in einem CLASS-Array ablegen, welche Dokumente bereits geöffnet sind.
Soll jetzt ein Dokument per Klick geöffnet werden, wird erstmal in dem Array gescannt - ist es schon drin, passiert nix weiter. Ansonsten kommt es dazu und wird in Word geöffnet.
Nach dem Schliessen von Word musst Du das dann wieder aus dem Array entfernen - wie Du das machen willst, kann ich Dir nicht sagen - aber vielleicht kannst Du ja für Word den OnExit-Callback-Slot belegen (oder so ähnlich) und Dir dann dort den aktuellen Dokumentennamen geben lassen.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
Das würde zwar auch gehen, aber da grundsätzlich nur ein Dokument offen sein darf, wird der erste Weg wohl besser sein.Martin Altmann hat geschrieben:Moin Stevie,
indem Du bei Aufruf Deiner Methode zuerst mal :itemselected() NIL zuweist und nach Beenden von Word wieder die Methode.
Dann kann immer nur ein Dokument in Word geäöffnet werden.
Nachteil: Word muß immer geschlossen werden, bevor in Deinem Programm ein neues Dokument geöffnet wird.
Besser: In Deiner itemselected()-Methode in einem CLASS-Array ablegen, welche Dokumente bereits geöffnet sind.
Soll jetzt ein Dokument per Klick geöffnet werden, wird erstmal in dem Array gescannt - ist es schon drin, passiert nix weiter. Ansonsten kommt es dazu und wird in Word geöffnet.
Nach dem Schliessen von Word musst Du das dann wieder aus dem Array entfernen - wie Du das machen willst, kann ich Dir nicht sagen - aber vielleicht kannst Du ja für Word den OnExit-Callback-Slot belegen (oder so ähnlich) und Dir dann dort den aktuellen Dokumentennamen geben lassen.
Viele Grüße,
Martin
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Doppeltes Starten von Programmteilen
hi,
oder setzte am Anfang eine Flag IsRunning(.T.) und am Ende zurück.
dann fange doch :lbDblClick ab ...stevie hat geschrieben: Ich habe einen itemselected bei meinem Browser angegeben.
Dadurch werden Dokumente aus der Datenbank geöffnet.
Wenn ich jetzt einen Doppelklick auf eine Zeile mache,
passiert es ab und zu, dass die Funktion zwei Mal aufgerufen wird.
oder setzte am Anfang eine Flag IsRunning(.T.) und am Ende zurück.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
isrunning klappt nicht, läuft trotzdem zweimal. wenn ich in der Methode itemselected auf niel setze und am Ende wieder voll, wirds auch zweimal aufgerufen.AUGE_OHR hat geschrieben:hi,dann fange doch :lbDblClick ab ...stevie hat geschrieben: Ich habe einen itemselected bei meinem Browser angegeben.
Dadurch werden Dokumente aus der Datenbank geöffnet.
Wenn ich jetzt einen Doppelklick auf eine Zeile mache,
passiert es ab und zu, dass die Funktion zwei Mal aufgerufen wird.
oder setzte am Anfang eine Flag IsRunning(.T.) und am Ende zurück.
Viele Grüße
Stevie
Stevie
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
Dann probier's doch mal mit einem oDialog:Disable() gleich als erstes im ItemMarked-Codeblock. Am Ende (oder in der aufgerufenen Funktion) :Enable() nicht vergessen.
Herzlich,
Tom
Tom
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
Stevie,
auf "voll" darfst Du nur nach dem Beenden von Word setzen
Nicht nach dem Beenden der Methode...
Viele Grüße,
Martin
auf "voll" darfst Du nur nach dem Beenden von Word setzen
Nicht nach dem Beenden der Methode...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Doppeltes Starten von Programmteilen
hi,
es ist absolut unmöglich das er dann 2x tu_mal_was_in_word() ausführt.
ich denke wir missverstehen uns.stevie hat geschrieben: isrunning klappt nicht, läuft trotzdem zweimal. wenn ich in der Methode itemselected auf niel setze und am Ende wieder voll, wirds auch zweimal aufgerufen.
Code: Alles auswählen
STATIC isRun := .F.
IF isRUN
RETURN
ELSE
isRun := .T.
tu_mal_was_in_word()
isRun := .F.
ENDIF
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
ich hatte es als Klassenvariable genau so wie du stehen, nur nich static. Egal ich rufe jetzt beim itemselected vorher noch noch ::oBrowse:disable auf und enable ihn, wenn die öffnen-Methode durch ist, dann is Ruhe mit 2 Mal.AUGE_OHR hat geschrieben:hi,ich denke wir missverstehen uns.stevie hat geschrieben: isrunning klappt nicht, läuft trotzdem zweimal. wenn ich in der Methode itemselected auf niel setze und am Ende wieder voll, wirds auch zweimal aufgerufen.es ist absolut unmöglich das er dann 2x tu_mal_was_in_word() ausführt.Code: Alles auswählen
STATIC isRun := .F. IF isRUN RETURN ELSE isRun := .T. tu_mal_was_in_word() isRun := .F. ENDIF
Viele Grüße
Stevie
Stevie
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Doppeltes Starten von Programmteilen
Is zwar blöd, immer erst zu enablen und zu disablen, aber was soll.
Wieder was dazu gelernt.
Vielen Dank für eure Mühe
Wieder was dazu gelernt.
Vielen Dank für eure Mühe
Viele Grüße
Stevie
Stevie