Dialoge - Verhalten nach dem Beenden
Moderator: Moderatoren
-
- Beiträge: 5
- Registriert: Di, 25.04.2017 13:51
Dialoge - Verhalten nach dem Beenden
Hallo,
ich habe einen Dialog erstellt, um ein Tabellenblatt in Calc strukturiert auszufüllen. Der Dialog wird mit "Dialog.execute() geöffnet und mit anderer Sub nach verschiedenen Prüfungen mittels "Dialog.endexecute()" wieder geschlossen. Soweit so gut. Nun ist das Problem aufgetreten, das nach dem Schliessen des Dialogs der Focus nicht wieder zum Tabellenblatt zurückgegeben wird sondern quasi in der Luft hängt. Ich muß also zunächst mal auf eine beliebige Zelle klicken, bevor ich zum Beispiel einen Button drücken oder die Laufleisten klicken kann. Klicke ich irgendwo außerhalb des Tabellenblattes, hüpft der Zellzeiger sonstwo hin.
Ich habe bereits versucht, per Makro den Zellzeiger zu verschieben oder ein anderes Tabellenblatt auszuwählen. Das passiert auch, daß Problem bleibt aber bestehen.
Wie bekomme ich den Focus nach "Dialog.endexecute()" wieder auf das Tabellenblatt?
ich habe einen Dialog erstellt, um ein Tabellenblatt in Calc strukturiert auszufüllen. Der Dialog wird mit "Dialog.execute() geöffnet und mit anderer Sub nach verschiedenen Prüfungen mittels "Dialog.endexecute()" wieder geschlossen. Soweit so gut. Nun ist das Problem aufgetreten, das nach dem Schliessen des Dialogs der Focus nicht wieder zum Tabellenblatt zurückgegeben wird sondern quasi in der Luft hängt. Ich muß also zunächst mal auf eine beliebige Zelle klicken, bevor ich zum Beispiel einen Button drücken oder die Laufleisten klicken kann. Klicke ich irgendwo außerhalb des Tabellenblattes, hüpft der Zellzeiger sonstwo hin.
Ich habe bereits versucht, per Makro den Zellzeiger zu verschieben oder ein anderes Tabellenblatt auszuwählen. Das passiert auch, daß Problem bleibt aber bestehen.
Wie bekomme ich den Focus nach "Dialog.endexecute()" wieder auf das Tabellenblatt?
Re: Dialoge - Verhalten nach dem Beenden
Indem Du per Makro, nach Ausführen von "Dialog.endexecute()", eine Zelle markierst?Wie bekomme ich den Focus nach "Dialog.endexecute()" wieder auf das Tabellenblatt?
http://www.dannenhoefer.de/faqstarbasic ... Zelle.html
Gruß
Stephan
-
- Beiträge: 5
- Registriert: Di, 25.04.2017 13:51
Re: Dialoge - Verhalten nach dem Beenden
Hallo Stephan,
genau das funktioniert eben nicht, was aber nicht auf den ersten Blick auffällt, da sich der Zellzeiger ja korrekt bewegt. Klicke ich dann aber unmittbar auf die Scrollbalken der Anwendung, dann wird nicht gescrollt, sondern der Zellzeiger springt unkontrolliert nach rechts bzw. unten. Ich kann auch nicht im Makrofenster schreiben. Wenn ich dann händisch eine Zelle anklicke, klappt alles wieder.
Das Ganze kann natürlich auch ein Bug von Openoffice für Windows sein, was ich aber nicht verifizieren kann.
genau das funktioniert eben nicht, was aber nicht auf den ersten Blick auffällt, da sich der Zellzeiger ja korrekt bewegt. Klicke ich dann aber unmittbar auf die Scrollbalken der Anwendung, dann wird nicht gescrollt, sondern der Zellzeiger springt unkontrolliert nach rechts bzw. unten. Ich kann auch nicht im Makrofenster schreiben. Wenn ich dann händisch eine Zelle anklicke, klappt alles wieder.
Das Ganze kann natürlich auch ein Bug von Openoffice für Windows sein, was ich aber nicht verifizieren kann.
Re: Dialoge - Verhalten nach dem Beenden
Hi,
ich kann das so nicht nachvollziehen, habe allerdings den Dialog nicht mit .endexecute beendet, sondern mit einer Schaltfläche, Aktion OK.
Probiere mal die angehängte Beispieldatei, läuft unter Windows 7 mit AOO 4.1.3 problemlos.
Gruß R
ich kann das so nicht nachvollziehen, habe allerdings den Dialog nicht mit .endexecute beendet, sondern mit einer Schaltfläche, Aktion OK.
Probiere mal die angehängte Beispieldatei, läuft unter Windows 7 mit AOO 4.1.3 problemlos.
Gruß R
- Dateianhänge
-
- Dialog.ods
- (11.68 KiB) 193-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Dialoge - Verhalten nach dem Beenden
Wie schon "F3K Total" schreibt, ist dieses Problem nicht ohne Weiteres nachvollziehbar. Wenn es bei Dir reproduzierbar auftritt kannst Du uns nur Dein konkretes Makro und die zu bearbeitende Datei, sowie Dein genaues Vorgehen, sowie genaue Programmversion posten in der Hoffnung das man es nachstellen kann, nur dann kann man versuchen der Ursache auf die Spur zu kommen.Steffen_dcw hat geschrieben: ↑Di, 25.04.2017 17:59 Hallo Stephan,
genau das funktioniert eben nicht, was aber nicht auf den ersten Blick auffällt, da sich der Zellzeiger ja korrekt bewegt. Klicke ich dann aber unmittbar auf die Scrollbalken der Anwendung, dann wird nicht gescrollt, sondern der Zellzeiger springt unkontrolliert nach rechts bzw. unten. Ich kann auch nicht im Makrofenster schreiben. Wenn ich dann händisch eine Zelle anklicke, klappt alles wieder.
Das Ganze kann natürlich auch ein Bug von Openoffice für Windows sein, was ich aber nicht verifizieren kann.
z.B. kann das Makro:
http://www.dannenhoefer.de/faqstarbasic ... Zelle.html
deshalb versagen, weil im Verlauf der Schritte die Dein Makro vorher mit der Datei ausführt das ThisComponent-Objekt wechselt und das Makro dadurch das falsche Objekt anspricht. Du kannst das orientierend testen indem Du z.B. nach:
Code: Alles auswählen
myDoc = thisComponent
Code: Alles auswählen
Msgbox myDoc.title
Also am Anfang z.B.:
Code: Alles auswählen
Global tc As Object
Sub Main()
tc = ThisComponent
'... Dein Code
'Fokus auf Zelle:
myView = tc.CurrentController
mysheet = tc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)
myView.Select(mycell)
End Sub
Das überhaupt diese Art des Fehlers vorliegt ist aber rein geraten und muss nicht so sein, ohne genaue Untersuchung kann man den Fehler
nicht zuverlässig finden.
Gruß
Stephan
-
- Beiträge: 5
- Registriert: Di, 25.04.2017 13:51
Re: Dialoge - Verhalten nach dem Beenden
Danke erstmal bis hierhin. Ich konnte das Problem weiter eingrenzen. Das Beispiel "Dialog.ods" funktioniert auch bei mir problemlos. Der Fehler hängt mit der Art des Dialogaufrufes zusammen. Erfolgt dieser mittels Button klappt alles. Erfolgt der Aufruf jedoch mittels Tabellenereignis "Doppelklick" reproduziert sich auch hier der Fehler. Ich möchte jedoch nicht 50 Zeilen mit Buttons ausrüsten.... Geändertes Beispiel siehe unten.
Gruß Steffen
Gruß Steffen
- Dateianhänge
-
- Dialog.ods
- (12.43 KiB) 270-mal heruntergeladen
Re: Dialoge - Verhalten nach dem Beenden
Ich kann keine Probleme feststellen (getestet mit OOo 3.3.0 und AOO 4.1.2) egal ob ich in DEiner Datei das Makro mit Schaltfläche oder Doppelklick in A3 starte, immer kann ich, nachdem sich der Dialog geschlossen hat, sofort weitertippen und meine Tastatureingaben landen in Zelle D4.
Vielleicht ist Dein OO-Benutzerverzeichnis nicht ganz in Ordnung. Benenne es testweise um und prüfe ob das etwas ändert:
viewtopic.php?f=27&t=54231#p206070
Gruß
Stephan
Vielleicht ist Dein OO-Benutzerverzeichnis nicht ganz in Ordnung. Benenne es testweise um und prüfe ob das etwas ändert:
viewtopic.php?f=27&t=54231#p206070
Gruß
Stephan
-
- Beiträge: 5
- Registriert: Di, 25.04.2017 13:51
Re: Dialoge - Verhalten nach dem Beenden
Hallo Stephan,
das ist nicht der Fehler. Tastatureingaben lassen sich auch bei mir korrekt durchführen.
Nochmal die Ausgangslage: wenn ich mit der Maus über die Menübuttons der Anwendung fahre, so wechseln sie je nach Fokus die Hintergrundfarbe und lassen sich auch korrekt bedienen.
Jetzt starte ich den Dialog mit Doppelklick, gebe etwas ein und drücke 'OK'. Wenn ich jetzt wieder mit der Maus über die Menübuttons fahre passiert nichts mehr (Fehler). Der Zellzeiger steht dort, wo er hingehört und sieht auch ganz normal aus. Drücke ich eine Buchstabentaste, so erfolgt die Eingabe korrekt in die Zelle. Auch jetzt noch erfolgt kein Farbwechsel beim Bewegen der Maus (Fehler). Auch der Button 'Grüner Haken' wechselt seine Hintergrundfarbe nicht. Klicke ich auf den Haken, erfolgt die korrekte Übernahme aber gleichzeitig wechselt der Zellzeiger in die oberste Zeile in die Nähe des Hakens (Fehler) Mit Entertaste wirds korrekt übernommen. Das größte Problem ist für halt, wenn ich im Fehlerzustand auf den Scrollbaken klicke, springt der Zellzeiger nach rechts in die Nähe des Scrollbalkens.
Das Ganze sieht für mich so aus,als ob der Doppelkick vom Anfang nicht komplett verarbeitet wird, sondern der 2. Klick quasi verschluckt wird. Die erste Handlung nach dem Dialog wird dann als Teil des Doppelkickes verarbeitet
Die Umbenennung des Userverzeichnisses habe ich durchgeführt - ohne Erfolg
Gruß Steffen
das ist nicht der Fehler. Tastatureingaben lassen sich auch bei mir korrekt durchführen.
Nochmal die Ausgangslage: wenn ich mit der Maus über die Menübuttons der Anwendung fahre, so wechseln sie je nach Fokus die Hintergrundfarbe und lassen sich auch korrekt bedienen.
Jetzt starte ich den Dialog mit Doppelklick, gebe etwas ein und drücke 'OK'. Wenn ich jetzt wieder mit der Maus über die Menübuttons fahre passiert nichts mehr (Fehler). Der Zellzeiger steht dort, wo er hingehört und sieht auch ganz normal aus. Drücke ich eine Buchstabentaste, so erfolgt die Eingabe korrekt in die Zelle. Auch jetzt noch erfolgt kein Farbwechsel beim Bewegen der Maus (Fehler). Auch der Button 'Grüner Haken' wechselt seine Hintergrundfarbe nicht. Klicke ich auf den Haken, erfolgt die korrekte Übernahme aber gleichzeitig wechselt der Zellzeiger in die oberste Zeile in die Nähe des Hakens (Fehler) Mit Entertaste wirds korrekt übernommen. Das größte Problem ist für halt, wenn ich im Fehlerzustand auf den Scrollbaken klicke, springt der Zellzeiger nach rechts in die Nähe des Scrollbalkens.
Das Ganze sieht für mich so aus,als ob der Doppelkick vom Anfang nicht komplett verarbeitet wird, sondern der 2. Klick quasi verschluckt wird. Die erste Handlung nach dem Dialog wird dann als Teil des Doppelkickes verarbeitet
Die Umbenennung des Userverzeichnisses habe ich durchgeführt - ohne Erfolg
Gruß Steffen
Re: Dialoge - Verhalten nach dem Beenden
Ja. Ök. kann ich jetzt nachvollziehen, aber ich habe dafür keine Lösung.Jetzt starte ich den Dialog mit Doppelklick, gebe etwas ein und drücke 'OK'. Wenn ich jetzt wieder mit der Maus über die Menübuttons fahre passiert nichts mehr (Fehler). Der Zellzeiger steht dort, wo er hingehört und sieht auch ganz normal aus. Drücke ich eine Buchstabentaste, so erfolgt die Eingabe korrekt in die Zelle. Auch jetzt noch erfolgt kein Farbwechsel beim Bewegen der Maus (Fehler).
Zumal es mich nicht stört sondern in täglichen diversen kleinen Problemen bei der Arbeit mit dem Computer untergeht.
Gruß
Stephan
Re: Dialoge - Verhalten nach dem Beenden
Hallo,
das Problem haben wir (in diesem oder einem Nachbarforum) schon mal durchdiskutiert und gelöst:
Der Kniff ist, der Sub, die per Doppelklick aufgerufen wird, einen logischen Wert zu verpassen (im Sinne von "ist erledigt")
Um nach dem Sprung zur Zielzelle (wenn noch benötigt) die (blaue) Auswahlmarkierung zu entfernen, müssten zwei Zeilen ergänzt werden:
das Problem haben wir (in diesem oder einem Nachbarforum) schon mal durchdiskutiert und gelöst:
Der Kniff ist, der Sub, die per Doppelklick aufgerufen wird, einen logischen Wert zu verpassen (im Sinne von "ist erledigt")
Code: Alles auswählen
Sub Blatt_byClick() as boolean
oDoc = ThisComponent
oSheet = odoc.currentcontroller.activesheet
AktiveZeile = oDoc.getCurrentSelection().getCellAddress().row
AktiveSpalte = oDoc.getCurrentSelection().getCellAddress().column
if AktiveZeile >= 0 and AktiveZeile <= 4 and AktiveSpalte = 0 then
S_Dialog_starten
endif
Blatt_byClick=true
end sub
Code: Alles auswählen
Sub S_Dialog_starten
oSheet = ThisComponent.sheets.getbyName("Tabelle1")
DialogLibraries.loadLibrary("Standard")
odlg = CreateUnoDialog(DialogLibraries.Standard.dlg)
oTextField1 = odlg.getcontrol("TextField1")
odlg.execute
'-------
oCell = oSheet.getCellByPosition(3,3)
oCell.string = oTextField1.Text
oController = thisComponent.CurrentController
oController.Select(oCell)
oDummy=Thiscomponent.createInstance("com.sun.star.sheet.SheetCellRanges")
oController.Select(oDummy)
End Sub
Zuletzt geändert von mikeleb am Do, 27.04.2017 17:45, insgesamt 1-mal geändert.
Gruß,
mikeleb
mikeleb
Re: Dialoge - Verhalten nach dem Beenden
wie man diese falsche Markierung per Makro wegbekommt hätte ich gewusst, ich hatte heute Vormittag aber schon doe Markierung per Pfeil-Runter-Taste normalisiert und glaubte jetzt beim L:esen Deines Beitrages das wäre meine Oberflächlichkeit gewesen und es würde per Code das Problem beheben ... sorry, nur das ist nicht der Fall, also trotzdem Dein Code die Markierung auf 'Normal' (nur Rahmen ohne Hinterlegung) setzt ist das vom Nutzer angesprochene Problem, zumindest bei mir, nicht behoben (so gerade getestet in AOO 4.1.3.)Um nach dem Sprung zur Zielzelle (wenn noch benötigt) die (blaue) Auswahlmarkierung zu entfernen, müssten zwei Zeilen ergänzt werden:
Gruß
Stephan
Re: Dialoge - Verhalten nach dem Beenden
Hallo,
das mit der Markierung (in Sub S_Dialog_starten) war nur ein Zugabe.
Das Entscheidende ist
Hier scheint sich also mal wieder ein Unterschied zwischen AOO und LO aufzutun.
edit: unter AOO4.1.1 ist das Problem (bei mir) allerdings auch behoben
das mit der Markierung (in Sub S_Dialog_starten) war nur ein Zugabe.
Das Entscheidende ist
Code: Alles auswählen
Blatt_byClick=true
edit: unter AOO4.1.1 ist das Problem (bei mir) allerdings auch behoben
Gruß,
mikeleb
mikeleb
Re: Dialoge - Verhalten nach dem Beenden
Danke für die nochmalige Erklärung, ich hatte das erste Makro von Dir ignoriert, wenn ich jetzt das Gesagte beachte funktioniert es bei mir (Getestet AOO 4.1.2)mikeleb hat geschrieben: ↑Do, 27.04.2017 17:51 Hallo,
das mit der Markierung (in Sub S_Dialog_starten) war nur ein Zugabe.
Das Entscheidende istHier scheint sich also mal wieder ein Unterschied zwischen AOO und LO aufzutun.Code: Alles auswählen
Blatt_byClick=true
edit: unter AOO4.1.1 ist das Problem (bei mir) allerdings auch behoben
Gruß
Stephan
-
- Beiträge: 5
- Registriert: Di, 25.04.2017 13:51
Re: Dialoge - Verhalten nach dem Beenden
Heureka, das isses!!! Wunderhübsch! Ich danke Dir für diesen entscheidenden Tip!mikeleb hat geschrieben: ↑Do, 27.04.2017 17:51 Hallo,
das mit der Markierung (in Sub S_Dialog_starten) war nur ein Zugabe.
Das Entscheidende istHier scheint sich also mal wieder ein Unterschied zwischen AOO und LO aufzutun.Code: Alles auswählen
Blatt_byClick=true
edit: unter AOO4.1.1 ist das Problem (bei mir) allerdings auch behoben
Gruß Steffen