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: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org