[GELÖST] Open Office CommandButton per Basic ausblenden

Alles zur Programmierung im OpenOffice.org
Antworten
BlackSeBo
Beiträge: 3
Registriert: Do 3. Nov 2016, 21:56

[GELÖST] Open Office CommandButton per Basic ausblenden

Beitrag von BlackSeBo » Do 3. Nov 2016, 22:31

Hallo erstmal,

ich könnte jetzt damit anfangen das ich weis Gott wie viel angestellt habe um folgendes in OpenOffice zum laufen zu bringen. Und die Suchfunktion nichts relevantes ausgespuckt hat aber damit brauch ich hier denke ich niemanden zu nerven daher komme direkt zu meinem Problem das ich ein Rechnungsdokument ins Excel erstellt habe das auch immer noch ausgebaut wird und an dem ich auch schon seit 2 Wochen etwa arbeite (davor hab ich von VBA in Excel nicht einmal gewusst). Ich bin ehrlich und sage vorab ich habe nie gerne mit Excel gearbeitet und stand sogar kurz davor meinem Chef das Office für den einen "freien" PC zu spendieren da, und ich denke da werden mir wohl einige zustimmen, es einfach bedeutend einfacher ist damit umzugehen gerade wenn es um so was großes geht. Ja ich weis Excel/Calc ist nicht das Rechnungstool das man einem gerade empfiehlt aber leider sind in jedem Geschäft insgesamt 8 je 2 bis 4 PC's und davon wenn überhaupt einer Frei und somit laufen bis auf den je einen Freien nur MS Office auf den Dingern und was anderes lässt sich da auf Grund von verschiedenen Sperren nicht installieren und die Freien haben zu 60% scheinbar kein MS Office installiert (was zugegebenerweise Traurig für so ein Geschäft ist) aber na gut dachte ich bin der neue als zeig ich denen mal wie ne Richtige rechnung aussehen sollte (was die bisher verwendet haben war absolut schrecklich).

Also nachdem ich euch alle ja doch noch mit was anderem Genervt habe hier mein Problem

In Excel hab ich eine Rechnung mit verschiedenen Inhalten und insgesamt 4 auf einmal Sichtbaren Buttons.

1. Button ------> Speichern und Drucken + Fortlaufende Nummer + Dateiname aus 2 zusammengesetzten Zellen (man war das ein Theater das zu übersetzen)
2. Button -------> Öffnen eines Rechnungsdokuments anhand der Eingegebenen Rechnungsnummer (öffnet die Datei mit der selben Nummer im Namen wie im Feld der Rechnungsnummer)
3. & 4. Button -------> Auch gennant "Zeile +" & "Zeile -" die aufgabe dieser Buttons ist ganz einfach denn das Grundsätzliche problem was ich von anfang an hatte war die Anzahl an Positionen die die Rechnung haben sollte und um da Flexibel zu sein habe ich ganz einfach 12 Positionen erstellen und alle bis auf die 1. Position ausgeblendet( ich weis ist ein bisschen arg lausich aber es funktioniert) die Buttons habe eben je entweder eine Zeile wieder eingeblendet oder eben wieder ausgeblendet. So das TUT auch ist NICHT das Problem.
.
Mein Problem eigentlich eher ein Optischer da ich es so programmiert hatte das sobald ich z.B. Button1(Anklicken) = Button2(Enable)->Button1(Invisible)->Button3(Visible) ----- und anstelle des Button1 mit "Zeile +" erschien Button3 mit "Zeile +" und für den enverbrauch (Meine Kollegen) sieht alles so aus als wärs nichts großes.

passiert ist und genau das krieg ich einfach nicht auf die reihe in Open Office.

Ich Poste hier mal den Code für die Ersten 3 Button aus Excel falls ihr die Kommplette datei braucht um mir (wenn überhaupt) zu helfen dann lade ich die gerne hoch das selbe gilt natürlich für meine halb fertige Open Office Version dieser datei.

Code: Alles auswählen

Option Explicit

Private Sub CommandButton1_Click()
    Rows("28:29").Select
    Selection.EntireRow.Hidden = False
    Tabelle1.CommandButton1.Visible = False
    Tabelle1.CommandButton2.Enabled = True
    Tabelle1.CommandButton3.Visible = True
    
End Sub

Private Sub CommandButton2_Click()
    Rows("28:29").Select
    Selection.EntireRow.Hidden = True
    Tabelle1.CommandButton1.Visible = True
    Tabelle1.CommandButton2.Enabled = False
    Tabelle1.CommandButton3.Visible = False
End Sub

Private Sub CommandButton3_Click()
    Rows("30:31").Select
    Selection.EntireRow.Hidden = False
    Tabelle1.CommandButton2.Visible = False
    Tabelle1.CommandButton3.Visible = False
    Tabelle1.CommandButton4.Visible = True
    Tabelle1.CommandButton5.Visible = True
End Sub
Ich lasse mich gerne belehren ich habe erst vor 2 Wochen angefangen mit solchen dingen zu arbeiten und dies ist meine erste Frage die ich stelle da ich alle anderen aus bisher bereits gestellten Fragen selbst beantworten konnte aber ich habe wirklich nichts was für mich wirklich relevant wäre bzw. Funktionieren würde in der aktuellen version gefunden weder hier noch in Google( da komischerweise so gut wie garnicht auch nach mehrfachem umformulieren der frage)

Mit freundlichen Grüßen
Semih Balci
Zuletzt geändert von BlackSeBo am Di 8. Nov 2016, 00:16, insgesamt 1-mal geändert.

Benutzeravatar
craig
Beiträge: 112
Registriert: Sa 14. Mai 2016, 12:36

Re: Open Office CommandButton per Basic ausblenden

Beitrag von craig » Fr 4. Nov 2016, 00:50

Hallo,

die Basic-IDE hat eine Übersetzungsroutine für VBA-Makros.
Dazu muss folgender Eintrage an oberster STelle in das Modulblatt eingegeben werden:

Code: Alles auswählen

Option VBASupport 1
ABER. nicht alles läuft perfekt :!:

Hiermal ein Ansatz für das Ansprechen eines Buttons:

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit

Sub VisibleButton
Dim oDoc as Object
Dim oCC as Object
Dim oSheet as Object
Dim mButton(2) as Variant
Dim i as Integer

	' Referenz aktives Dokument
	oDoc=ThisComponent
' mri oDoc

	' Referenz Tabellenblatt
	oSheet=oDoc.Sheets().getByName("Tabelle1")

' mri oSheet
' mri oSheet.DrawPage.Forms.getByIndex(0)


	' Die Schaltfläche mit allen Eigenschaften, Methoden, Interfaces, usw.
	' in ein Objekt-Array laden
	for i = 0 to 2
		mButton(i)=oSheet.DrawPage.Forms.getByIndex(0).getByIndex(i)
	next i
'mri mButton(1)

REM Schaltfläche 1
' mButton(0).EnableVisible=false

REM Schaltfläche 2
' mButton(1).EnableVisible=false

REM Schaltfläche 3
' mButton(2).EnableVisible=false
	Msgbox " Der Code funktioniert bis hierhin :)",64,"Test Test Test"
End Sub
3 Buttons.ods
Beispieldatei mit dem abgebildeten Code
(54.66 KiB) 55-mal heruntergeladen
Bei Ausführung werden die Buttons in ein Objekt-Arrray geladen.
Es müssen jedoch zuvor andere Objekte geladen werden, verhält im Prinzip wie eine Pfadangabe.
Du musst auch wissen, dass ein OO Dokument (Writer und Calc) quasi aus verschiedenen Ebenen besteht.
Die Textebene und die Zeichnungsebene(u.a.)
Der Textinhalt der einzelnen Zellen liegt auf der Textebene.
Alle Zeichnungsobjekte auf der Zeichnungsebene(Drawpage)
Da die Buttons Zeichnungsobjekte sind, muss im Code der Pfad zur Drawpage angegeben werden,
damit man die Buttons ansprechen kann.
mButton(i)=oSheet.DrawPage.Forms.getByIndex(0).getByIndex(i)
Es muss aber bis zum erreichen der Buttons noch auf dies verwiesen werden:
Forms.getByIndex(0)
Entspricht den Formularsteuerelementen.

Jetzt stehst Du vor einem gewissen Problem. In der VBA-IDE werden Dir, im linken Fenster
die Eigenschaften für die Objekte angezeigt und oben im Fenster kannst Du über die Combobox die Events auswählen.
Beides fehlt bei OO.
Es gibt hierfür zwei Tools(Extensions): MRIund XRAY
Diese Tools kann man beim Start von OO gleich mitladen lassen.
Bei XRAY ist in deutsch beschrieben, wie man XRAY richtig lädt. MRI lädt man auf die Gleicheweise.
Dann stehen diese einem für die Programmierung direkt zur Verfügung.

Im obigen Code siehst Du einige auskommentierte Zeilen z.B.
' mri oDoc
Wenn Du MRI installiert und aktiviert hast, kannst Du das Hochkomma entfernen und den Code ausführen.
Es wird MRI starten und alle Informationen anzeigen, die das Objekt oDoc bzw. ThisComponent zur Verfügung stellt.

Anfänglich wird dies sehr verwirrend, scheinbar unbrauchbar vorkommen.
Mit ein wenig Übung wirst Du erkennen wie wertvoll dieses, bzw. diese Tools sind.
Beispiel:
  • MRI zeigt Dir das Fenster zum Objekt oDoc an. Dann klicke auf das Register "Properties".
  • Suche den Eintrag: Sheets
  • Das Fenster schaltet in den nächsten Modus. Wähle hier Register "Methods" aus.
  • Suche nach dem Eintrag: getByName
  • Doppelklick darauf, es wird Dir eine Auswahl von Tabellenblattnamen angezeigt.
  • Klicke auf eines dieser Blattnamen.
  • Schalte auf "Properties" um und suche nach dem Eintrage "Name" weiter rechts in
    derselben Zeile steht der gewählte Blattname.
Im Code steht dies:

Code: Alles auswählen

oSheet=oDoc.Sheets().getByName("Tabelle1")
Damit befindet sich nun das Objekt Tabellenblatt("Tabelle1") in der Objektvariablen oSheet.

Jetzt kannst Du mittels MRI auch auf die Eigenschaften, Methoden, Services, Interfaces. usw.
Halt alles, was die Entwickler diesem Objekt in seiner Grundausstattung mitgegeben haben.
Also immer in Pfadeangaben denken, hat mir zumindest geholfen mich besser zu orientieren.

Noch ein Hinweis.
Es gibt Interfaces(Schnittstellen) und diverse andere Dinge, die einem Objekt nicht unmittelbar
zur Verfügung stehen. Einem Sheet, bzw. einem Zellbereich kann man nicht in jedem Fall einen
äusseren Rahmen und inneren Rahmen per Code verpassen. Es muss zuvor eine weitere Struktur
geladen werden, der diese Eigenschaften verarbeiten kann. Auch da sind MRI und XRAY behilfch,
denn sie zeigen die einem an was erforderlich ist:

Code: Alles auswählen

BottomBorder       .table.BorderLine      -STRUCT-       148
Suchbegriff Google: OpenOffice "table.BorderLine"

So, jetzt hab ich hoffentlich nicht zuviel Blödsinn gekritzelt :lol:

Viel Spass beim Programmieren...

Gruß

Craig
Gruß

Craig
═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.3 • LO 5.2.4.2

BlackSeBo
Beiträge: 3
Registriert: Do 3. Nov 2016, 21:56

Re: Open Office CommandButton per Basic ausblenden

Beitrag von BlackSeBo » Fr 4. Nov 2016, 10:42

Hallo craig,

ich danke dir erstmal für deine ausführliche und erstaunlich frühe antwort(bin kurz vorher ins bett gegangen) du hast bereits einige dinge angesprochen die ich so zwar schon verwende und mir mehr oder weniger denken konnte aber halt dennoch nicht genau wusste ich bin gerade bei der arbeit und arbeite auch gerade wieder an der tabelle in OO ich werde mir die besagten tools gleich mal laden und schauen wie weit ich komme ich melde mich wenns geklappt hat und denke das ich das fertige dokument in blanko (also ohne Firmenangaben) hier Reinstellen werde denn wenn ich es hinkriege und alles klappt wird das denke ich anderen evtt. doch ne menge zeit sparen.

UPDATE! 08.10.2016: Ich habe das Problem mit den Buttons endlich gelöst (schon vor ein Paar Tagen :D ) und gehen nun an die Formeln die in dieser Rechnung zum einsatz kommen denn diese müssen ja auch übersetzt werden ich werden (wenn es diese Funktion hier hat ) diesen beitrag als gelöst Markieren und im nachhinein die Fertige Rechnungsdatei aber noch hier reinsetzten.
Ich möchte Craig sehr für seine Ausführlich hilfe danken (diese funktion gibt es auch nicht?) und vor allem das er sich tatsächlich diesen Aufsatz von mir durchgelesen und sich mein Problem angesehen hat.


Mit freundlichen Grüßen
BlackSeBo | Semih Balci

BlackSeBo
Beiträge: 3
Registriert: Do 3. Nov 2016, 21:56

Re: [GELÖST] Open Office CommandButton per Basic ausblenden

Beitrag von BlackSeBo » Fr 11. Nov 2016, 14:48

Soo es ist soweit,

ich habe die Rechnung nun endlich fertiggestellt soweit nachdem ich endlich mal wieder zeit gefunden habe.

Es ist definitiv nicht die Schönste oder umfangreichste und ich werde diese wohl mit der zeit noch erweiter sowohl in Excel als auch in Cal mit den verschiedensten Funktionen (z.B. Barcode Datenbank, Artikelnummern, Kundendatenbank, Kunden Nr. usw.)

aber Sie reicht aus um dem kunden vorerst eine mehr oder weniger vernünftig wirkende Rechnung aushändigen zu können.

Ich habe übrigens die Sensibleren Daten ersetzt durch einfache beispieleinträge also nicht wundern :)

Ich will jetzt nicht direkt drum bitten und es ist auch ganz egal aber ich würde mich drüber freuen wenn man kurz schreiben würde ob meine Beispieldatei nun geholfen hat oder nicht.

Aber auch (und das wäre mir eigentlich wirklich wichtig) über kritik und ähnliches würde ich mich freuen wie ich etwas hätte besser machen können egal an welchem punkt.
BeispielRechnung.ods
(21.45 KiB) 70-mal heruntergeladen
Mit freundlichen Grüßen
Semih Balci

Antworten