Text von Schaltfläche zur Laufzeit ändern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Text von Schaltfläche zur Laufzeit ändern

Re: Text von Schaltfläche zur Laufzeit ändern

von mumpel » So, 25.10.2009 01:31

Ja in manchen Dingen ist MSO eben doch besser. Soetwas lässt sich in VBA viel einfacher programmieren. Aber so schwer ist Starbaisc auch nicht. Nur dass es professionelle Hilfe für Starbasic nicht wirklich gibt, was schlecht ist für Anfänger und Umsteigewillige. Bis heute warte ich auf Antwort auf eine meiner Fragen.

Re: Text von Schaltfläche zur Laufzeit ändern

von hempelr » Fr, 23.10.2009 23:51

So, Frust hatte ich im letzten Beitrag etwas abgelassen, hab dann weitergekämpft ;-)
Lösung mit Hilfe des Sun-Basic-Handbuches und Trial and Error-Methode, ist viel einfacher als gedacht.

Nurmal so zur Info auch für andere "Suchende" wies geht:

Formularelemente sind auf Zeichenebene, diese ist auf jeder Tabelle vorhanden, sie muss per Index angesprochen werden.
In "meinem" Fall heisst der Button (das was in Titel des Steuerelementeigenschaftenfensters eingetragen ist)
btnProtectTabKb, der sich auf der Tabelle mit Namen Kontenblaetter befindet.
Um nun die Eigenschaften dieses Buttons ansprechen zu können, muss man folgendes tun:

Code: Alles auswählen

	      sTabZielName = "Kontenblaetter"  ' Name der Tabelle, auf denen man ein (Formular)element ansprechen will
              sButton = "btnProtectTabKb"  ' Name des Buttons		
	      oDoc = thisComponent.getSheets()  ' Zwischenvariable - Objekt
	      oAktTab = oDoc.getByName(sTabZielName)  ' Tabellenobjekt
       ' Das imaginäre Formularobjekt der aktuellen Tabelle über seinen Index holen
       ' Warum der Index 0 ist und ob es da noch einen anderen Index bzw. weitere Formularelemente gibt,
      ' ist mir vollkommen unklar
	      oForm = oAktTab.DrawPage.Forms.GetByIndex(0) 'Formularebene auf der sich der Button befindet in Objekt-Var
       ' Hier kann jetzt der Button endlich komplett in eine "einfache" (Objekt)Var gesteckt und darüber seine Eigenschaften
       ' manipuliert werden
	      oBtnA = oForm.getByName(sButton)
      ' und hier können wir nun endlich einfach einen neuen Wert zuweisen
            oBtnA.Label = "Schutz ein"

Danke für die Gedankenanstöße und die guten Links im Forum hier - und ganz besonders für die Geduld mit meinen "Frust"-Sätzen - ich versuche mich zu bessern ;-)

Re: Text von Schaltfläche zur Laufzeit ändern

von hempelr » Fr, 23.10.2009 22:45

Sorry, bin grad auf deine Frage gestossen...
Nee, habs nicht zum Laufen bekommen, war eben nochmal dran
Ich denke, dass es irgendwie nicht das Objekt geregelt bekommt, also der Button ist nicht ansprechbar.
Gibts die Methode "getElementByName" überaupt - hab nix gefunden dazu...

Die Adresse des Buttons ist der Knackpunkt - ich werd echt noch blöd mit diesem verwurschtelten "Basic"; da sind ja verschachtelte Datenstrukturen mit verschachtelten Hashs und Listen in Perl einfacher zu handeln...
Das absolut grosse Problem ist, dass nirgendwo wirklich gute verständliche Dokumentationen zu finden ist, jeder noch so kleine Schritt ist ein Fischen im Trüben, ewiges Suchen in den wenigen Büchern und im Netz, da verliert man tatsächlich ruck zuck die Lust, weil sich kaum Erfolge einstellen.
Naja, was solls, für mehr als "einfaches" Arbeiten ist OOo halt doch nicht geeignet - viel zu kompliziert als dass ein "normaler" Mensch sich da reinfitzen könnte...schade, aber nicht zu ändern.

Re: Text von Schaltfläche zur Laufzeit ändern

von mumpel » Mi, 21.10.2009 13:35

Hat das Makro aus meiner ersten Antwort funktioniert?

Re: Text von Schaltfläche zur Laufzeit ändern

von hempelr » Mi, 21.10.2009 07:55

Vielen Dank für die Antwort(en).
Ist jetzt erst mal ohne die Beschriftungsänderung "fertig"gestellt.
Die genannte Makrobib schau ich mir gern an, danke für den Tipp.

Viele Grüße aus dem bitterkalten Erzgebirge an den "Rest der Welt" :)

Re: Text von Schaltfläche zur Laufzeit ändern

von mumpel » So, 18.10.2009 21:09

hempelr hat geschrieben: Dieses Model von OOo-Basic ist mir als Script-Programmierer absolut verschlossen...
Du kannst Dir auch meine Extension OOo Telefonfunktion herunterladen. Das ZIP-Archiv enthält auch den Quellcode zur Extension im HTML-Format. Kannst Du Dir ja mal anschauen und nachzuvollziehen versuchen. Vielleicht hilft Dir das ein wenig, das Starbasic-UNO-Model zu verstehen.

Re: Text von Schaltfläche zur Laufzeit ändern

von mumpel » So, 18.10.2009 20:59

Hallo!

Ungetestet.

Dim oButton1 As Object

Sub ButtonProtectBuchliste()
sTabZielName = "Kontenblaetter"
oDoc = thisComponent.getSheets()
oAktTab = oDoc.getByName(sTabZielName)
oButton1 = oAktTab.getElementByName("btnProtectBuchliste")
If oAktTab.getCellByPosition(2, 12).String = "Bericht gesperrt" Then
On Error Resume Next
oAktTab.Unprotect ("pw")
On Error GoTo 0
oAktTab.getCellByPosition(2, 12).String = "Bericht frei"
oButton1.Model.Label = "Schutz ein"
Else
oAktTab.getCellByPosition(2, 12).String = "Bericht gesperrt"
On Error Resume Next
oAktTab.Protect ("pw")
On Error GoTo 0
oButton1.Model.Label = "Schutz aus"
End If
End Sub

Code eingefügt mit VBA in HTML 2.0

Gruß, René

Text von Schaltfläche zur Laufzeit ändern

von hempelr » So, 18.10.2009 20:35

Nachdem ich mir heut den ganzen Sonntag um die Ohren und Tante Google geschlagen habe, muss ich als absolutes Greenhorn in OO-Basic ne saudämliche Frage stellen.
Es ist eine Schaltfläche in einem Dokument, diese soll je nach Wet eines Feldinhaltes einen anderen Text bekommen.
Dieses Modell von OOo-Basic ist mir als Script-Programmierer absolut verschlossen, ich begreif das leider absolut nicht ohne ein paar leichte Schläge auf den Hinterkopf.
Hier mal etwas Code (der bis auf die Änderung des Textes der Schaltfläche wunderbar läuft und das macht, was sie soll):

Code: Alles auswählen

sub ButtonProtectBuchliste
	sTabZielName = "Kontenblaetter"
	oDoc = thisComponent.getSheets()
	oAktTab = oDoc.getByName(sTabZielName)
	if oAktTab.getCellByPosition(2,12).string = "Bericht gesperrt" then
		On Error Resume Next
		oAktTab.unprotect("pw")
		On Error Goto 0
		oAKtTab.getCellByPosition(2,12).string = "Bericht frei"
		'oAktTab.getElementByName("btnProtectBuchliste").Title = "Schutz ein"
	else
		oAktTab.getCellByPosition(2,12).string = "Bericht gesperrt"
		On Error Resume Next
		oAktTab.protect("pw")
		On Error Goto 0
	    'oAktTab.getElementByName("btnProtectBuchliste").Title = "Schutz aus"
	end if
end sub
Wie kann man den Button ansprechen und seine Eigenschaften ändern, er ist einfach in Dokument oberhalb eines Bereiches, welcher einen Datenpilot enthält, in einer Zelle positioniert.

Danke für Hilfe...

Nach oben