📄 cclassinfo.class
字号:
' Gambas class filePUBLIC Name AS StringPUBLIC Parent AS StringPUBLIC Symbols AS CollectionPUBLIC Creatable AS BooleanPUBLIC AutoCreatable AS BooleanPUBLIC Component AS StringPUBLIC ParentComponent AS StringPUBLIC DefaultEvent AS StringPUBLIC Events AS String[]PUBLIC PropertyList AS String[]PUBLIC Properties AS CollectionPUBLIC VirtualControl AS BooleanPUBLIC SUB _new(sName AS String, OPTIONAL sParent AS String) DIM hSym AS CSymbolInfo Name = sName Parent = sParent Symbols = NEW Collection(gb.Text) IF Parent THEN ParentComponent = CComponent.Classes[sParent].Component FOR EACH hSym IN CComponent.Classes[sParent].Symbols Symbols[hSym.Name] = hSym NEXT ENDIFENDPUBLIC SUB InitControl(hWin AS Form) DIM aProp AS String[] DIM sProp AS String DIM hProp AS CPropertyInfo DIM hSym AS CSymbolInfo DIM hCtrl AS Object IF NOT Symbols.Exist("_Properties") THEN RETURN IF CComponent.All[Component].Type = "Form" THEN IF Name = "Form" OR Name = "Control" THEN hCtrl = hWin ENDIF ENDIF IF NOT hCtrl THEN hSym = Symbols["_new"] 'PRINT Name; " -> "; hSym.Signature IF Len(hSym.Signature) AND Left$(hSym.Signature) <> "[" THEN TRY hCtrl = New(Name, hWin) ELSE TRY hCtrl = New(Name) 'PRINT "InitControl: "; Name; " is VIRTUAL" VirtualControl = TRUE ENDIF IF NOT hCtrl THEN hCtrl = NEW Frame(hWin) ENDIF hSym = Symbols["_Properties"] Properties = NEW Collection FOR EACH sProp IN Split(hSym.Value) ' Name could be "xxx=y" hProp = NEW CPropertyInfo(Component, Name, sProp, hCtrl, FALSE, VirtualControl) Properties[hProp.Name] = hProp NEXT DefaultEvent = Symbols["_DefaultEvent"].Value Events = NEW String[] FOR EACH hSym IN Symbols IF hSym.Kind = ":" THEN Events.Add(Mid$(hSym.Name, 2)) ENDIF NEXT Events.Sort ' Modification des propriétés PropertyList = NEW String[] FOR EACH hProp IN Properties PropertyList.Add(hProp.Name) NEXT Properties[CPropertyInfo.EVENT_NAME] = NEW CPropertyInfo(Component, Name, CPropertyInfo.EVENT_NAME, NULL) PropertyList.Add(CPropertyInfo.EVENT_NAME, 0) 'IF Name = "Timer" THEN IF VirtualControl THEN Properties["X"] = NEW CPropertyInfo("", "", "X", hWin, TRUE) PropertyList.Add("X", 1) Properties["Y"] = NEW CPropertyInfo("", "", "Y", hWin, TRUE) PropertyList.Add("Y", 2) ENDIF IF hCtrl <> hWin THEN TRY hCtrl.Delete ENDIFENDPUBLIC FUNCTION GetProperties() AS Collection IF Properties THEN IF Properties.Count THEN RETURN Properties ENDIF ENDIF IF Parent THEN RETURN CComponent.Classes[Parent].GetProperties() ENDIFENDPUBLIC FUNCTION Inherits(sClass AS String) AS Boolean IF Parent = sClass THEN RETURN TRUE IF NOT Parent THEN RETURN FALSE RETURN CComponent.Classes[Parent].Inherits(sClass) END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -