Gelöst: Schaltfläche mit Grafik unabghängig vom OS ?
Moderator: Moderatoren
Gelöst: Schaltfläche mit Grafik unabghängig vom OS ?
Guten Morgen,
ich habe viele Schalflächen abstelle von Text mit einer Grafk versehen.
Bei der Portierung von Windows auf Linux habe ich leider erst jetzt gemerkt, dass die Grafiken den Schlatflächen nur per link zugewiesen werden. Da der Windows-Pfad für die Grafiken unter Linux nicht existiert, sind somit alle buttons "nackt".
Hat jemand eine Idee, wie ich das verhindern kann?
Gruss,
WSO
ich habe viele Schalflächen abstelle von Text mit einer Grafk versehen.
Bei der Portierung von Windows auf Linux habe ich leider erst jetzt gemerkt, dass die Grafiken den Schlatflächen nur per link zugewiesen werden. Da der Windows-Pfad für die Grafiken unter Linux nicht existiert, sind somit alle buttons "nackt".
Hat jemand eine Idee, wie ich das verhindern kann?
Gruss,
WSO
Zuletzt geändert von WSO am Do, 14.08.2014 14:33, insgesamt 3-mal geändert.
Re: Schaltfläche mit Grafik unabghängig vom Betriebssystem ?
Hallo!
mir würde nur einfallen, die Zuweisungen über ein Makro zu erledigen und hier dann den Pfad mit der (undokumentierten) Methode zusammenzustöpseln - die Methode liefert dir dann den systemspezifischen Pfadtrenner (also unter Windows "\" oder unter Linux "/")
vielleicht hilft dir hierzu folgendes noch: viewtopic.php?f=18&t=64155
LG
Rasakul
mir würde nur einfallen, die Zuweisungen über ein Makro zu erledigen und hier dann den Pfad mit der (undokumentierten) Methode
Code: Alles auswählen
GetPathSeparator()
vielleicht hilft dir hierzu folgendes noch: viewtopic.php?f=18&t=64155
LG
Rasakul
Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
Re: Schaltfläche mit Grafik unabghängig vom Betriebssystem ?
Hi Rasakul,
ja gut...
Kannst du mir bitte noch einen Hinweis geben, wie ich die Pfadangabe in die Feldeigenschaften bekomme.
Braucht wohl ein Makro, dass beim öffnen des Formulars aufgefufen wird. Habe aber keine Idee, wie ich dann die Pfadangabe manipuliere.
Gruss,
Wolfram
ja gut...
Kannst du mir bitte noch einen Hinweis geben, wie ich die Pfadangabe in die Feldeigenschaften bekomme.
Braucht wohl ein Makro, dass beim öffnen des Formulars aufgefufen wird. Habe aber keine Idee, wie ich dann die Pfadangabe manipuliere.
Gruss,
Wolfram
Re: Schaltfläche mit Grafik unabghängig vom Betriebssystem ?
Hi!
so kommst du an den Button selber ran:
wenn nun in den Eigenschaften des Buttons die Grafik gesetzt werden soll, machst du das über
LG
Raskakul
PS: Schau dir mal das Tool XRay an - damit kannst du ganz leicht herausfinden, welche Methoden/Eigenschaften ein Basic-Element zur Verfügung stellt (Verwendungsanleitung findest du dann in der Downloaddatei)
so kommst du an den Button selber ran:
Code: Alles auswählen
oDoc = ThisComponent
oForm = oDoc.Drawpage.Forms.getByName("formularname")
oButton = oForm .getByName("buttonname")
Code: Alles auswählen
oButton.ImageURL = "GrafikURL"
Raskakul
PS: Schau dir mal das Tool XRay an - damit kannst du ganz leicht herausfinden, welche Methoden/Eigenschaften ein Basic-Element zur Verfügung stellt (Verwendungsanleitung findest du dann in der Downloaddatei)
Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
Re: Schaltfläche mit Grafik unabghängig vom Betriebssystem ?
Super,
ist zwar erst mal ne Menge Aufwand, aber ja nur einmalig.
Gruss,
WSO
ist zwar erst mal ne Menge Aufwand, aber ja nur einmalig.

Gruss,
WSO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Bin leider immer noch mit diersem Thema im Gange.
Die temporäre Änderung der Feldeigenschaften im Formular funktioniert per Formularergeignis.
Zur Verbesserung der Performance möchte ich aber diese Änderungen gerne dauerhaft in meinen Formularen speichern.
Ich habe es damit versucht:
Das funktioniert aber nur, wenn ich alle Formulare zuvor im Bearbeitungsmodus öffne und dann manuell speichere.
Lieber würde ich das auch von dem Makro erledigen lassen.
Habe mit Xray aber nichts gefunden was dazu passt.
Kennt jemand eine elegantere Methode?
Gruss,
WSO
Die temporäre Änderung der Feldeigenschaften im Formular funktioniert per Formularergeignis.
Zur Verbesserung der Performance möchte ich aber diese Änderungen gerne dauerhaft in meinen Formularen speichern.
Ich habe es damit versucht:
Code: Alles auswählen
Sub upd_Formulare (oEvent AS OBJECT)
GlobalScope.BasicLibraries.LoadLibrary("Tools")
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
oDatasource = thisComponent.Parent.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
DIM oSql AS OBJECT
DIM oSql1 AS OBJECT
DIM oDoc as Object
DIM oDrawpage as Object
DIM oForm as Object
DIM oFeld as Object
DIM oFormDocs AS OBJECT
DIM stSql AS STRING
DIM stSql1 AS STRING
DIM oResultSet AS OBJECT
DIM oResultSet1 AS OBJECT
DIM stForm AS STRING
DIM stIcon AS STRING
DIM stDateiname AS STRING
Rem Update über alle Formulare
oSql = oConnection.createStatement()
oSql1 = oConnection.createStatement()
stSql = "SELECT `form` FROM `tform`"
oResultSet = oSql.executeQuery(stSql)
If oResultSet.Next Then
Do
stForm = oResultset.getString(1)
oFormDocs = ThisDatabaseDocument.FormDocuments.getByName(stForm).open
stSql1 = "SELECT `i_icon`, `i_datei`, `i_form` FROM `ticon` WHERE `i_form`='" & stForm &"'"
oResultSet1 = oSql1.executeQuery(stSql1)
If oResultSet1.Next Then
Do
stIcon = oResultSet1.getString(1)
stDateiname = oResultSet1.getString(2)
stDateiname = convertToUrl(stDateiname)
oForm = oFormDocs.Drawpage.Forms.getByName(stForm)
oFeld = oForm.getByName(stIcon)
oFeld.ImageURL = stDateiname
oForm.reload
Loop While oResultSet1.Next
Else
'Keine Datensätze
End If
Loop While oResultSet.Next
Else
'Keine Datensätze
End If
End Sub
Lieber würde ich das auch von dem Makro erledigen lassen.
Habe mit Xray aber nichts gefunden was dazu passt.
Kennt jemand eine elegantere Methode?
Gruss,
WSO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Wie kommst Du darauf?WSO hat geschrieben:Bei der Portierung von Windows auf Linux habe ich leider erst jetzt gemerkt, dass die Grafiken den Schlatflächen nur per link zugewiesen werden.
Unter W7, AOO 4.1.0 und Linux Mint, AOO 4.1.0 ist das nicht so, siehe Beispiel anbei.
Gruß R
EDIT: OK, mit LO geht es nicht. Kann ja nur ein Bug sein. Komisch, die unter AOO eingebetteten Bilder zeigt LO 4.2.6 wunderbar an.
- Dateianhänge
-
- Bilder_eingebettet.odb
- (41.38 KiB) 141-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Hi WSO
sorry, hab grad nicht viel Zeit, mir kommt aber dein Ansatz mit SQL etwas umständlich vor...
Probier mal, ob du mit einer Schleife über alle Formulare das gleiche erreichst
Außerdem könntest du noch probieren über den Layout-Manager in den Entwurfsmodus zu wechseln, deine Veränderungen auszuführen und dann das Formular zu speichern.
Das könnte dann in etwas so ausschauen:
Leider weiß ich grad nicht, wie man konkret in den Entwurfsmodus wechselt, da müsste ich noch suchen - vielleicht findest du es ja vor mir (würd mich dann auch interessieren
)
API XLayoutManager hilft dabei vielleicht
Bin mir auch nicht sicher, obs auch wirklich so funktioniert - glaubs aber schon
Freitag hab ich wieder mehr Zeit, da kann ich dann nochmal suchen, wenns noch nicht gelöst ist
LG
Rasakul
sorry, hab grad nicht viel Zeit, mir kommt aber dein Ansatz mit SQL etwas umständlich vor...
Probier mal, ob du mit einer Schleife über alle Formulare das gleiche erreichst
Code: Alles auswählen
For i=0 To CountFormulare
oForm = ThisDatabaseDocument.FormDocuments.getByIndex(i)
next i
Das könnte dann in etwas so ausschauen:
Code: Alles auswählen
For i=0 To CountFormulare - 1
oForm = ThisDatabaseDocument.FormDocuments.getByIndex(i)
oForm.open 'notwendig, da sonst kein LayoutManager vorhanden
'LayoutManager
oController = oForm.getComponent().getCurrentController()
lmgr = oController.Frame.LayoutManager
'Mit LayoutManager in den Entwurfsmodus wechseln
'TODO
'Do Your Staff here
'Formular speichern
oForm.store
oForm.close
next i

API XLayoutManager hilft dabei vielleicht
Bin mir auch nicht sicher, obs auch wirklich so funktioniert - glaubs aber schon
Freitag hab ich wieder mehr Zeit, da kann ich dann nochmal suchen, wenns noch nicht gelöst ist
LG
Rasakul
Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Nur zur Info:
Es handelt sich bei dem Verhalten, Bilder nicht einbetten zu können, um diesen gemeldeten Bug von LO.
Gruß R
Es handelt sich bei dem Verhalten, Bilder nicht einbetten zu können, um diesen gemeldeten Bug von LO.
Dazu folgende Info: Wenn die Bilder einmal in AOO eingebettet wurden, kann man mit LO wunderbar arbeiten, es sein denn, man ändert mit LO etwas im Formular und drückt speichern, dann sind die Grafiken wieder weg.F3K Total hat geschrieben:EDIT: OK, mit LO geht es nicht. Kann ja nur ein Bug sein. Komisch, die unter AOO eingebetteten Bilder zeigt LO 4.2.6 wunderbar an.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Somit wäre wohl meine Methode wohl auch hinfälligF3K Total hat geschrieben:Es handelt sich bei dem Verhalten, Bilder nicht einbetten zu können, um diesen gemeldeten Bug von LO.

Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden - Linus Torvalds
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Hi,
wenn es dir nichts ausmacht, statt der Schaltfläche, ein grafisches Kontrollelement zu verwenden (Nachteil, ein macht keine Klickbewegung), dann kannst du die Bilder auch in eine Tabelle der Datenbank speichern, siehe Formular_mit_Bild_aus_Datenbank in angehängten Beispiel.
HTH R
EDIT: ... oder halt zu AOO wechseln ...
wenn es dir nichts ausmacht, statt der Schaltfläche, ein grafisches Kontrollelement zu verwenden (Nachteil, ein macht keine Klickbewegung), dann kannst du die Bilder auch in eine Tabelle der Datenbank speichern, siehe Formular_mit_Bild_aus_Datenbank in angehängten Beispiel.
HTH R
EDIT: ... oder halt zu AOO wechseln ...
- Dateianhänge
-
- Bilder_eingebettet .odb
- (105.67 KiB) 145-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Hallo Zusammen und danke für die Antworten.
Zu:
Ich muss als irgendwie herausbekommen, welche icons auf welches Formular gehören, sonst läuft .getByName auf einen Fehler ...
Der Ansatz den Layoutmanager für das Formular zu öffnen wäre der Königsweg, aber leider:
funtioniert nicht: getComponent ist keine vorgesehene Methode.
Gleiches bei:
Ein Äquivalent habe ich im Xray nicht gefunden.
Selbst wenn der bug
https://bugs.freedesktop.org/show_bug.cgi?id=65163
behoben werden sollte, ist das Problem der Protierbarkeit damit ja nicht gelöst.
Ich werde als Notlösung wohl ertsmal meine Icon-Referenzen manuell erfassen, den Link auf die icons relativ zur dblocation anlegen
und bei jeder Portierung mein makro drüberlaufen.
Gruss,
WSO
Zu:
Das ist mein Lösundweg für das Problem, dass die Icons nicht auf jedem Formular einheitlich vorhanden sind.mir kommt aber dein Ansatz mit SQL etwas umständlich vor...
Probier mal, ob du mit einer Schleife über alle Formulare das gleiche erreichst
Ich muss als irgendwie herausbekommen, welche icons auf welches Formular gehören, sonst läuft .getByName auf einen Fehler ...
Der Ansatz den Layoutmanager für das Formular zu öffnen wäre der Königsweg, aber leider:
Code: Alles auswählen
'LayoutManager
oController = oForm.getComponent().getCurrentController()
Gleiches bei:
Code: Alles auswählen
oForm.store
Ein Äquivalent habe ich im Xray nicht gefunden.
Selbst wenn der bug
https://bugs.freedesktop.org/show_bug.cgi?id=65163
behoben werden sollte, ist das Problem der Protierbarkeit damit ja nicht gelöst.
Ich werde als Notlösung wohl ertsmal meine Icon-Referenzen manuell erfassen, den Link auf die icons relativ zur dblocation anlegen
und bei jeder Portierung mein makro drüberlaufen.
Gruss,
WSO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Hallo WSO,
was hälst Du denn davon wenn Du die Grafik mit in die Datei packst? Also nicht auf jedem Betriebssystem nach der Grafik suchen, sondern aus der Datei die Grafik direkt aufrufen.
Ich weiß das sich das wohl gut anhört, hat aber auch so seine Hürden. Ich habe selber mal Dateien erstellt in denen die Grafiken (kleine Icons für bestimmte Schaltflächen) direkt in der Datei drin sind. Das kann man ünabhängig vom "Office-Modul" machen, also egal ob für Writer, Calc oder so.
Es soll wohl dafür ein Tool irgendwo im englisch sprachigen Forum geben, jedoch ist dieses Forum nur extrem schwer zu erreichen. Aber man kann dies auch von Hand machen, was leider etwas tricky ist. Unser Moderator Stephan hat das in seinem Buch "Tabellenkalkulation mit OpenOffice.org 3 Calc" beschrieben. Aber auch hier im Forum hatte er mal was kurz dazu gesagt, siehe: Dateianhang in odt Datei.
Nein, ich habe das Buch nicht. Aber ich hatte das nachbauen können, mittels einer leider nicht mehr zur Verfügung stehenden Online-Leseprobe bei https://www.galileo-press.de/.
In dem eben verlinkten Thread hatte Stephan eine Beispieldatei angehängt, die nicht nur eine Grafik enthällt, sondern auche eine PDF-Datei. Da es dir hier aber nur um Grafik geht, habe ich mal eine simple Testdatei erstellt. Wenn dir das zusagt, dann melde dich noch mal und ich sage mehr und genaueres dazu.
Gruß
balu
was hälst Du denn davon wenn Du die Grafik mit in die Datei packst? Also nicht auf jedem Betriebssystem nach der Grafik suchen, sondern aus der Datei die Grafik direkt aufrufen.
Ich weiß das sich das wohl gut anhört, hat aber auch so seine Hürden. Ich habe selber mal Dateien erstellt in denen die Grafiken (kleine Icons für bestimmte Schaltflächen) direkt in der Datei drin sind. Das kann man ünabhängig vom "Office-Modul" machen, also egal ob für Writer, Calc oder so.
Es soll wohl dafür ein Tool irgendwo im englisch sprachigen Forum geben, jedoch ist dieses Forum nur extrem schwer zu erreichen. Aber man kann dies auch von Hand machen, was leider etwas tricky ist. Unser Moderator Stephan hat das in seinem Buch "Tabellenkalkulation mit OpenOffice.org 3 Calc" beschrieben. Aber auch hier im Forum hatte er mal was kurz dazu gesagt, siehe: Dateianhang in odt Datei.
Nein, ich habe das Buch nicht. Aber ich hatte das nachbauen können, mittels einer leider nicht mehr zur Verfügung stehenden Online-Leseprobe bei https://www.galileo-press.de/.
In dem eben verlinkten Thread hatte Stephan eine Beispieldatei angehängt, die nicht nur eine Grafik enthällt, sondern auche eine PDF-Datei. Da es dir hier aber nur um Grafik geht, habe ich mal eine simple Testdatei erstellt. Wenn dir das zusagt, dann melde dich noch mal und ich sage mehr und genaueres dazu.
Gruß
balu
- Dateianhänge
-
- Button mit Icon-0.4.ods
- (12.13 KiB) 147-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden

Re: Schaltfläche mit Grafik unabghängig vom OS ?
Hi balu, rasakul
danke für den input.
für mein Problem mit den Icons brauchte ich eine schnelle Lösung und habe mit viel Handarbeit meinen ürsprünglichen Lösunsansatz umgesetzt.
Ist zwar nicht schön, aber geht erst mal.
Dateien (als Objekt) in dier Datenbank per Basic zu übernehmen, würde ich sehr gerne.
Sollte dann aber auch mit Postgres und MySql gehen.
Alle Infos die ich bislang dazu bekam waren: "geht nicht".
Bin mir nicht sicher, ob der Vorschlag von balu das revidiert, wäre aber toll.
Hatte mich damit abgefunden und alternativ nur Links und "Dateiauswahl" in der Anwendung verwendet.
Wenn es dafür doch eine bessere Variante gibt, würde ich die sehr gerne verfolgen.
Gruss,
WSO
danke für den input.
für mein Problem mit den Icons brauchte ich eine schnelle Lösung und habe mit viel Handarbeit meinen ürsprünglichen Lösunsansatz umgesetzt.
Code: Alles auswählen
Sub upd_Formulare (oEvent AS OBJECT)
GlobalScope.BasicLibraries.LoadLibrary("Tools")
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
oDatasource = thisComponent.Parent.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
DIM oSql AS OBJECT
DIM oSql1 AS OBJECT
DIM oDoc as Object
DIM oDrawpage as Object
DIM oForm as Object
DIM oFeld as Object
DIM oFormDocs AS OBJECT
DIM stSql AS STRING
DIM stSql1 AS STRING
DIM oResultSet AS OBJECT
DIM oResultSet1 AS OBJECT
DIM stForm AS STRING
DIM stIcon AS STRING
DIM stIconFeld AS STRING
DIM stDateiname AS STRING
DIM stDateiURL As STRING
Rem Update über alle Formulare
oSql = oConnection.createStatement()
stSql = "SELECT `par_icon` FROM `tparameter`"
oResultSet = oSql.executeQuery(stSql)
If oResultSet.Next Then
Do
stIcon = oResultset.getString(1)
Loop While oResultSet.Next
Else
Msgbox "Parameter nicht gefunden"
exit sub
End If
oSql1 = oConnection.createStatement()
stSql = "SELECT `frm_formular` FROM `tformular`"
oResultSet = oSql.executeQuery(stSql)
If oResultSet.Next Then
Do
stForm = oResultset.getString(1)
Msgbox "Aktuelles Formular: " & stForm
oFormDocs = ThisDatabaseDocument.FormDocuments.getByName(stForm).open
stSql1 = "SELECT `ico_icon`, `tab_txt`, `ico_formular` FROM abfIcon WHERE `ico_formular`='" & stForm &"'"
oResultSet1 = oSql1.executeQuery(stSql1)
If oResultSet1.Next Then
Do
stIconFeld = oResultSet1.getString(1)
stDateiname = oResultSet1.getString(2)
stDateiURL = glbDatenbanklocation & stIcon & stDateiname
stDateiURL = convertToUrl(stDateiURL)
oForm = oFormDocs.Drawpage.Forms.getByName(stForm)
oFeld = oForm.getByName(stIconFeld)
oFeld.ImageURL = stDateiURL
Loop While oResultSet1.Next
Else
'Keine Datensätze
End If
oForm.reload
Loop While oResultSet.Next
Else
'Keine Datensätze
End If
End Sub
Dateien (als Objekt) in dier Datenbank per Basic zu übernehmen, würde ich sehr gerne.
Sollte dann aber auch mit Postgres und MySql gehen.
Alle Infos die ich bislang dazu bekam waren: "geht nicht".
Bin mir nicht sicher, ob der Vorschlag von balu das revidiert, wäre aber toll.
Hatte mich damit abgefunden und alternativ nur Links und "Dateiauswahl" in der Anwendung verwendet.
Wenn es dafür doch eine bessere Variante gibt, würde ich die sehr gerne verfolgen.
Gruss,
WSO
Re: Schaltfläche mit Grafik unabghängig vom OS ?
Mal ehrlich,
hast du meine Hinweise gelesen, dass das
hast du meine Hinweise gelesen, dass das
- Einbetten der Bilder normalerweise funktioniert?
- Das es sich nur um einen Bug von LO handelt, der sicherlich in einer der kommenden Versionen behoben sein wird?
- Das du die Bilder mit ApacheOpenOffice oder einer älteren LibreOffice Version, z.B. LO-Portable 3.5.5.3, normal einbetten kannst (siehe Bild), und, mit der aktuellen Version von LibreOffice, solange du das Formular nicht im Entwurfsmodus änderst und abspeicherst, benutzen kannst?
- Wenn du ApacheOpenOffice verwendest hast du gar kein Problem.
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO