⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fform.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
📖 第 1 页 / 共 3 页
字号:
  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 + -