Wenn Ihnen das OpenOffice Forum gefällt, dann spenden Sie bitte und helfen uns das Forum zu erhalten!
💚 Das OpenOffice Forum bittet um Ihre Hilfe! 💚
DANKE >><< DANKE

Ihre Spende wird für die Deckung der laufenden Kosten der kommenden 12 Monate sowie den Ausbau 🌱 des OpenOffice Forums verwendet.
💚 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 💚
🤗 VIELEN DANK AN ALLE SPENDER - NUR DANK EUCH KÖNNEN WIR DAS FORUM ERHALTEN UND WEITERENTWICKELN 🤗

Autotext-Fenster soll nach Einfügen nicht zugehen

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
christophkirk
Beiträge: 14
Registriert: Do 16. Dez 2021, 12:53

Autotext-Fenster soll nach Einfügen nicht zugehen

Beitrag von christophkirk » Fr 27. Jan 2023, 13:46

Hallo Zusammen,

ich nutze LibreOffice, hoffe ich darf hier aber trotzdem meine Frage stellen?!?

Mittels STRG-F3 öffne ich das AUTOTEXT Fenster, in dem ich viele Textbausteine verwalte. Mittels dem Knopf Einfügen füge ich dann einen ausgewählten Text-Baustein ein. Leider schließt sich das Autotext-Fenster dadurch aber sofort wieder, so dass ich wieder STRG-F3 drücken muss, den nächsten Baustein wählen usw.

Wer kann mir helfen, dass sich das Autotext-Fenster nicht sofort schließt.

Ich hatte schon die IDee, ein kleines Marko zu schreiben, welches STRG-F3 simuliert, und dies meinen Textbausteinen zuzuweisen. Da gibt es ja eine entsprechende Funktion. Bin aber zu doof mittels MACRO das Autotext Fenster zu öffnen :-(

DANKE für Eure Hilfe oder Hinweise, falls ich hier falsch bin

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Autotext-Fenster soll nach Einfügen nicht zugehen

Beitrag von craig » Sa 28. Jan 2023, 21:01

Hallo,
hat geschrieben:Wer kann mir helfen, dass sich das Autotext-Fenster nicht sofort schließt.
Weil mir nicht bekannt ist, ob Dir die Unterschiede eines Dialogfensters bekannt sind , hier eine kleine Info:
  1. Modale Dialoge sperren den Rest der Anwendung (oder sogar der Benutzeroberfläche), solange der Dialog angezeigt wird.
  2. Nicht modale Dialoge erlauben auch Eingaben in der Applikation außerhalb des Dialogs.
Demnach gehört das Autotext-Fenster/ der Autotext-Dialog zum Punkt a)
Dieser ist von den Machern (AOO und LibreOffice) modal programmiert worden. Damit ist zwar das Arbeiten mit dem Dialog möglich, aber er kann nicht über dem Dokument „schweben“.
Dieses wäre nur mit einem nicht modalen Dialog möglich.
Es ist auch in den Einstellungen nirgends möglich das Verhalten zu ändern.

Aus diesem Grunde gibt es nur zwei Möglichkeiten:
  1. Man belässt alles so wie es ist, zumal man den Autotext-Dialog mittels [STRG][F3] direkt aufrufen kann.
    Oder man nutzt das Symbol „Autotext“ aus der Symbolleiste „Einfügen“
  2. Hierbei wäre eine sehr aufwendige Programmierung von Nöten.
    Man zeichnet sich in der Basic-IDE einen benutzerdefinierten, nicht modalen Dialog. In einer Listbox auf dem Dialog ließen sich dann während des Arbeitens die verschiedenen Autotext-Einträge auswählen und einfügen, wobei der Dialog immer über dem Dokument „schwebt“ bis das Makro beendet wird, bzw. der Dialog geschlossen wird.
  3. Abhängig von der Anzahl Deiner Autotext-Einträge, könnte man die Variante 2) umgehen.
    hat geschrieben:Ich hatte schon die IDee, ein kleines Marko zu schreiben, welches STRG-F3 simuliert, und dies meinen Textbausteinen zuzuweisen.
    Hierfür musst dass Autotext-Fenster nicht öffnen, Du musst nur wissen in welcher Gruppe die Texte gespeichert sind und wie das Kürzel zum jeweiligen Text lautet.
    Siehe Beispiel-Code:

    Code: Alles auswählen

    Sub AT_Dispatch
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    dim args9(1) as new com.sun.star.beans.PropertyValue
    args9(0).Name = "Group"
    args9(0).Value = "standard*0"		' Gruppe "Standard"
    args9(1).Name = "ShortName"			
    args9(1).Value = "BS"				' Das Kürzel → "Bestellung"
    
    		' Einfügen des Autotextes an Cursorposition
    		dispatcher.executeDispatch(document, ".uno:InsertGlossary", "", 0, args9())
    End Sub
    Wenn Du nun mehrere Dispatch-Commands dieser Art schreibst und passt die Value-Argumente entsprechend an, dann könntest Du Dir z.B. eine Symbolleiste anlegen, welche all Deine Autotexte an der Cursorposition per Klick einfügt.
