PP

Du er her: Hjem > Og nu til noget helt andet > Programmeringssprog > LibreOffice Basic

LibreOffice Basic

LibreOffice er en kontorpakke som er gratis til hjemmebrug. Den ligner den fremherskende officepakke og er langt hen ad vejen kompatibel med denne.
LibreOffice findes til Windows, Mac og Linux. Det virker ens på alle tre operativsystemer.

LibreOffice er endvidere et godt bud på programmering til grafisk brugergrænseflade, hvis man kan leve med LibreOffice som platform.

Dokumentationen er pt. sparsom.

Man kan forsøge sig med LibreOffice help

Liste over funktioner

Tools library

Bedst er dog at finde Pitonyak's værk om LibreOffice

I det følgende suppleres med nogle ting, jeg har fundet.

Hvor skal filer gemmes?

Hvis filer gemmes under  Mine macroer / Mine dialoger, så kan man ikke distribuere LibreOffice dokumentet med macroerne til andre maskiner, med mindre man eksporterer / importerer de mange moduler, man har skrevet. Det er tidskrævende.

Selv om LibreOffice insisterer på placeringen Mine macroer / Mine dialoger kan det være en god ide at gemme under dokumentet. Det vises herunder. Se dog bemærkningerne i afsnit Dialoger.

ALT og F11 viser macroer. I nedenstående redigeres et dokument ved navn "file.ods". Der er udvidet (trykket på trekant) under file.ods og Standard.

 

 

Records (eller structs, som de hedder i c / c++)

Records kan defineres, men kan IKKE bruges ved tilgang til binære filer, som man kan i VBA (Microsoft Office Visual Bacic for applicatons). Derfor er en større omskrivning ofte nødvendig, hvis man skal flytte et projekt fra VBA. Heldigvis kan man benytte records som parametre i funktions- og procedure kald.

Samme record-definition skal gentages i hver enkelt modul, hvis man lokalt vil definere en variabel af denne type. Man kan benytte records som parametre i funktions- og procedure kald uden denne gentagelse.
Andre konstantrer og variable behøver kun at stå i ét modul. Det er udmærket men stemmer vist ikke helt med beskrivelserne.

Dialoger

Dialoger kan kaldes, selv om de placeres i dokumentet og ikke under Mine dialoger, som LibreOffice insisterer på. Umiddelbart virker det ikke, men der er en hemmelig fidus, nemlig at tilføje dialoglibraries i kaldet. Her er vist, hvordan en dialog ved navn Gebyr, kaldes: 

Dim dm, bonus, beregning, straf As Object
With GlobalScope.BasicLibraries
  If Not .IsLibraryLoaded("Tools") Then .LoadLibrary("Tools")
End With
dm = Tools.ModuleControls.LoadDialog("Standard", "Gebyr", dialoglibraries)

bonus = dm.GetControl("Bonus")
beregning = dm.GetControl("Beregning")
straf = dm.GetControl("Straf")

(og så videre)

dm.Execute()

Det er svært at finde dokumentation, Nogle gange virker følgende, hvis man har en kontrol, her ved navn straf_btn

msgBox straf_btn.Dbg_Properties

Et andet tips er at se i LibreOffice-makroer og -dialoger under Tools. Her er en guldgrube af godbidder. Men se længere fremme.

Kontroller direkte i et ark

Her er et eksempel på, hvordan man kan kontrollere fx en knap direkte i et ark:

    Doc = ThisComponent
    Sheet = Doc.Sheets(0)

' Function getControlModel(oContainer as Object, CName as String)
' Accepts the name of a control and returns the respective control model as object
' The Container can either be a whole document or a specific sheet of a Calc-Document
' 'CName' is the name of the Control

    gebyr = GetControlModel(Sheet, "Gebyr")
    gebyr.Enabled = False
    Select Case rec.enhed
      Case MWh_Hofor, MWh_Frb, MWh_Andre
        gebyr.Enabled = True  ' knappen gebyr kan nedtrykkes og gebyrer kan redigeres
    End Select
    
    n_indberet = antal_indberet(rec)
    aarafslut = GetControlModel(Sheet, "Afslut")
    If n_indberet = 12 Then
        aarafslut.Enabled = True  ' knappen årsafslut kan nedtrykkes
    Else    
        aarafslut.Enabled = False  ' knappen årsafslut kan ikke nedtrykkes
    End If

Her skal bringes en advarsel: kontroller har IKKE de samme egenskaber og metoder, hvis de hhv er anbragt i en dialog eller direkte i et ark. Eksempelvis Listbox. Alt det gode, der står under Tools biblioteket virker KUN, hvis f.eks. listbox er direkte i et ark, IKKE hvis den er i en dialog.

Dette domæne har tidligere huset et kvalitets- og sagsstyringssystem.
Fremover bruges det til hobby formål.

Powered by CMSimple | Template: ge-webdesign.de | Login

nach oben