Mit
AutoHotkey_H ( ->
letzte version AHK_H v1 ) ist so etwas möglich
Code: Select all
MeineKlasse := new Klasse()
MeineKlasse.edit()
MsgBox % MeineKlasse.Var1
ExitApp
class Klasse
{
; Returns the actual content of the variable
__GET(key){
If this.HasKey("`a" key){
Alias(var,this["`a" key])
return var
} else return ""
}
; Sets the content of actual variable
__SET(key,value:=""){
If this.HasKey("`a" key){
Alias(var,this["`a" key])
return var:=value
} else return ""
}
Add(ByRef _1:="",ByRef _2:="",ByRef _3:="",ByRef _4:="",ByRef _5:="",ByRef _6:="",ByRef _7:="",ByRef _8:="",ByRef _9:="",ByRef _10:=""){
static _AhkVar:="{Int64 ContentsInt64,Double ContentsDouble,PTR object},{char *mByteContents,LPTSTR CharContents},{UINT_PTR Length,Klasse.Add(_AHKVar) *AliasFor},{UINT_PTR Capacity,UINT_PTR BIV},BYTE HowAllocated,BYTE Attrib,BYTE mScope,BYTE Type,LPTSTR Name"
,var:=Struct(_AhkVar)
while IsByRef(_%A_Index%) ; for each passed variable backup var pointer and the name + index in separate aray
var[]:=getvar(_%A_Index%),ObjInsert(this,"`a" var.AliasFor.name,var.AliasFor["",""])
}
edit() {
static Var1
this.Add(var1)
Gui,KlassenEditGui: Add,Edit,vVar1, ; die Zeile ist die interessante!
Gui,KlassenEditGui: Add,Button,Default,Speichern
Gui,KlassenEditGui: Show,,Edit der Klassenvariable
WinWaitClose, Edit der Klassenvariable
return
KlassenEditGuiButtonSpeichern:
Gui,KlassenEditGui: Submit
return
}
}
Ansonsten kann man das auch so umsetzen:
Code: Select all
MeineKlasse := new Klasse()
MeineKlasse.edit()
MsgBox % MeineKlasse.Var1
ExitApp
class Klasse
{
__Get(key){
return this.Edit(key)
}
edit(key:="") {
static Var1
If key
return %key%
Gui,KlassenEditGui: Add,Edit,vVar1, ; die Zeile ist die interessante!
Gui,KlassenEditGui: Add,Button,Default,Speichern
Gui,KlassenEditGui: Show,,Edit der Klassenvariable
WinWaitClose, Edit der Klassenvariable
return
KlassenEditGuiButtonSpeichern:
Gui,KlassenEditGui: Submit
return
}
}
Vergiss nicht, Klasse ist auch nur ein Object den du nicht mit
Klasse := ... überschreiben solltest.