Ist zwar nicht schön, aber zweckmäßig, wenn es nicht zu viele Einträge gibt.
Sonst wäre Variante 1) die richtige Wahl.
Dazu folgender, anfänglicher Code:

Code: Alles auswählen

Sub myAutoText
REM Array's deklarieren
Dim mShort		' Array für die Kürzel
Dim mTitle		' Array für die Titel

REM INFO:
REM https://help.libreoffice.org/7.2/de/text/sbasic/shared/01020100.html?DbPAR=BASIC#bm_id3149346
Dim sName$, sGroup$, sText$		'Stringvariablen

'  sName = "Bestellung"
 	' Gruppenname
	sGroup = "standard*0"
		' Zugriff auf den AutoTextContainer bereitstellen
		oSVAutoTextContainer = CreateUnoService("com.sun.star.text.AutoTextContainer")
			' Objektvariable für die angegebene Gruppe
			oObj1 = oSVAutoTextContainer.getByName( sGroup )

'  xray oObj1
	' alle Titel der Gruppe "standard*0" in Array schreiben
	mTitle=oObj1.Titles
	' alle Kürzel der Gruppe in Array schreiben
	mShort=oObj1.ElementNames

		' Anzahl der Arrayfelder ermitteln
		x=uBound(mTitle)
	' Schleife über alle Arrayfelder, um die einzelnen
	' Kürzel und Title in die Stringvariable zu schreiben
 	for i = 0 to uBound(mTitle)
		' chr(9)	=	Tabulator (TAB)
		' chr(10)	=	Line Feed (LF)/ Zeilenumbruch
		' chr(13)	=	Carriage Return (CR)/ Wagenrücklauf
		sText=sText & mShort(i) & " → " & chr(9) & chr(9) & mTitle(i) & chr(10)
	next i
		' Ausgabe aller Kürzel und Titel
	 	msgbox sText
End Sub
Der Code sammelt alle Einträge und Kürzel aus der Gruppe „Standard“ und listet diese am Ende des Makro in einer Messagebox auf.
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

christophkirk
Beiträge: 14
Registriert: Do 16. Dez 2021, 12:53

Re: Autotext-Fenster soll nach Einfügen nicht zugehen

Beitrag von christophkirk » Sa 4. Feb 2023, 15:31

Lieber Craig,

1000 DANK für Deine so ausführliche und tolle Antwort. Bin schwer begeistert.

Ich habe deine Antwort gut verstehen können und die unterschiedlichen Möglichkeiten. Da es schätzungsweise über 20 Textbausteine sind, muss ich überlegen, wie man das am geschicktesten macht, bzw. welcher Ansatz von Dir für mich am besten erscheint.

Ich werde berichten.

Und sorry, dass ich erst jetzt antworte. Lag ein paar Tage flach und komme leider erst jetzt wieder dazu, dass Thema zu durchdenken.

VLG Chris

christophkirk
Beiträge: 14
Registriert: Do 16. Dez 2021, 12:53

Re: Autotext-Fenster soll nach Einfügen nicht zugehen

Beitrag von christophkirk » Sa 4. Feb 2023, 15:51

Ich bin nun kurz in mich gegangen :-).

Da es doch einige Einträge sind und ich die Textbausteine doch am liebsten "komplett" überblicken mag, werde ich einen ganz anderen Weg gehen.

Ich werde ein(!) "Vorlagen" -Dokument erstellen und von dem mit der Zwischenablage die Textteile "rüberschiessen" :-).
Entweder ich mache das gleich in CALC von Openoffice, oder in einer anderen ODT-Datei. Mal sehen.

Ich sehe hierbei die Vorteile, dass ich die Vorlage besser pflegen kann und an 2 Bildschirmen auch eine gute Übersicht über die vielen Bausteine habe...

DANKE nochmals CRAIG!!! VLG

Antworten