💚 BITTE helfen Sie uns NOCH HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst ✔] Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [5 Fragen + 1 "Nachschlag"]

Alles zur Programmierung im LibreOffice.
nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE (Schrift, Tab-Größe) und Ergänzungen zur Behandlung von Doppelklick … [Frage 1 gelöst]

Beitrag von nitja » Mo 1. Apr 2024, 19:50

oops! Das kam jetzt plötzlich! Danke erst mal Euch beiden!
Werde gerade mit Serien von Telefonaten, Chats und auch einigen Besuchen aus meiner Familie "abgelenkt". Daher die verzögerten Reaktionen.

Zunächst zu dem, was ich schneller oder eh schon früher ausprobiert habe:
karolus hat geschrieben:
Mo 1. Apr 2024, 16:06
mikele hat geschrieben:
Mo 1. Apr 2024, 14:51
Am wichtigsten erscheint mir (egal welche Schriftart), dass konsequent mit Tabulatoren (und nicht mit Leerzeichen) eingerückt wird.
Nein, das gerade nicht…
Ein <tab> hat keine definierte Breite.
Es obliegt daher komplett der jeweiligen Software wie breit ein <tab> dargestellt wird. …
Muss "zugeben", da bin ich eher auf "mikele"s "Seite": 5 tabs kann ich in einem Editor, der sie zeigt, sofort erfassen, 20 spaces nicht (ganz davon abgesehen davon, dass es die auch noch in mindestens 9 verschiedenen Breiten von 'hair' bis 'mutton' gibt, was hier vermutlich kaum eine Rolle spielt).
karolus hat geschrieben:
Mo 1. Apr 2024, 16:06
… Die gängige Praxis bei vernünftig eingestellten Texteditoren ( inklusive IDEs )ist es, die <tab>-eingabe direkt durch <4Leerzeichen> zu ersetzen, die dumme Basic-IDE kann das leider nicht.
Dann kenne/nutze ich wohl keine "vernünftigen" Editoren oder IDEn. Habe in letzter Zeit lediglich Writer, Geany, Gedit usw. genutzt, die alle tabs mit 4 spaces Länge ohne Ersetzung verwenden. Und kann mich an keinen Editor aus der Vergangenheit erinnern, bei dem das anders war.
karolus hat geschrieben:
Mo 1. Apr 2024, 16:06
… @nitja: … mit der <tab>taste einrücken, … umwandeln in Leerzeichen …
Hab das (wofür die … am Ende des Zitats stehen) schon gemacht/ausprobiert. Fand es für regelmäßigen Gebrauch viel zu umständlich und das Ergebnis nicht mehr pflegbar.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE (Schrift, Tab-Größe) und Ergänzungen zur Behandlung von Doppelklick … [Frage 1 gelöst]

Beitrag von nitja » Mo 1. Apr 2024, 20:01

mikele hat geschrieben:
Mo 1. Apr 2024, 14:42
Hallo,
man kann den Basicquelltext per Makro verändern (sprich Module schreiben/ändern).

Code: Alles auswählen

Sub makro_zeitstempel
	Dim oLib as object
	Dim sMod as String, sNeu as String
	Dim aMod()
	
	'Zugriff auf die Bibliothek "Beispiel" im aktuellen Dokument
	oLib=BasicLibraries.getByName("Beispiel")
	'Auslesen des Basic-Code im Modul "Data" als String
	sMod=oLib.getByName("Data")
	'Zerlegen in einzelne Absätze/Codezeilen
	aMod=split(sMod,chr(10))
	'Ändern der Codezeile 1
	aMod(0)="REM Stand vom " & now()
	'Zusammenfügen der Codezeilen zu einem String
	sNeu=join(aMod,chr(10))
	'Ersetzen des Moduls
	oLib.replaceByName("Data", sNeu)
	'Speichern der Bibliotheken
	BasicLibraries.storeLibraries
	
	'
	'Beachte: der geänderte Code wird erst bei Neustart der IDE sichtbar
	'
End Sub
Dieses Makro muss sich in einem anderen Modul befinden.
Schaut super aus: "straightforward" und in allen Punkten schon auf den ersten Blick plausibel.
Sollte in dem bisher eher lästigen aber ungemein "klebrigen" "Standard"-Modul gut aufgehoben sein.
Werde - vermutlich erst morgen - berichten.

re. Neustart der IDE: mir scheint die IDE dabei die mühsam gefundene Möglichkeit zu vergessen, sie zur mono-Schriftart zu überreden. Vielleicht muss ich mir dafür auch noch ein Makro bauen (onLoad für das "Dokument" z.B.).
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE (Schrift, Tab-Größe) und Ergänzungen zur Behandlung von Doppelklick … [Frage 1 gelöst]

Beitrag von nitja » Mo 1. Apr 2024, 20:08

mikele hat geschrieben:
Mo 1. Apr 2024, 14:51
… In der Anzeige hier im Forum erscheint ein Tab zwar wie 8 Leerzeichen, beim Kopieren eines solchen Quelltextes in die IDE ist es aber wieder nur ein Tab, da kommt bei mir keine optische Verwirrung auf. …
Die "Verwirrung" gibt es für mich nur in der anderen Richtung (IDE→<code-tag> im Forum), wo ich meinte, dass die Optik im Letzteren erträglich sein müsse (also beim Lesen). Vermutlich macht das dann in der von Dir genannten Richtung (beim Kopieren in die IDE) Chaos. Hatte ich noch nicht probiert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

Benutzeravatar
karolus
Beiträge: 2191
Registriert: Fr 10. Dez 2010, 10:01

Re: Fragen zur IDE (Schrift, Tab-Größe) und Ergänzungen zur Behandlung von Doppelklick … [Frage 1 gelöst]

Beitrag von karolus » Mo 1. Apr 2024, 22:25

Hallo
Habe in letzter Zeit lediglich Writer, Geany, Gedit usw. genutzt, die alle tabs mit 4 spaces Länge ohne Ersetzung verwenden
Writer ist kein Editor!
Geany kannst du entsprechend einstellen, wenn du es bei tabs belässt, hast du eben bei copy&paste hier im Forum das gleiche Problem wie aus der Basic-IDE.
Gedit hat die gleichen Optionen wie geany (aber ein anderes Einstellungsmenü )
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE (Schrift, Tab-Größe) und Ergänzungen zur Behandlung von Doppelklick … [Frage 1 gelöst]

Beitrag von nitja » Mi 3. Apr 2024, 07:35

Neben den familiären "Ablenkungen" über Ostern haben sich mit dem Monatswechsel auch neue Baustellen im Programm aufgetan, erwartete (Grafik, Fragen kommen vielleicht später) und unerwartete (s. Frage ⑤).
Daher die Verzögerung dieser Reaktion.

Zum Status:
① Font in der IDE | (bug im UI) gelöst,
entgegen meinem Eindruck vorgestern um 20:01, jetzt wohl doch dauerhaft/stabil repariert
② Tablänge einstellen | Als unmöglich abgehakt und nach Lösung von ① auch nebensächlich
③ "Whitespace"-Zeichen sichtbar/unterscheidbar machen | nicht möglich → Drumrumarbeit: Export, z.B. nach Geany
Perspektive: nach Lösung von ④ auch per Makro
④ Zugriff auf Inhalt der IDE per Makro | Zuversichtlich nach "mikele"s Anleitung vorgestern um 14:42
… würde auch die Umsetzung von "karolus"’ Vorschlag erlauben
(Ersetzung von tabs durch je 4 spaces ausschließlich zum Export für dieses Forum)

⑤ Systemereignis vs. Tabellenereignis | Neu und momentan am dringendsten
"Dokument" wird an mehreren (allen?) Stellen in der Anwendung (Menüs, Anleitungen, Dokumentation, …) inkonsistent, mindestens unausgesprochen kontextabhängig, unterschiedlich verwendet.
Ich hatte das ursprünglich auf die Datei bezogen, die mit der LO-Anwendung erstellt/editiert und als ThisComponent angesprochen wird.
Wenigstens in CALCs Menü Tabelle»Ereignisse bezieht sich "Dokument" aber auf die jeweilige Tabelle, Einstellungen bleiben unwirksam solange die nicht aktiv ist.

Dazu hier die Beschreibung wie die .ods-Datei aufgebaut, was für den Monatswechsel vorgesehen ist:
Die Tabelle 0 (erstes Tab/Register in der Fußzeile direkt unter der Tabelle in CALC) enthält die Grafik, "Diagramme" für die Auswertung der Messungen in Tabellen ("sheets") 1 bis n für die Messprotokolle je eines Monats, je eins pro Monat und Seite ("page") in der Tabelle 0. Die Tabelle n+1 ist die Vorlage, die beim Monatswechsel als neue Tabelle 1 kopiert wird (wodurch sich der Index der alten Tabellen 1-n um 1 erhöht).
Meine Erwartung, dass dabei auch die Einstellungen für Tabellenereignisse in der Vorlage in die neue Tabelle 1 kopiert werden, wurde enttäuscht.

Frage ⑤: Wie kann ich per Makro Tabellenereignisse für die neue Tabelle setzen?
Bei Andrew Pitonyak (inkl. der Ergänzungen von Übersetzern, deren neueste Ausgabe ich mehr dafür als für die Sprache bevorzuge) finde ich nur Informationen zum Zugriff auf Systemereignisse, wie sie im Menü Extras»Makros»Makros verwalten»Basic»Zuweisen[Ereignisse] angeboten werden. Tabellenereignisse wie Doppelklick sind da nicht erreichbar.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [3 von mittlerweile 5 Fragen gelöst oder erledigt]

Beitrag von nitja » Mi 3. Apr 2024, 17:07

D<zensiert>! Ich glaube ich habe gerade - nach Tagen - den (gar nicht so versteckten) Ansatz zu Frage ⑤ gefunden!
Details folgen (in ein paar Stunden?).
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [3 von mittlerweile 5 Fragen gelöst oder erledigt]

Beitrag von nitja » Do 4. Apr 2024, 16:26

re. Frage ⑤: Wieder mal zu früh gefreut.
Nachdem ich entdeckt hatte, dass Tabellenereignisse bei der sheet-Variablen (Überraschung! ;)) so gelistet sind, wie die Dokumentereignisse bei ThisComponent, hatte ich gehofft, dass ich Beispiele aus der "Bibel" (Pitonyak et al.) zu Dokumentereignissen¹⁾ 1:1 auf Tabellenereignisse übertragen könnte. Vergeblich. 20 Stdn. Kampf damit hat mich keinen Schritt weiter gebracht.
¹) … wenn ich die denn überhaupt zum Laufen brächte…

In der angehängten Beispiel.ods²⁾ ist im Modul "Graph" der Versuch zu finden, analog zu Listing 293 unter 14.5.1 für das Tabellenereignis onFocus ("Dokument aktivieren") ein eigenes Makro zuzuweisen.
²) Diesmal der Versuch ohne Einbettung komplexerer Schriftarten - keine Ahnung, wie das jetzt bei Euch ausschaut.

Ich bin ratlos. Aber vielleicht gibt's hier ja wen, der Rat weiß und teilen mag?
Dateianhänge
Beispiel für LO-Forum'.ods
(856.02 KiB) 11-mal heruntergeladen
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
Beiträge: 1659
Registriert: Mo 1. Aug 2011, 20:51

Re: Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [3 von mittlerweile 5 Fragen gelöst oder erledigt]

Beitrag von mikele » Do 4. Apr 2024, 18:19

Hallo,
ich hätte jetzt auch gedacht, dass es so funktioniert ...
Folgendes klappt:

Code: Alles auswählen

	arg(0).Name = "EventType"
	arg(0).Value = "Script"
	arg(1).Name = "Script"
	arg(1).Value = "vnd.sun.star.script:Beispiel.Graph.onActivate?language=Basic&location=document"
Gruß,
mikele

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [4 von mittlerweile 5 Fragen gelöst oder erledigt]

Beitrag von nitja » Do 4. Apr 2024, 19:31

:o Ja der Wahnsinn!!! 🎯
Wie bist denn da drauf gekommen?!
Wie könnte ich so etwas selbst finden?
Und, gibt's auch eine Möglichkeit die Einstellung auszulesen?
(werde jedenfalls mal alles lesen, was ich zu ""vnd.sun.star.script"" finde)
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 162
Registriert: Di 20. Okt 2020, 15:55

Re: Fragen zur IDE und Ergänzungen zur Behandlung von Doppelklick … [4 von mittlerweile 5 Fragen gelöst oder erledigt]

Beitrag von nitja » Fr 5. Apr 2024, 00:46

nitja hat geschrieben:
Do 4. Apr 2024, 19:31
… gibt's auch eine Möglichkeit die Einstellung auszulesen?
Obwohl mich das aus reiner Neugier natürlich interessiert, ist es für das Projekt weniger wichtig. Letztlich brauche ich das Setzen nur im Modul Data, wenn beim Monatswechsel eine neue Daten-Tabelle angelegt wird. Weiß also, dass dafür noch nichts gesetzt sein kann.
Das eine, erste Mal für die Grafik-Tabelle habe ich das Setzen der Tabellenereignisse ohnehin beim ersten Anlegen manuell per UI gemacht und brauche das dort nicht mehr.
Für das neue Datenblatt/Monatsprotokoll sieht das jetzt so aus:

Code: Alles auswählen

sub NewMonth
	dim args(1) As New com.sun.star.beans.PropertyValue
	args(0).Name = "EventType" : args(0).Value = "Script" : args(1).Name = "Script"
	if not isInitd then doInit
	oDtSht=oDoc.Sheets.getByIndex(1)
	with oDtSht
		 args(1).Value = "vnd.sun.star.script:Beispiel.Data.onActivate?language=Basic&location=document"
		.Events.replaceByName("OnFocus",args())
		 args(1).Value = "vnd.sun.star.script:Beispiel.Data.onDblClk?language=Basic&location=document"
		.Events.replaceByName("OnDoubleClick",args())
		.getCellByPosition(0,0).setString(Format(Date,"yyyy"))
		.getCellByPosition(1,0).setString(Format(Date,"mmm"))
	end with 'oDtSht
	lRow=2
	oCtrlr.setActiveSheet(oDtSht)
end sub 'NewMonth
… und funktioniert prächtig.

Momentan kämpfe ich um die neue Seite in der "Grafik"-Tabelle (wie sie beim Ausdrucken oder pdf-Export erscheinen würde) für den neuen Monat. Der Kampf um copy/adjust/paste der entsprechenden benannten Bereiche ist in Bezug auf die eigentlichen Inhalte mit get/setFormulaArray schon einigermaßen gediehen.
Bei der Formatierung kam ich erst wieder gar nicht weiter, bis ich doch den Makro-Recorder darauf losgelassen habe (den ich bislang noch nie dazu überreden konnte, mehr als die ersten 4, mit Kommentaren 8 Zeilen zu speichern):

Code: Alles auswählen

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

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$3:$H$35"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$A$36:$H$68"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "T"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())


end sub
Interessant wird es beim args4 (das davor bezieht sich auf die Bereiche, die ich (mittlerweile) auch direkt programmieren kann). Muss ich mich über Flags=T schlau machen … dieser "MoveMode" ist mir deutlich schleierhafter.

Zuletzt steht dann noch an, das neue Monats-Diagramm an die neue Datentabelle anzupassen. (Aber das sollte mit dem Austausch des Tabellennamens schon fast erledigt sein.)
Zuletzt geändert von nitja am Sa 6. Apr 2024, 16:22, insgesamt 1-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten