Urejevalnik modula: Razlika med redakcijama
(Ni razlike)
| |
Redakcija: 10:00, 1. maj 2006
Splošno
Moduli so grupe procedur, napisane v internem jeziku SDMS Basic, ki se uporabljajo za avtomatiziranje določenih postopkov ali izvajanje matematičnih rutin, ki niso del programa. Sintakso jezika je podrobno opisana v referenčnem priročniku.
Vsak modul je sestavljen iz štirih neobveznih delov:
- Definicije globalnih spremenljivk - na začetku definirajte globalne spremenljivke, ki jih boste rabili v modulu,
- Sub OnCreate - procedura, ki se izvrši pred odprtjem aplikacije
- Sub OnDestroy - procedura, ki se izvrši po zaprtju aplikacije
- Procedure in funkcije (Sub in Function)
Na primer:
// Definiranje globalnih spremenljiv Dim A As String Dim B As Long Sub OnCreate ... EndSub Sub OnDestroy ... EndSub Sub Sub1 ... EndSub Function Fun1 (Par1 As String, Par2 As Boolean) As String ... EndFunction
Primer funkcije: želite da se vam poligoni obarvajo glede na površino. V Temo- Polygon-Barva zapišete BarvaPov([Površina grafika]), kar pomeni da se vam bodo poligoni barvali, glede površino in pogoje, ki so navedeni v proceduri BarvaPov.
Function BarvaPov (P As Long) As Long
// Izbor barve glede na površino
Select Case P
Case 0 .. 49 Result = Red
Case 50 .. 99 Result = Green
Case 100 .. 199 Result = Blue
Case 200 .. 299 Result = Yellow
Case 300 .. 399 Result = Purple
Case 400 .. 499 Result = Silver
Case 500 .. 799 Result = Maroon
Case 800 .. 999 Result = Olive
Case 1000 .. 1999 Result = Teal
Case 2000 .. 999999999 Result = Aqua
CaseElse Result = Black
EndSelect
EndFunction
Primer funkcije: številka parcele zapisane v INKAT strukturi ima naslednjo obliko 000120003, kar je dejansko 12/1. Ker nima smisla celotno bazo predelovati, lahko za lep izpis na ekran/ploter uporabimo proceduro, ki iz zapisa 000120003 naredi zapis 12/1. Imenujmo jo ParcVPod. Iz Teme-Besedilo-Polje jo kličemo ParcVPod([PARCSTEV])
Function ParcVPod (R as String) As String
Dim s as string
Dim a1 as string
Dim a2 as string
If StrToInt (R) > 0 Then
If Length (R) < 9 Then
Result = R
Else
a1 = IntToStr(StrToInt(Copy (R,1,5)))
a2 = IntToStr(StrToInt(Copy (R,6,4)))
If StrToInt(a2) > 0 Then
Result = a1 + "/" + a2
Else
Result = a1
EndIF
EndIF
EndIf
EndFunction
Primer procedure: v dialogu dodate gumb, ki vam izpiše na tiskalnik v obliki predhodno kreiranega dialoga. Za izvedbo tega potrebujete proceduro KlikNaPrinter, ki jo kličete s parametri KlikNaPrinter ([ime plasti], "ime poročila")
// Rutina procedur za izpise na printer Sub KlikNaPrinter(T as TLayer,ImeRep as String) Dim TL as TRecordList T.Report.Load (ImeRep) T.Report.ExecuteList(T.ClickedRecords) EndSub