Zugriff auf die Beschriftung einer Schaltfläche
Moderator: Moderatoren
Zugriff auf die Beschriftung einer Schaltfläche
Wie bekommt man mit einem Makro Zugriff auf die Beschriftung einer Schaltfläche?
Re: Zugriff auf die Beschriftung einer Schaltfläche
Ich habe es gefunden:
Code: Alles auswählen
thiscomponent.drawpage(0).control.label = "EUREKA!"
Re: Zugriff auf die Beschriftung einer Schaltfläche
Also bei weitem viel besser als jedes Handbuch ist es, angefangen mit "thiscomponent" alles mögliche in die Beobachtungsliste der IDE zu stellen und zu recherchieren, bis man die benötigte Unterstruktur gefunden hat. Denn die Handbücher sind zum Verzweifeln.
Nur meine Meinung.
Was denkt ihr?

Nur meine Meinung.
Was denkt ihr?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Zugriff auf die Beschriftung einer Schaltfläche
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Zugriff auf die Beschriftung einer Schaltfläche
XRay ist ein Hilfsmittel zur Programmierung.
Lade die Bibliothek*
Danach kannst Du in Deinem Basic-Code die Objekte und Variablen untersuchen, bspw.
Suche mal nach Beiträgen mit "Xray" hier imForum. Da ist obiges schon mehrfach beschrieben.
Ich meine, auch Andrews verwendet Xray in seinem Beispiel-Code seines Makro-Dokuments.
Hilft das weiter?
* ungetestet: bin gerade umgezogen, noch nicht auf vollständigem "Hilfsbereit-Level"
Lade die Bibliothek
Code: Alles auswählen
GlobalScope.BasicLibraries.loadLibrary( "XrayTools" )
Danach kannst Du in Deinem Basic-Code die Objekte und Variablen untersuchen, bspw.
Code: Alles auswählen
xray ThisComponent
xray meineVariable
Suche mal nach Beiträgen mit "Xray" hier imForum. Da ist obiges schon mehrfach beschrieben.
Ich meine, auch Andrews verwendet Xray in seinem Beispiel-Code seines Makro-Dokuments.
Hilft das weiter?
* ungetestet: bin gerade umgezogen, noch nicht auf vollständigem "Hilfsbereit-Level"
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Zugriff auf die Beschriftung einer Schaltfläche
Mitte in der Nacht ziehst du um?
Ein wenig habe ich versucht, deine neue Ratschläge umzusetzen, ist es mir aber noch nicht gelungen.
Bisher habe ich folgendes mit der dynamischen Änderung von Schaltflächen und Beschriftungsfeldern erreicht:
Die Änderung von Beschriftung, Hilfetext und Untergrundsfarbe funktioniert, wie man aus diesem Bild...
und aus diesem anderen...
... sehen kann.
Die Änderung der Position und der Größe funktioniert aber nicht. Was mache ich da falsch? Oder ist die dynamische Änderung nicht vorgesehen, sondern nur das Lesen?
Eine andere Frage:
Ist es möglich, einen Text wie:
als Konstante zu deklarieren, so, daß man sich die Initialisierung sparen kann?
Vielen Dank
Gianni
Ein wenig habe ich versucht, deine neue Ratschläge umzusetzen, ist es mir aber noch nicht gelungen.
Bisher habe ich folgendes mit der dynamischen Änderung von Schaltflächen und Beschriftungsfeldern erreicht:
Code: Alles auswählen
REM ***** BASIC *****
Const rot = 16711680, gruen = 32768, EIN = "EIN", AUS = "AUS", _
HilfetextEIN = "Befehlsweitergabe EINGESCHALTET. Die grüne Taste drücken, um die Zeitfelder zu bearbeiten.", _
HilfetextAUS = "Befehlsweitergabe AUSGESCHALTET. Die Zeitfelder können bearbeitet werden. Die rote Taste drücken, um die Befehlsweitergabe einzuschalten."
Global initialisiert as boolean, LabelEIN, LabelAUS, HilfetextEIN, HilfetextAUS as string
Sub Main
versuche
End Sub
sub Initialisiere
LabelEIN = "Befehlsweitergabe EINGESCHALTET" & Chr(10) & "Die grüne Taste drücken, um die Zeitfelder zu bearbeiten."
LabelAUS = "Befehlsweitergabe AUSGESCHALTET. Die Zeitfelder können bearbeitet werden." & Chr(10) & "Die rote Taste drücken, um die Befehlsweitergabe einzuschalten."
initialisiert = true
end sub
sub SchalteFarbeUm
if NOT initialisiert then Initialisiere
if thiscomponent.drawpage(0).control.backgroundcolor = gruen then
thiscomponent.drawpage(0).control.backgroundcolor = rot
thiscomponent.drawpage(0).control.label = AUS
thiscomponent.drawpage(0).control.helptext = HilfetextAUS
thiscomponent.drawpage(1).control.label = LabelAUS
else
thiscomponent.drawpage(0).control.backgroundcolor = gruen
thiscomponent.drawpage(0).control.label = EIN
thiscomponent.drawpage(0).control.helptext = HilfetextEIN
thiscomponent.drawpage(1).control.label = LabelEIN
end if
end sub
sub versuche
Dummy = thiscomponent.drawpage(0).control
Dummy = thiscomponent.drawpage(0).size
thiscomponent.drawpage(0).size.width = 4000
Dummy = thiscomponent.drawpage(2)
Dummy = thiscomponent.drawpage(2).position
thiscomponent.drawpage(2).position.x = 3000
end sub
Die Änderung der Position und der Größe funktioniert aber nicht. Was mache ich da falsch? Oder ist die dynamische Änderung nicht vorgesehen, sondern nur das Lesen?
Eine andere Frage:
Ist es möglich, einen Text wie:
Code: Alles auswählen
"Befehlsweitergabe EINGESCHALTET" & Chr(10) & "Die grüne Taste drücken, um die Zeitfelder zu bearbeiten."
Vielen Dank
Gianni
Re: Zugriff auf die Beschriftung einer Schaltfläche
Auch von mir die Frage: Wo kann man Position und Größe, so eines Labels zumindest auslesen. Beim Objekt (über die Drawpage) ist es nicht gespeichert. Mittels des Event-Objekts geht es, (stardiv.Toolkit.UnoFixedTextControl), aber auf die anderen Label-Kontrollelemente des Formulars konnte ich so nicht zugreifen.Die Änderung der Position und der Größe funktioniert aber nicht
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Re: Zugriff auf die Beschriftung einer Schaltfläche
Hallo,
hier ein paar Tips:
mit folgender Prozedur bekommt man Zugriff auf alle Elemente der Drawpage:
nun kann man z.B so nach Labelfeldern suchen:
oder ein Labelfeld per Namen finden:
oder dem Feld eine neue Position zuweisen:
Die neue Position ist aber nur dann dauerhaft, wenn das Formular im Bearbeitungsmodus geöffnet wurde und nach der Positionsänderung gespeichert wird.
Geht beides auch per Makro.
Viel Erfolg
Gruß R
hier ein paar Tips:
mit folgender Prozedur bekommt man Zugriff auf alle Elemente der Drawpage:
Code: Alles auswählen
oshapesenum=thiscomponent.drawpage.createEnumeration
while oshapesenum.hasmoreelements
oshape= oshapesenum.nextelement
xray oshape
wend
Code: Alles auswählen
oshapesenum=thiscomponent.drawpage.createEnumeration
while oshapesenum.hasmoreelements
oshape= oshapesenum.nextelement
if oshape.control.ServiceName ="stardiv.one.form.component.FixedText" then msgbox oshape.control.name
wend
Code: Alles auswählen
oshapesenum=thiscomponent.drawpage.createEnumeration
while oshapesenum.hasmoreelements
oshape= oshapesenum.nextelement
if oshape.control.name="lblKunden-ID" then msgbox "X: "+oshape.position.X+" Y: "+oshape.position.Y
wend
Code: Alles auswählen
dim oposition as new com.sun.star.awt.Point
oposition.X=5000 '5cm
oposition.Y=5000 '5cm
oshapesenum=thiscomponent.drawpage.createEnumeration
while oshapesenum.hasmoreelements
oshape= oshapesenum.nextelement
if oshape.control.name="txtKunden-ID" then oshape.position=oposition
wend
Geht beides auch per Makro.
Viel Erfolg
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re:Zugriff a. d. Beschriftung/Größe/Position einer Schaltflä
Vielen Dank für die Codeschnipsel - ich hatte in der "falschen" Drawpage gesucht.
Hab mich die letzten 2 Tage durch den Code gewühlt, und alles ein bisschen schöner gemacht
Danke auch für den Hinweis, die Position per com.sun.star.awt.Point (und die Größenzuordnung dann per com.sun.star.awt.Size) zu setzen!
g
Hab mich die letzten 2 Tage durch den Code gewühlt, und alles ein bisschen schöner gemacht

Danke auch für den Hinweis, die Position per com.sun.star.awt.Point (und die Größenzuordnung dann per com.sun.star.awt.Size) zu setzen!
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5