Script i applikationer den lätta vägen
Förord
Många är väl de som ibland har önskat att kunna låta användare lägga in skript för vissa funktioner i sina program. Det finns ett enkelt och kraftfullt sätt istället för att ägna dagar åt att skapa ett eget skriptspråk.
Microsoft ScriptControl
Det som skall göra jobbet är ScriptControl från Microsoft som gratis kan hämtas från Microsofts sida om man inte redan har den. Länk finns längre ner på sidan.Det fina med ScriptControl är att den stödjer alla installerade, kompatibla språk, t ex VBScript, JScript och Perl.
För att använda en ScriptControl, startar du ett nytt projekt i Visual Basic. Tryck sedan Project, Components (eller tangentkombinationen ctrl+t). Bläddra fram till Microsoft Script Control 1.0 i listan, markera och tryck ok. Lägg till en ScriptControl, en CommandButton med texten "Kör" och en TextBox på form1. Sätt textrutans egenskapen MultiLine till true. Det är i textboxen skriptkällkoden kommer att hamna. Det enda som behöver kodas är när man trycker på Command1. Lägg därför till följande kod i form1:
Private Sub Command1_Click()
Form1.Caption = "Kör skript"
ScriptControl1.Language = "VBScript" 'Skriptspråket som används
ScriptControl1.AddCode Text1.Text 'Lägger in skriptets källkod i ScriptControl
ScriptControl1.Run "main" 'Kör proceduren main i vårt skript
Form1.Caption = "Skript färdigt"
End Sub
Kör programmet. I textrutan skall skriptet skrivas. Enligt koden ovan exekveras proceduren main på skriptet. Skriv då
Sub main()
MsgBox "Det här är mitt skript!"
End Sub
Tryck sedan på knappen för att exekvera skriptet. Ser det bra ut? Det är något som saknas.
Egna procedurer, funktioner och egenskaper
Nu vet du hur man anropar ett skripts procedurer, men trevligt vore det ändå om skriptet kunde ändra något i ditt program. För att göra detta skapar du en tom Class Module från Project-menyn. Lägg sedan till följande kod:
Property Let knapptext(text As String)
Form1.Command1.Caption = text
End Property
Property Get knapptext() As String
knapptext = Form1.Command1.Caption
End Property
Koden lägger till en egenskap som heter knapptext. Property Let skriver egenskapen och Get hämtar den. I detta fallet är det texten på Command1 egenskapen gäller för. Men detta räcker inte, klassmodulen måste läggas in i vår ScriptControl. Därför får du modifiera koden på form1 lite.
Private Sub Command1_Click()
Dim minklass As New class1
Form1.Caption = "Kör skript"
ScriptControl1.Language = "VBScript" 'Skriptspråket som används
ScriptControl1.AddObject "programmet", minklass 'Lägg in Class1
ScriptControl1.AddCode Text1.Text 'Lägger in skriptets källkod i ScriptControl
ScriptControl1.Run "main" 'Kör proceduren main i vårt skript
Form1.Caption = "Skript färdigt"
End Sub
Nu skall skriptet kunna komma åt knappens text med objektet "programmet" som vi valde att den skulle heta vid AddObject och "knapptext" som står i klassmodulen. Kör programmet och prova med skriptet:
Sub main()
programmet.knapptext = programmet.knapptext & " skript"
End Sub
Varje gång "programmet.knapptext" står anropar den vår klass. Resultatet blir att knappen får texten "Kör skript". Snyggt.
Nu kan du förmodligen lägga in skriptfunktioner i dina program. Behöver du hjälp kan du skicka ett imail.
/Ivar Torstensson
0 Kommentarer