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

📄 fcompletion.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
字号:
' Gambas class filePRIVATE $iCol AS IntegerPRIVATE $sText AS StringPRIVATE $bLoaded AS BooleanPUBLIC SUB RefreshLibrary()  $bLoaded = FALSEENDPRIVATE FUNCTION GetEditor() AS GambasEditor  DIM hForm AS FEditor  hForm = ME.Window  RETURN hForm.EditorENDPUBLIC SUB Open(OPTIONAL sClass AS String, OPTIONAL bStatic AS Boolean, OPTIONAL bPrivate AS Boolean)  DIM hEditor AS GambasEditor  DIM iX AS Integer  DIM iY AS Integer  IF Len(sClass) = 1 THEN RETURN  hEditor = GetEditor()  INC Application.Busy  IF sClass THEN    FillWithSymbol(sClass, bStatic, bPrivate)  ELSE    FillWithClasses  ENDIF  IF lvwComp.Count = 0 THEN    DEC Application.Busy    RETURN  ENDIF  ME.Height = (ME.Font.Height(" ") + 2) * Min(8, lvwComp.Count) + 4  'PRINT "Open: $hEditor = "; $hEditor  $iCol = hEditor.Column + 1  lvwComp.MoveFirst  lvwComp.Item.Selected = TRUE  lvwComp.Item.EnsureVisible  iX = hEditor.X + hEditor.CursorX  IF Key.Code = Key.Backspace THEN    iX = iX - hEditor.Font.Width(Mid$(hEditor.Lines[hEditor.Line], hEditor.Column, 1))  ELSE    iX = iX + hEditor.Font.Width(Key.Text)  ENDIF  iX = Min(iX, ME.Window.ClientW - ME.Width)  iY = hEditor.Y + hEditor.CursorY + hEditor.LineHeight  IF (iY + ME.Height) > (hEditor.Y + hEditor.H) THEN    iY = hEditor.Y + hEditor.CursorY - ME.Height  ENDIF  ME.Move(iX, iY)  ME.Show  ME.Raise  DEC Application.BusyENDPUBLIC SUB FillWithClasses()  DIM sClass AS String  DIM sLib AS String  DIM aClass AS String[]  DIM iType AS Integer  DIM hPic[3] AS Picture  'IF $bLoaded THEN RETURN  lvwComp.Clear  aClass = [ "Boolean0", "Byte0", "Short0", "Integer0", "Float0", "Date0", "String0", "Object0", "Variant0" ]  CComponent.All["gb"].Load  FOR EACH sClass IN Project.GetClasses()    aClass.Add(sClass & "1")    'TRY lvwComp.Add(sClass, sClass)  NEXT  FOR EACH sLib IN Split("gb," & Project.Libraries.Join(","))    IF NOT CComponent.All.Exist(sLib) THEN CONTINUE    CComponent.All[sLib].Load    FOR EACH sClass IN CComponent.All[sLib].ClassList      IF Left$(sClass) <> "." THEN        IF CComponent.Classes[sClass].Properties THEN          aClass.Add(sClass & "2")        ELSE          aClass.Add(sClass & "1")        ENDIF      ENDIF    NEXT  NEXT  aClass.Sort(gb.Text)  hPic[0] = Picture["img/16/gambas.png"]  hPic[1] = Picture["img/16/class.png"]  hPic[2] = Picture["img/16/control.png"]  FOR EACH sClass IN aClass    iType = Val(Right$(sClass))    sClass = Left$(sClass, -1)    TRY lvwComp.Add(sClass, sClass, hPic[iType])  NEXT  $bLoaded = TRUEENDPUBLIC SUB FillWithSymbol(sClass AS String, bStatic AS Boolean, bPrivate AS Boolean)  DIM cSymbol AS Collection  DIM hSymbol AS CSymbolInfo  DIM aSymbol AS NEW String[]  DIM sSymbol AS String  DIM sName AS String  DIM hClass AS CClassInfo  lvwComp.Clear  cSymbol = CComponent.GetClassSymbols(sClass)  IF NOT cSymbol THEN RETURN  hClass = CComponent.Classes[sClass]  IF hClass THEN    IF hClass.AutoCreatable THEN bStatic = FALSE  ENDIF  FOR EACH hSymbol IN cSymbol    IF Left$(hSymbol.Name) = "_" THEN CONTINUE    IF hSymbol.Kind = ":" THEN CONTINUE    IF hSymbol.NotPublic THEN CONTINUE    IF bStatic THEN      IF UCase(hSymbol.Kind) <> hSymbol.Kind THEN        CONTINUE      ENDIF    ENDIF    aSymbol.Add(hSymbol.Name)  NEXT  aSymbol.Sort(gb.Text)  FOR EACH sSymbol IN aSymbol    hSymbol = cSymbol[sSymbol]    TRY lvwComp.Add(sSymbol, sSymbol, Picture[hSymbol.GetIcon()])  NEXTEND' PUBLIC SUB Form_Resize()''   'PRINT "Form_Resize: ME.H = "; ME.H; " Me.ClientH =";ME.ClientH'   panComp.Move(0, 0, ME.ClientW, ME.ClientH)'   lvwComp.Move(1, 1, panComp.W - 2, panComp.H - 2)'' ENDPUBLIC SUB Form_Hide()  $sText = ""ENDPUBLIC FUNCTION ManageKey() AS Boolean  DIM iInd AS Integer  SELECT CASE Key.Code    CASE Key.Up, Key.PageUp      lvwComp.MoveCurrent      IF lvwComp.Item.Selected THEN        FOR iInd = 1 TO If(Key.Code = Key.Up, 1, 8)          IF lvwComp.MoveAbove() THEN BREAK        NEXT      ENDIF      IF NOT lvwComp.Available THEN lvwComp.MoveFirst      lvwComp.Item.Selected = TRUE      lvwComp.Item.EnsureVisible    CASE Key.Down, Key.PageDown      lvwComp.MoveCurrent      IF lvwComp.Item.Selected THEN        FOR iInd = 1 TO If(Key.Code = Key.Down, 1, 8)          IF lvwComp.MoveBelow() THEN BREAK        NEXT      ENDIF      IF NOT lvwComp.Available THEN lvwComp.MoveLast      lvwComp.Item.Selected = TRUE      lvwComp.Item.EnsureVisible    CASE Key.Home      lvwComp.MoveCurrent      IF lvwComp.MovePrevious() THEN        ME.Hide        RETURN      ENDIF      lvwComp.MoveFirst      lvwComp.Item.Selected = TRUE      lvwComp.Item.EnsureVisible    CASE Key.End      lvwComp.MoveCurrent      IF lvwComp.MoveNext() THEN        ME.Hide        RETURN      ENDIF      lvwComp.MoveLast      lvwComp.Item.Selected = TRUE      lvwComp.Item.EnsureVisible    CASE Key.Esc      ME.Hide    CASE Key.Left, Key.Right      ME.Hide      RETURN    CASE Key.Enter, Key.Return, Key.Tab      InsertItem      'IF Key.Code <> Key.Tab THEN RETURN    CASE Key.Space      IF UCase($sText) = "NEW" THEN RETURN      InsertItem(" ")    CASE Key.Backspace      IF $sText THEN        $sText = Left$($sText, -1)        FindItem      ELSE        ME.Hide      ENDIF      RETURN FALSE    CASE ELSE      IF Key.Text THEN        IF Instr("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_", UCase(Key.Text)) THEN          $sText = $sText & Key.Text          FindItem        ELSE IF Instr("([.!", Key.Text) THEN          InsertItem        ELSE          ME.Hide        ENDIF        RETURN FALSE      ENDIF  END SELECT  RETURN TRUEENDPRIVATE SUB FindItem()  DIM sComp AS String  sComp = UCase(Replace($sText, "[", "[[]") & "*")  lvwComp.MoveFirst  DO    IF UCase(lvwComp.Item.Text) LIKE sComp THEN      lvwComp.Item.Selected = TRUE      lvwComp.Item.EnsureVisible      RETURN    ENDIF    IF lvwComp.MoveNext() THEN RETURN  LOOPEND' PUBLIC SUB Form_Activate()''   'PRINT "Form_Activate: $hEditor = "; $hEditor'   TRY $hEditor.SetFocus'' ENDPRIVATE FUNCTION InsertItem(OPTIONAL sAfter AS String) AS Boolean  DIM sText AS String  DIM hEditor AS GambasEditor  TRY sText = lvwComp.Current.Text  IF NOT lvwComp.Current.Selected THEN RETURN  IF NOT sText THEN RETURN TRUE  hEditor = GetEditor()  WITH hEditor    .Frozen = TRUE    .Selection(.ToPos(.Line, $iCol), .Column - $iCol)    .Insert(sText & sAfter)    .Frozen = FALSE  END WITH  ME.HideENDPUBLIC SUB lvwComp_Click()  InsertItemENDPUBLIC SUB lvwComp_KeyPress()  DIM hEditor AS GambasEditor  DIM hForm AS FEditor  'IF Key.Code = Key.Escape THEN ME.Hide  hEditor = GetEditor()  hEditor.SetFocus  hForm = hEditor.Window  hForm.edtEditor_KeyPressEND

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -