🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Formularfeld sichtbar schalten

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mo 27. Feb 2017, 19:18

360 km ? Schade.

Ich habe mal versucht die letzten beiden Datenbanken zu kombinieren. Klappt auch erst mal, leider wird der Farbenstatus der Buttons falsch angezeigt.

Beispiel:
Wenn die Felder einzeln aufgedeckt werden, wird beim anschließenden Umschalten des Datensatzes der Farbenstatus falsch angezeigt. Kannst du noch mal rüberschauen ?
Dateianhänge
Englisch-Grundwortschatz3.zip
(23.64 KiB) 290-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Mo 27. Feb 2017, 20:57

So, das kostet jetzt mindestens eine Kiste ...

Code: Alles auswählen

Sub Navigieren (oEvent)
   oButton = oEvent.source.model
   oDrawpage = ThisComponent.Drawpage
   oForm = oDrawpage.Forms.getByName("MainForm")
   IF oButton.Label = "DE-ANZEIGEN-ALLES" then
       oButton.Label = "NÄCHSTE KARTE"
       oButton.BackgroundColor = 16763904 'Orange
       for i = 0 to oForm.Count - 1
           oFeld = oForm.getByindex(i)
           if oFeld.tag = "AN_AUS" then oFeld.enableVisible = true
           if oFeld.Name ="EINZELBUTTON" then
               oFeld.Label = "DE-AUSBLENDEN"
               oFeld.BackgroundColor = 16763904 'Orange
           endif
       next i
   ELSE 
       oButton.Label = "DE-ANZEIGEN-ALLES"
       oButton.BackgroundColor = 52224 'Grün 3
       for i = 0 to oForm.Count - 1
           oFeld = oForm.getByindex(i)
           if oFeld.tag = "AN_AUS" then oFeld.enableVisible = false
           if oFeld.Name ="EINZELBUTTON" then
               oFeld.Label = "DE-ANZEIGEN"
               oFeld.BackgroundColor = 52224
           endif
       next i
       if oform.islast then
           if msgbox ("Das war die letzte Karte,"+chr(13)+"nochmal von vorne beginnen",292,"Letzter Datensatz") = 6 then
               oform.first
               exit sub
             else
               exit sub
           endif
       endif
       oForm.next
   ENDIF
end sub

Sub UnsichtbarAnAus (oEvent)
   oButton = oEvent.source.model
   sFields = oButton.tag
   aFields = split(sFields,";")
   oDrawpage = ThisComponent.Drawpage
   oForm = oDrawpage.Forms.getByName("MainForm")
   IF oButton.Label = "DE-ANZEIGEN" THEN
       oButton.Label = "DE-AUSBLENDEN"
       oButton.BackgroundColor = 16763904 'Orange
       for i = 0 to 1
           oFeld = oForm.getByName(aFields(i))
           oFeld.enableVisible = true
       next i
   ELSE
       oButton.Label = "DE-ANZEIGEN"
       oButton.BackgroundColor = 52224 'Grün 3
       for i = 0 to 1
           oFeld = oForm.getByName(aFields(i))
           oFeld.enableVisible = false
       next i
   END IF
   nCount = 0
   for i = 0 to oForm.Count - 1
       oFeld = oForm.getByindex(i)
       if oFeld.NAME = "EINZELBUTTON" then
           if oFeld.Label = "DE-AUSBLENDEN" then nCount = nCount + 1
       endif
   next i
   oButton = oForm.getbyname("GESAMTBUTTON")
   if nCount = 4 then
       oButton.Label = "NÄCHSTE KARTE"
       oButton.BackgroundColor = 16763904 'Orange
   else
       oButton.Label = "DE-ANZEIGEN-ALLES"
       oButton.BackgroundColor = 52224 'Grün 3     
   endif
end sub
Gruß R
Dateianhänge
Englisch-Grundwortschatz3.zip
(23.52 KiB) 226-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mo 27. Feb 2017, 21:29

Uiiii .... das war wohl eine Menge Arbeit am Code. Jetzt ist aber auch gut .... nochmals vielen Dank für deine Mühe.

Bei Eigenschaften "Schaltfläche" von DE-ANZEIGEN-ALLES sehe ich nur "fokussieren bei Klick". Das automatische Fokussieren (ohne Mausklick) direkt nach dem Start der Datenbank auf DE-ANZEIGEN-ALLES ist wohl nicht möglich, oder ? Wenn das jetzt wieder umfangreich wird am code rumzubasteln, lasse es bitte. Ich bin hochzufrieden mit der Datenbank.

Jetzt werde ich mal anfangen 800 Karteikarten mit über 1400 Begriffen zu füllen. Das wird lustig ;)

Gruß Gundo

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mo 27. Feb 2017, 21:50

Habs hinbekommen.

Code: Alles auswählen

Sub FokusSetzen
oDoc = ThisComponent
oDocView = oDoc.getCurrentController()
oForm = oDoc.drawpage.forms(0) 
oFeld = oForm.getByName("GESAMTBUTTON")
oDocView.getControl(oFeld).setFocus()
End Sub 

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Di 28. Feb 2017, 06:11

Moin,
das geht auch ohne Makro, indem die Schaltfläche die Aktivierungsreihenfolge 1 bekommt und der automatische Kontrollelementefokus eingeschaltet wird:
GW.png
GW.png (34.74 KiB) 5553 mal betrachtet
Gruß R
Dateianhänge
Englisch-Grundwortschatz3.zip
(23.16 KiB) 246-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Di 28. Feb 2017, 15:39

Hallo,

Hab's korrigiert und noch einige Buttons integriert. Diese Datenbank erhält sicher keinen Schönheitspreis, ist aber für meine Bedürfnisse wunderbar zu gebrauchen.

Wüßte nicht was da noch fehlen könnte.

Gruß Gundo
Dateianhänge
Englisch-Grundwortschatz-Final.zip
(27.14 KiB) 215-mal heruntergeladen

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Di 28. Feb 2017, 22:57

Mhmmm .... ist das eigentlich möglich über einen Button eine Audiodatei abzuspielen ?

Man klickt also einen Button an, und die dort verlinkte z.B. MP3-Datei wird abgespielt. Geht das überhaupt ?

Gruß Gundo

EDIT: Ist wohl möglich: http://de.openoffice.info/viewtopic.php ... 60#p244476 aber in meinem Fall kaum praktikabel.

EDIT2: Oder doch. Bei diesem Beispiel wird ein Feld ausgelesen und die Datei geöffnet/ausgeführt. Hab ich jedenfalls so verstanden:

Code: Alles auswählen

SUB DateiOeffnen
	DIM vaDoc
	DIM Arg()
	DIM stUrl AS STRING
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage
	oForm=oDrawpage.Forms.getByName("Formular")
	oFeld=oForm.getByName("Feld")
	stUrl = ConvertToUrl(oFeld.getCurrentValue())
	vaDoc = StarDesktop.loadComponentFromURL(stUrl, "_blank", 0, Arg())
END SUB
D.h. man müßte nur einen Button erstellen der ein bestimmtes Feld ausliest (Makro) und dann die Audiodatei abspielt. Und wenn die MP3-Datei mit einem Player verknüpft ist sollte das doch funktionieren. Ob' s praktikabel ist ... mal sehen. Ich versuch's mal.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfeld sichtbar schalten

Beitrag von RobertG » Mi 1. Mär 2017, 07:38

Hallo Gundo,

Audiodateien abspielen ist möglich. Allgemein allerdings über

Code: Alles auswählen

oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stPfad,,0)
Schau dazu im Handbuch das Kapitel "Aufruf von Anwendungen zum Öffnen von Dateien" an.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mi 1. Mär 2017, 12:08

Hallo Robert,

So hab ich das verstanden:

Code: Alles auswählen

SUB Link_oeffnen
    DIM oDoc AS OBJECT
    DIM oDrawpage AS OBJECT
    DIM oForm AS OBJECT
    DIM oFeld AS OBJECT
    DIM oShell AS OBJECT
    DIM stFeld AS STRING
    oDoc = thisComponent
    oDrawpage = oDoc.Drawpage
    oForm = oDrawpage.Forms.getByName("MainForm")
    oFeld = oForm.getByName("play 1")
    stFeld = oFeld.Text
    IF stFeld = "" THEN
        EXIT SUB
    END IF
	oShell = createUnoService("com.sun.star.system.SystemShellExecute")
	oShell.execute(stFeld,,0)
END SUB
Das auszulesende Feld heißt also "play 1". Der entsprechende Button löst dieses Script aus. Im Feld steht der komplette Pfad zur mp3-Datei:

Code: Alles auswählen

/home/user/Dokumente/test.mp3
Die Verknüpfung im System (Linux Mint 18.1) ist vorhanden. Trotzdem funktioniert es nicht. Es tut sich nichts wenn der Button angeklickt wird. Ich würde auch gerne den Kommandozeilenplayer mpg312 minimalisiert verwenden. Der muß ja auch dann auch hier im Script eingetragen werden. Wie geht das denn ?

Gruß Gundo

EDIT:

Code: Alles auswählen

Shell(Pathname, Windowstyle, Param,bSync)
Gut, aber ich kapier noch nicht wie wie man den Inhalt von dem Feld "play 1" übergibt.

EDIT2:
Jetzt hab ich es ...

Code: Alles auswählen

shell("/usr/bin/mpg321", 1,stFeld)

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfeld sichtbar schalten

Beitrag von RobertG » Mi 1. Mär 2017, 15:53

Hallo Gundo,

Du hast aus dem Handbuch einen Teil nicht mit eingebunden:

Code: Alles auswählen

stFeld = convertToUrl(stFeld)
Das macht dann aus

Code: Alles auswählen

/home/user/Dokumente/test.mp3

Code: Alles auswählen

file:///home/user/Dokumente/test.mp3
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten