Titel einer Schaltfläche auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

holdrio76
Beiträge: 8
Registriert: Di, 12.10.2010 23:14

Titel einer Schaltfläche auslesen

Beitrag von holdrio76 »

Hallo,

ich habe eine Schaltfläche in einem Tabellenblatt eingebaut, der immer das selbe tun soll, nämlich ein weiteres Calc-Dokument öffnen, das funktioniert soweit auch ganz gut

Code: Alles auswählen

Sub oeffne_EDV_orga

Dim oDoc as Object
Dim Filepath as String
Dim DirPath as String
Dim DirPath_1 as String
Dim OpenFile as String
Dim ButtonName as String
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   odoc = thiscomponent
   check = odoc.haslocation()
   if check = true then 'Prüfen ob die Datei einen Dateinamen hat
   Filepath = oDoc.URL
   DirPath = convertfromURL(Filepath)
   DirPath_1 = DirectoryNameoutofPath(DirPath,GetPathSeparator())
   ButtonName = ActiveSheet.Shapes(Application.Caller).DrawingObject.Characters.Text 
   MsgBox ButtonName
   Dim NewWorkbook as Object
   Dim NoArgs()
   OpenFile = ConvertToURL(DirPath_1 & "//Dateilisten/edv_orga.ods")
   MsgBox Filepath & CHR(13) & CHR(13) & DirPath & CHR(13)& CHR(13) & DirPath_1 & CHR(13) & CHR(13) & OpenFile
   NewWorkbook = StarDesktop.loadComponentFromURL(OpenFile,"_blank",0 ,NoArgs())
   else MsgBox "Das Dokument hat noch keinen Dateinamen!"
   end if  
End Sub
Ich möchte jedoch den Code für viele Buttons nutzen um für unterschiedliche Abteilungen jeweils eine Datei zu öffnen. Das bedeutet, dass der Dateiname aus dem Anzeigename des Buttons ausgelesen werden soll. in der Programmzeile Buttonname= ..., habe ich schon mal versucht mit einem hier veröffentlichten Thema etwas hinzbekommen, jedoch funktioniert das nicht.

Ich hoffe jemand kann mir weiterhelfen

Grüße holdrio76
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: Titel einer Schaltfläche auslesen

Beitrag von Axel Richter »

Hallo,
holdrio76 hat geschrieben:dass der Dateiname aus dem Anzeigename des Buttons ausgelesen werden soll.
Folgendes Makro ermittelt, wenn es einer Schaltfläche bei Ereignis Aktion ausführen zugewiesen ist, aus dem übergebenen Event-Objekt die Schaltflächenbeschriftung (Label aka Titel).

Code: Alles auswählen

Sub Button_Click(Event)
 ButtonLabel = Event.Source.Model.Label
 MsgBox ButtonLabel
End Sub
Ereignis-Makros bekommen immer das Event-Objekt als Parameter mit übergeben. Wenn man das übernimmt, dann hat man über .Source Zugriff auf das aufrufende Objekt.

viele Grüße

Axel
holdrio76
Beiträge: 8
Registriert: Di, 12.10.2010 23:14

Re: Titel einer Schaltfläche auslesen

Beitrag von holdrio76 »

Hallo Axel,

danke, hat super funktioniert.

Code: Alles auswählen

Dim ButtonLabel as String

Sub Button_Click(Event)
ButtonLabel = Event.Source.Model.Label
oeffne_Datei
End Sub

Sub oeffne_Datei()

Dim oDoc as Object
Dim Filepath as String
Dim DirPath as String
Dim DirPath_1 as String
Dim OpenFile as String
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   odoc = thiscomponent
   check = odoc.haslocation()
   if check = true then 'Prüfen ob die Datei einen Dateinamen hat
   Filepath = oDoc.URL
   DirPath = convertfromURL(Filepath)
   DirPath_1 = DirectoryNameoutofPath(DirPath,GetPathSeparator())
   Dim NewWorkbook as Object
   Dim NoArgs()
   OpenFile = ConvertToURL(DirPath_1 & "//Dateilisten/" & ButtonLabel & ".ods")
   MsgBox Filepath & CHR(13) & CHR(13) & DirPath & CHR(13)& CHR(13) & DirPath_1 & CHR(13) & CHR(13) & OpenFile
   NewWorkbook = StarDesktop.loadComponentFromURL(OpenFile,"_blank",0 ,NoArgs())
   else MsgBox "Das Dokument hat noch keinen Dateinamen!"
   end if  
End Sub
Holger
Gegman
Beiträge: 1
Registriert: Mi, 11.05.2011 22:14

Re: Titel einer Schaltfläche auslesen

Beitrag von Gegman »

Hi Leute,

gibt es eine Möglichkeit, diesen Code anzuwenden,
Sub Button_Click(Event)
ButtonLabel = Event.Source.Model.Label
MsgBox ButtonLabel
End Sub
wenn z.B. ein Rechteck das Makro aufruft?

LG Gegman
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Titel einer Schaltfläche auslesen

Beitrag von F3K Total »

Hallo,
habe es versucht, das Rechteck kennt (Event) nicht.
Vermutlich weil es kein Kontrollelement ist.
Es ist aber möglich den Text auszulesen, bei einem Calc Dokument z.B., wenn das Rechteck den Namen "Rechteck1" hat, so:

Code: Alles auswählen

Sub Main 
document=thiscomponent
for k=0 to Document.sheets.count-1
osheet=Document.sheets.getbyindex(k)
opage=osheet.drawpage
if opage.count>0 then
for l =0 to opage.count-1
ofield=opage.getbyindex(l)
if ofield.supportsservice("com.sun.star.drawing.Shape")then
if ofield.name="Rechteck1" then msgbox ofield.string
endif
next l
endif
next k
End Sub
Vorteil, man kann den Text im Calc Dokument ändern (Rechtsklick, Linksklick, Doppellinksklick)

Gruß Rik
Antworten