Dialoge - Verhalten nach dem Beenden

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Dialoge - Verhalten nach dem Beenden

Re: Dialoge - Verhalten nach dem Beenden

von Steffen_dcw » Fr, 28.04.2017 02:24

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 ist

Code: Alles auswählen

Blatt_byClick=true
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
Heureka, das isses!!! Wunderhübsch! Ich danke Dir für diesen entscheidenden Tip!

Gruß Steffen

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Do, 27.04.2017 22:45

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 ist

Code: Alles auswählen

Blatt_byClick=true
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
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)


Gruß
Stephan

Re: Dialoge - Verhalten nach dem Beenden

von mikeleb » Do, 27.04.2017 17:51

Hallo,
das mit der Markierung (in Sub S_Dialog_starten) war nur ein Zugabe.
Das Entscheidende ist

Code: Alles auswählen

Blatt_byClick=true
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

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Do, 27.04.2017 16:44

Um nach dem Sprung zur Zielzelle (wenn noch benötigt) die (blaue) Auswahlmarkierung zu entfernen, müssten zwei Zeilen ergänzt werden:
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.)


Gruß
Stephan

Re: Dialoge - Verhalten nach dem Beenden

von mikeleb » Do, 27.04.2017 14:36

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")

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
Um nach dem Sprung zur Zielzelle (wenn noch benötigt) die (blaue) Auswahlmarkierung zu entfernen, müssten zwei Zeilen ergänzt werden:

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

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Do, 27.04.2017 10:45

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).
Ja. Ök. kann ich jetzt nachvollziehen, aber ich habe dafür keine Lösung.
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

von Steffen_dcw » Do, 27.04.2017 10:14

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

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Do, 27.04.2017 07:30

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

Re: Dialoge - Verhalten nach dem Beenden

von Steffen_dcw » Mi, 26.04.2017 21:31

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
Dateianhänge
Dialog.ods
(12.43 KiB) 271-mal heruntergeladen

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Mi, 26.04.2017 06:11

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.
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.

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
die Zeile:

Code: Alles auswählen

Msgbox myDoc.title
dabei muss dann der zum Dokument passende Titel angezeigt werden, wird der Titel eines anderen Fensters angezeigt belegt das das Du das falsche Objekt hast. Abhilfe lässt sich schaffen indem Du ganz am Anfang Deines Makros das Dokumentobjekt in einer global deklarierten Variable speicherst und am Ende Deines Makros den Zugriff auf die Zelle über diese Variable machst.
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

Re: Dialoge - Verhalten nach dem Beenden

von F3K Total » Di, 25.04.2017 18:27

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
Dateianhänge
Dialog.ods
(11.68 KiB) 194-mal heruntergeladen

Re: Dialoge - Verhalten nach dem Beenden

von Steffen_dcw » 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.

Re: Dialoge - Verhalten nach dem Beenden

von Stephan » Di, 25.04.2017 15:05

Wie bekomme ich den Focus nach "Dialog.endexecute()" wieder auf das Tabellenblatt?
Indem Du per Makro, nach Ausführen von "Dialog.endexecute()", eine Zelle markierst?

http://www.dannenhoefer.de/faqstarbasic ... Zelle.html


Gruß
Stephan

Dialoge - Verhalten nach dem Beenden

von Steffen_dcw » Di, 25.04.2017 14:09

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?

Nach oben