📄 fform.class
字号:
ArrangeContainer(NULL, Arrange.LeftRight)ENDPUBLIC SUB mnuArrangeTopBottom_Click() ArrangeContainer(NULL, Arrange.TopBottom)ENDPRIVATE FUNCTION GetSortKey(hCtrl AS Control, iArr AS Integer) AS String DIM sKey AS String SELECT CASE iArr CASE Arrange.Horizontal sKey = Format(hCtrl.X, "000000") & Format(hCtrl.W, "000000") CASE Arrange.Vertical sKey = Format(hCtrl.Y, "000000") & Format(hCtrl.H, "000000") CASE Arrange.TopBottom sKey = Format(hCtrl.X, "000000") & Format(hCtrl.Y, "000000") & Format(hCtrl.W, "000000") & Format(hCtrl.H, "000000") CASE Arrange.LeftRight sKey = Format(hCtrl.Y, "000000") & Format(hCtrl.X, "000000") & Format(hCtrl.H, "000000") & Format(hCtrl.W, "000000") END SELECT RETURN sKeyENDPRIVATE SUB ArrangeContainer(hParent AS Container, iArr AS Integer, OPTIONAL bRec AS Boolean = TRUE) DIM X AS Integer DIM Y AS Integer DIM aPos AS NEW String[] DIM sPos AS String DIM hCtrl AS Control DIM hCCtrl AS CControl DIM hCont AS Container DIM aCtrl AS NEW Object[] IF hParent THEN FOR EACH hCtrl IN hParent.Children IF hCtrl.Tag THEN aCtrl.Add(hCtrl) NEXT ELSE IF Selection.Count >= 2 THEN FOR EACH hCCtrl IN Selection aCtrl.Add(hCCtrl.Control) NEXT ELSE ArrangeContainer(Control[Name].Control, iArr) RETURN ENDIF IF aCtrl.Count = 0 THEN RETURN FOR EACH hCtrl IN aCtrl IF bRec THEN TRY hCont = hCtrl IF NOT ERROR THEN ArrangeContainer(hCtrl, iArr) ENDIF ENDIF aPos.Add(GetSortKey(hCtrl, iArr)) NEXT IF aPos.Count = 0 THEN RETURN aPos.Sort(gb.Descent) FOR EACH sPos IN aPos FOR EACH hCtrl IN aCtrl IF GetSortKey(hCtrl, iArr) = sPos THEN hCtrl.Lower BREAK ENDIF NEXT NEXT FFormStack.RefreshAll ModifyENDPUBLIC SUB mnuSave_Click() SaveENDPUBLIC SUB mnuDelete_Click() DeleteSelectionENDPUBLIC SUB mnuCopy_Click() CopySelection UnSelectAllENDPUBLIC SUB mnuPaste_Click() PasteSelectionENDPUBLIC SUB mnuCut_Click() CopySelection DeleteSelectionENDPRIVATE SUB ResetSave() $sSave = "" $iSaveX = 0 $iSaveY = 0 '$iIndent = 0 $iSaveLevel = 0ENDPUBLIC SUB mnuMenu_Click() FMenu.Run(ME)ENDPRIVATE FUNCTION GetEditor() AS FEditor DIM sPath AS String sPath = File.Dir(Path) &/ File.BaseName(Path) & ".class" RETURN Project.Files[sPath]ENDPRIVATE SUB GotoEventMethod(hCtrl AS CControl, sEvent AS String) DIM sPath AS String DIM sGroup AS String IF NOT hCtrl THEN hCtrl = Control[Name] sPath = File.Dir(Path) &/ File.BaseName(Path) & ".class" IF hCtrl.Kind = "Form" THEN sGroup = "Form" ELSE sGroup = hCtrl.GetGroup() ENDIF Project.OpenFile(sPath) Project.Files[sPath].GotoEvent(sGroup, sEvent, FExplorer.TransformSignature(CComponent.Classes[hCtrl.Kind].Symbols[":" & sEvent].Signature, FALSE))ENDPUBLIC SUB Control_DblClick() DIM sEvent AS String DIM hCurrent AS CControl DIM sGroup AS String hCurrent = Control[LAST.Tag] sEvent = CComponent.Classes[hCurrent.Kind].DefaultEvent IF NOT sEvent THEN RETURN GotoEventMethod(hCurrent, sEvent)ENDPUBLIC SUB Menu_Click() Control_DblClickENDPRIVATE SUB CreateMenu() DIM hCtrl AS CControl DIM hMenu AS Menu DIM cCtrl AS NEW String[] DIM sName AS String DIM cSymbol AS Collection DIM hSymbol AS CSymbolInfo DIM sGroup AS String mnuSelect.Children.Clear FOR EACH hCtrl IN Control sName = hCtrl.Name IF sName <> Name THEN IF hCtrl.Kind <> "Menu" THEN cCtrl.Add(sName) ENDIF ENDIF NEXT mnuSelect.Enabled = cCtrl.Count cCtrl.Sort(gb.Text) FOR EACH sName IN cCtrl hMenu = NEW Menu(mnuSelect) AS "mnuControl" hMenu.Text = sName NEXT mnuEvent.Visible = FALSE IF NOT $bReadOnly THEN IF Master THEN cCtrl = CComponent.Classes[Master.Kind].Events sGroup = Master.GetGroup() ELSE cCtrl = CComponent.Classes["Form"].Events sGroup = "Form" ENDIF IF cCtrl THEN mnuEvent.Children.Clear cSymbol = CComponent.GetClassSymbols(Name) FOR EACH sName IN cCtrl hMenu = NEW Menu(mnuEvent) AS "mnuEvent" hMenu.Text = sName hSymbol = cSymbol[sGroup & "_" & sName] IF hSymbol THEN IF hSymbol.Kind = "m" THEN hMenu.Checked = TRUE ENDIF NEXT mnuEvent.Visible = TRUE ENDIF ENDIF RefreshMenuENDSUB RefreshMenu() DIM bOn AS Boolean bOn = NOT IsNull(Master) AND NOT $bReadOnly mnuCut.Enabled = bOn mnuCopy.Enabled = bOn mnuDelete.Enabled = bOn mnuLower.Enabled = bOn mnuRaise.Enabled = bOn bOn = Selection.Count >= 2 AND NOT $bReadOnly mnuAlign.Enabled = bOn mnuPaste.Enabled = CanPaste() AND NOT $bReadOnly mnuMenu.Enabled = NOT $bReadOnly mnuArrange.Enabled = NOT $bReadOnly 'mnuPaste.Enabled = CanPaste()' IF Master THEN' bOn = Master.IsContainer()' ELSE' bOn = TRUE' ENDIF 'mnu.ArrangeSep.Visible = bOn 'mnuArrangeHor.Enabled = bOn 'mnuArrangeVer.Enabled = bOnENDSUB SelectionChange() $bSelChange = TRUE RefreshMenuENDPUBLIC SUB mnuControl_Click() UnselectAll Control[LAST.Text].Select(ME, TRUE) RefreshPropertyENDPUBLIC SUB mnuEvent_Click() GotoEventMethod(Master, LAST.Text)ENDPUBLIC SUB Rename(sNewName AS String, sNewPath AS String) DIM hCtrl AS CControl hCtrl = Control[Name] Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) hCtrl.Rename(sNewName) Modify ME.Save DrawTitleENDPUBLIC SUB mnuShowProperty_Click() FProperty.ShowENDPUBLIC SUB mnuShowCode_Click() Project.OpenFile(Name)ENDPUBLIC SUB Control_Draw(OPTIONAL iIndex AS Integer) DIM hForm AS Form DIM X AS Integer DIM Y AS Integer DIM SX AS Integer DIM SY AS Integer DIM SXF AS Integer DIM SYF AS Integer DIM iMod AS Integer DIM DX AS Integer DIM DY AS Integer IF LAST.Tag <> Name THEN TRY Draw.Picture(Picture["img/control" &/ LCase(Control[LAST.Tag].Kind) & ".png"], 4, 4) Draw.ForeColor = Color.Black Draw.Text(LAST.Tag, 44, 4) Draw.LineStyle = LINE.Dot 'Draw.LineWidth = 2 Draw.Rect(0, 0, LAST.W, LAST.H) RETURN ENDIF IF NOT Project.ShowGrid THEN RETURN hForm = LAST.Parent 'IF hForm.Picture THEN ' Draw.Picture(hForm.Picture, 0, 0) 'ENDIF 'PRINT Draw.Clip.X; Draw.Clip.Y; Draw.Clip.Width; Draw.Clip.Height DX = Project.Snap WHILE (DX < 4) DX = DX + Project.Snap WEND DY = Project.Snap WHILE (DY < 4) DY = DY + Project.Snap WEND SX = Draw.Clip.X iMod = SX MOD DX IF iMod THEN SX = SX + DX - iMod SY = Draw.Clip.Y iMod = SY MOD DY IF iMod THEN SY = SY + DY - iMod SXF = Draw.Clip.X + Draw.Clip.Width - 1 SYF = Draw.Clip.Y + Draw.Clip.Height - 1 'SX = 0 'SY = 0 'SXF = ME.ClientW - 1 'SYF = ME.ClientH - 1 FOR X = SX TO SXF STEP DX FOR Y = SY TO SYF STEP DY Draw.Point(X, Y) NEXT NEXTENDPUBLIC SUB Refresh() Control[Name].Control.RefreshENDPUBLIC SUB Form_Hide() 'PRINT "Hide: "; Name Project.Deactivate(ME)ENDPUBLIC SUB Form_Show() 'PRINT "Show: "; Name FProperty.RefreshAll FFormStack.RefreshAllENDPUBLIC SUB Control_Data(Row AS Integer, Column AS Integer) IF Row = 0 AND Column = 0 THEN LAST.Data.Text = Control[LAST.Tag].Name 'LAST.Data.Picture = Picture["img/16/image.png"] ENDIFENDPUBLIC SUB mnuSelectAll_Click() DIM hChild AS Control DIM hCtrl AS CControl DIM bFirst AS Boolean UnselectAll bFirst = TRUE FOR EACH hChild IN Control[Name].Control.Children hCtrl = Control[hChild.Tag] IF IsNull(hCtrl) THEN CONTINUE 'panel hCtrl.Select(ME, bFirst) $bSelChange = TRUE bFirst = FALSE NEXT IF $bSelChange THEN SelectionChange ENDIFENDPUBLIC SUB mnuAlignTop_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.Y FOR EACH hCtrl IN Selection hCtrl.Move(hCtrl.Control.X, iPos) NEXTENDPUBLIC SUB mnuAlignBottom_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.Y + Master.Control.H FOR EACH hCtrl IN Selection hCtrl.Move(hCtrl.Control.X, iPos - hCtrl.Control.H) NEXTENDPUBLIC SUB mnuAlignLeft_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.X FOR EACH hCtrl IN Selection hCtrl.Move(iPos, hCtrl.Control.Y) NEXTENDPUBLIC SUB mnuAlignRight_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.X + Master.Control.W FOR EACH hCtrl IN Selection hCtrl.Move(iPos - hCtrl.Control.W, hCtrl.Control.Y) NEXTENDPUBLIC SUB mnuAlignWidth_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.W FOR EACH hCtrl IN Selection hCtrl.Resize(iPos, hCtrl.Control.H) NEXTENDPUBLIC SUB mnuAlignHeight_Click() DIM iPos AS Integer DIM hCtrl AS CControl iPos = Master.Control.H FOR EACH hCtrl IN Selection hCtrl.Resize(hCtrl.Control.W, iPos) NEXTENDPRIVATE SUB SetReadOnly() $bReadOnly = Project.ReadOnly OR Project.Running RefreshMenuENDPUBLIC SUB OnProjectChange() SetReadOnlyENDPUBLIC SUB mnuStack_Click() FFormStack.ShowENDPUBLIC SUB Form_Open() 'IF $bActivate THEN RETURN Project.SetFormIcon(ME) '$bActivate = TRUEEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -