Seite 1 von 1

[gelöst] Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Fr 26. Aug 2016, 14:47
von Acco
Liebe LO Freunde,

mit einem Makro möchte ich in einem Formular einer eingebetteten Datenbank eine Schaltflächen-Beschriftung ändern.
In LO 4.1.6.2 funktioniert das einwandfrei, jetzt in LO 5.1.4.2 nicht mehr.

Hier der Makroauszug:

Code: Alles auswählen

oSBrief = oSubForm.getByName("SF_SBrief")
oSBrief.label = "Brief" + chr(13) + "starten"
xray oSBrief
Xray liefert unter der Eigenschaft "Label" richtigerweise "Brief starten" (als Zweizeiler, wie es sein soll).
Nur die Beschriftung der Schaltfläche ändert sich nicht.

Ich habe nirgends einen Hinweis gefunden, das da bei LO etwas geändert wurde. Daher bitte ich um eure Hilfe, ob es möglicherweise ein Bug ist, oder doch nur ein Fehler von mir.

Gruß acco

Re: Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Fr 26. Aug 2016, 15:22
von RobertG
Hallo Acco,

ich habe eine sehr ähnliche Konfiguration: OpenSUSE 42.1, 64bit und LO 5.1.5.2. Dort funktioniert das Umschalten des Labels ohne Probleme. Allerdings weiß ich nicht den Code rund um Deinen Auszug. Ich habe es so probiert:

Code: Alles auswählen

SUB Schaltflaeche(oEvent AS OBJECT)
	oSBrief = oEvent.Source.Model
	oSBrief.label = "Brief" + chr(13) + "starten"
END SUB
... und das an die Schaltfläche mit "Aktion ausführen" gehängt. Sobald die Schaltfläche geklickt wird ändert sich die Beschriftung.

Gruß

Robert

Re: Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Fr 26. Aug 2016, 17:28
von Acco
Hallo Robert,

danke für die schnelle Antwort. Dein Code funktioniert. Ich habe ihn in einem neuen Formular ausprobiert, in dem es nur die Schaltfläche gibt.

Allerdings interessiert mich, wieso der von mir verwendete Code nicht mehr funktioniert. Hier ist er komplett. Er ist an Optionsfelder gebunden unter "Aktion ausführen".

Code: Alles auswählen

SUB RechFelder_unsichtbar
	DIM oDoc AS OBJECT
	DIM oForm AS OBJECT
	DIM oSubForm AS OBJECT
	DIM oRechNr_sichtbar AS OBJECT
	DIM oRechNr_Beschrift_sichtbar AS OBJECT
	DIM oBF_letztRechNr_sichtbar AS OBJECT
	DIM oController AS OBJECT	
	DIM oRechNr_View AS OBJECT	
	DIM oRechNr_Beschrift_View AS OBJECT
	DIM oBF_letztRechNr_View AS OBJECT
	DIM nOptFeld_1 AS INTEGER
	DIM nOptFeld_2 AS INTEGER
	DIM nOptFeld_3 AS INTEGER		 	
	
	oDoc = ThisComponent
	oForm = oDoc.Drawpage.Forms.getByName("MainFormKurs")
	oSubForm = oForm.getByName("SubFormSerienbrief")

' Optionsfeld "Was wird geschrieben" auslesen	
	nOptFeld_1 = oForm.getByName("OptFeld_1").currentvalue
	nOptFeld_2 = oForm.getByName("OptFeld_2").currentvalue
	nOptFeld_3 = oForm.getByName("OptFeld_3").currentvalue
	
	IF nOptFeld_1 = 1 THEN sBriefauswahl = "zzRechnung_A5.ott"
	IF nOptFeld_2 = 1 THEN sBriefauswahl = "zzRechnung_ A4.ott"
	IF nOptFeld_3 = 1 THEN sBriefauswahl = "zzBrief_A4.ott"

' Formularfelder unsichtbar machen, wenn keine Rechnung geschrieben wird
	oRechNr_sichtbar = oForm.getByName("formRechNr")
	oRechNr_Beschrift_sichtbar = oForm.getByName("BFRech")
	oBF_letztRechNr_sichtbar = oForm.getByName("BF_letztRechNr")
	oController = oDoc.getCurrentController()
	oRechNr_View = oController.getcontrol(oRechNr_sichtbar)
 	oRechNr_Beschrift_View = oController.getcontrol(oRechNr_Beschrift_sichtbar)
	oBF_letztRechNr_View = oController.getcontrol(oBF_letztRechNr_sichtbar) 	
 
	IF sBriefauswahl <> "zzBrief_A4.ott" THEN
 	'Felder sichtbar machen
		oRechNr_View.Visible = True
 		oRechNr_Beschrift_View.Visible = True
 		oBF_letztRechNr_View.Visible = True 	
 		
' bis hierher funktioniert alles, nur die Beschriftung in LO 5.1... nicht mehr
  
 		' Beschriftung Schaltfläche ändern
 		oSubForm.getByName("SF_SBrief").label = "Rechnung" + chr(13) + "starten"
    Else
    'Felder unsichtbar machen
		oRechNr_View.Visible = False
 		oRechNr_Beschrift_View.Visible = False
		oBF_letztRechNr_View.Visible = False 		
		
' auch hier funktioniert es nicht mehr
 		' Beschriftung Schaltfläche ändern
 		oSubForm.getByName("SF_SBrief").label = "Brief" + chr(13) + "starten" 		
    End If
END SUB
Falls Du Zeit und Muße hast mal drüberzugucken freu ich mich.

Gruß acco

Re: Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Fr 26. Aug 2016, 18:29
von RobertG
Hallo Acco,

ich habe das in einer Datenbank nachgebaut: 3 Optionsfelder im Hauptformular, einen Button ins Unterformular. Das Ändern des Buttoninhaltes geht.

Mich irritiert etwas die unterschiedliche Benennung der Optionsfelder. Wenn ich das damit zusammen baue, dann schalten die Felder ja nicht zurück, wenn ich auf ein zweites Optionsfeld gehe. Ich kann also jede Option maximal einmal drücken - anschließend sind alle Optionen ausgelöst.

Richtig zum Laufen habe ich das nur gebracht, indem ich das auslösende Object abgefragt habe und davon dann den RefValue, nicht also CurrentValue oder auch State. Aber auch mit der anderen Variante änderte sich, wie beschrieben, die Schrift auf dem Button.

Die Unsichtbarschaltungen habe ich nicht mit rein genommen.

Gruß

Robert

Re: Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Fr 26. Aug 2016, 21:23
von Acco
Hallo Robert,

vielen Dank für Deine Hilfe. Dein Code funktionierte erstmal nicht, dann aber prima. Und meiner auch.

Folgendes ist der Grund:
Von der Schaltfläche die jetzt per Makro umbenannt werden soll, habe ich aus Bequemlichkeit seinerzeit eine Kopie gemacht, mit neuem Titel versehen, sowie mit einem anderen Makro belegt. Weil ich diese neue Funktion doch nicht brauchte, habe ich diese Schaltfläche damals auf unsichtbar geschaltet - und vergessen.

Der Name der beiden Schaltflächen ist aber identisch geblieben. Nun das verblüffende was ich nicht verstehe:
In LO 4.1... wird die gewünschte Schaltfläche geändert, in LO 5.1.... jedoch die Unsichtbare. Die gleichnamige sichtbare Schaltfläche blieb unverändert. Mit löschen der überflüssigen Schaltfläche war das Problem behoben. Sehr kurios das.

Gelernt habe ich trotzdem was über Optionsfelder, dafür nochmals Dank.

Gruß acco

Re: [gelöst] Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Sa 27. Aug 2016, 09:32
von RobertG
Hallo Acco,

ich muss noch einmal überprüfen, ob da tatsächlich ein Unterschied besteht. Als ich zuerst Dein Makro mit Optionsfeldern umsetzen wollte las das Makro grundsätzlich nur den Wert des ersten Feldes aus - weil bei kombinierten Optionsfeldern eben alle gleich lauten. Ist ja bei Datenbankbezug auch kein Problem: Alle Felder beschicken das gleiche Datenfeld. Ohne Bezug auf ein Datenfeld sorgt das hingegen für Verwirrung. Nur: Was ist ein Bug, und was wäre korrekt?

Gruß

Robert

Re: [gelöst] Schaltfläche lässt sich nicht mehr umbenennen

Verfasst: Sa 27. Aug 2016, 12:55
von Acco
Hallo Robert,

als Bug würde ich es nicht bezeichnen, der Code macht was er soll.

Einzig weshalb er immer nur eine der gleichnamigen Schaltflächen umbenennt und dazu je nach LO- Version eine andere, ist mir nicht einleuchtend. Naja, "it's not a bug, it's a feature" hat an anderer Stelle mal eine von mir nicht sonderlich geschätzte Softwareschmiede behauptet.

Gruß acco