Hallo Marino,
eins vorweg: ich bin ebensowenig "Softwareentwickler" wie wohl die meisten in
dieser Liste auch. Deshalb schreibe ich nur Erläuterungen in das, was ich
zusammenstelle, wenn ich selbst befürchte, das eventuell nicht mehr zu
kapieren, wenn ich bei einem Fehler oder einem Verbesserungsversuch später
Änderungen vornehmen will.
Wenn ich etwas erarbeite, was ich von vornherein auch für andere plane, dann
sieht das natürlich anders aus.
Das untenstehende Makro ist vor diesem Hintergrund so natürlich nicht als
Lehrbeispiel vorgesehen ...
Folgendermaßen sieht das bei mir komplett aus, wobei ich im Moment überlege,
ob das so auch sinnvoll ist:
Die Variablen werden global definiert, indem sie nicht in einem SUB stehen:
REM Alle Variablen, die mit "o" beginnen haben den Typ "OBJECT"
REM Alle Variablen, die mit "in" beginnen haben den Typ "INTEGER" (Ganzzahlen)
REM Alle Variablen, die mit "do" beginnen haben den Typ "DOUBLE"
(Dezimalzahlen)
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM inSkonto AS INTEGER
DIM doMWSt AS DOUBLE
DIM doPreis AS DOUBLE
DIM doBrutto AS DOUBLE
SUB Brutto
REM Der Bruttobetrag wird aus den Einträgen in verschiedene
Formularfelder ermittelt und in ein eigenes Formularfeld geschrieben.
oDoc=thisComponent 'Zugriff auf das Writerdokument, das
das
Formular beinhaltet
oDrawpage=oDoc.drawpage 'Zugriff auf die Oberfläche, auf der die
Formularelemente liegen
oForm=oDrawpage.forms.getByName("Artikel") 'Zugriff auf das
Formular,
das den Namen "Artikel" hat
oFeld=oForm.getByName("Brutto") 'Zugriff auf das Formularfeld
"Brutto" des Formulares "Artikel"
REM Die folgenden Felder liegen ebenfalls in dem Formular "Artikel", wie an
dem Bezug "oForm" zu erkennen.
REM Da die Felder sonst nicht im Laufe der SUB-Routine benutzt werden sollen,
wird direkt der Wert ausgelesen.
inSkonto = oForm.getByName("Skonto").CurrentValue
doMWSt = oForm.getByName("MWSt").CurrentValue
doPreis =oForm.getByName("Preis").CurrentValue
REM Berechnung des Bruttopreises aus den obigen Werten
doBrutto = doPreis + doPreis * doMWSt / 100 - (doPreis + doPreis *
doMWSt / 100) * inSkonto / 100
oFeld.BoundField.updateDouble(doBrutto) 'Der Bruttowert wird in das
dafür vorgesehene Feld übertragen
E_Preis_Brutto 'Hier wird eine weitere Prozedur aufgerufen, in der der
Bruttowert auf den Wert für ein einzelnes Teil heruntergerechnet wird ...
END SUB
>
> Was mir bei dieser Programmierung nicht ganz klar ist:
>
> Bei meine Basic- Programmen, die ich erstelle, ist es für mich Gesetz,
> alles was mehrfach benutzt wird in einer Sub anzulegen.
> Was Du in Deinem Beispiel ja auch tust.
>
> *Nur - wie übergibst Du die Parameter?*
Was in einer SUB-Prozedur liegt ist auch nur dort als Variable vorhanden.
Deklariere ich die Variablen am Anfang eines Moduls, so gelten sie für die
ganze Bibliothek. Das kann auch mit dem Begriff "PUBLIC" statt "DIM" deutlich
gemacht werden.
Das wird dann mit der Zeit allerdings recht unübersichtlich. Ich suche mir
manchmal einen Ast nach bereits deklarierten Variablen. Deshalb überlege ich,
nur die fast ununterbrochen benutzten Variablen direkt am Anfang eines Moduls
zu definieren. Dies wären von den obigen Variablen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
Wenn Du von einer Prozedur zur anderen etwas übergeben willst, so musst Du das
beim Aufruf der zweiten Prozedur tun:
SUB Prozedur
ZweiteProzedur("Wert1","Wert2")
END SUB
SUB ZweiteProzedur(Wert1 AS STRING, Wert2 AS INTEGER)
tu dies und das mit Wert1 und Wert2
END SUB
Nur eine Funktion wie
FUNCTION Funktion1
Funktion1 = 3
END FUNCTION
übergibt einen Wert an die aufrufende Instanz zurück.
Gruß
Robert
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]