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

📄 ctablevieweditor.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
字号:
' Gambas class fileEVENT Save(Row AS Integer, Column AS Integer, Data AS String)EVENT Click()EVENT Change()EVENT Data(Row AS Integer, Column AS Integer)EVENT Create()PRIVATE $hTableView AS TableViewPRIVATE $hComboBox AS ComboBoxPRIVATE $hTextBox AS TextBoxPRIVATE $hTextArea AS TextAreaPRIVATE $hPanel AS PanelPRIVATE $sText AS StringPRIVATE $iRow AS IntegerPRIVATE $iColumn AS IntegerPRIVATE $hCurrent AS ObjectPRIVATE $bIgnore AS BooleanPRIVATE $bIgnoreScroll AS BooleanPRIVATE $bMandatory AS BooleanPRIVATE $bTrim AS BooleanPRIVATE $iMaxHeight AS IntegerPUBLIC SUB _new(hTableView AS TableView)  DIM hCont AS Container  $hTableView = hTableView  hCont = hTableView.Parent  $hPanel = NEW Panel(hCont)  $hPanel.Raise  $hTextBox = NEW TextBox($hPanel) AS "Editor"  $hTextBox.Border = FALSE  $hTextBox.Font = hTableView.Font  $iMaxHeight = $hTextBox.Font.Height("X") + 2  $hComboBox = NEW ComboBox($hPanel) AS "Editor"  $hComboBox.Font = hTableView.Font  $hTextArea = NEW TextArea($hPanel) AS "Editor"  $hTextArea.Border = FALSE  $hTextArea.Font = hTableView.Font  $hPanel.Background = $hTextBox.Background  Object.Attach($hTableView, ME, "TableView")  HideEditorENDPUBLIC FUNCTION MoveTo(iRow AS Integer, iCol AS Integer) AS Boolean  IF iCol < 0 THEN    DEC iRow    iCol = $hTableView.Columns.Count - 1  ELSE IF iCol >= $hTableView.Columns.Count THEN    INC iRow    iCol = 0  ENDIF  IF iRow < 0 THEN RETURN TRUE  IF iRow >= $hTableView.Rows.Count THEN RETURN TRUE  IF HideEditor() THEN RETURN TRUE  $bIgnore = TRUE  $hTableView[iRow, iCol].EnsureVisible  $hTableView.MoveTo(iRow, iCol)  RAISE Change  $bIgnore = FALSE  $bIgnoreScroll = TRUEENDPUBLIC FUNCTION SaveEditor() AS Boolean  DIM sNewText AS String  DIM bCancel AS Boolean  DIM sText AS String  IF $hCurrent THEN    sNewText = $hCurrent.Text    IF $bTrim THEN sNewText = Trim(sNewText)    IF sNewText <> $sText THEN      IF NOT sNewText THEN        IF $bMandatory THEN          Message.Warning(("This field cannot be void."))          $hCurrent.Text = $sText          GOTO _ERROR        ENDIF      ENDIF      'PRINT "SaveEditor: "; $hCurrent.Text      RAISE Save($iRow, $iColumn, $hCurrent.Text) AS bCancel      IF bCancel THEN GOTO _ERROR      LoadEditor      $hCurrent.Text = $sText    ENDIF  ENDIF  RETURN_ERROR:  $bIgnore = TRUE  $hTableView.MoveTo($iRow, $iColumn)  $hTableView.Current.EnsureVisible  $hCurrent.Text = $sText  SetFocus  $bIgnore = FALSE  RETURN TRUEENDPRIVATE FUNCTION HideEditor() AS Boolean  IF $hCurrent THEN    IF NOT $hPanel.Visible THEN RETURN    IF SaveEditor() THEN RETURN TRUE  ENDIF  $hTextBox.Hide  $hComboBox.Hide  $hTextArea.Hide  $hPanel.Hide  $hCurrent = NULL  '$hTableView.MoveTo(-1, -1)  RETURNENDPUBLIC FUNCTION Hide() AS Boolean  RETURN HideEditor()ENDPRIVATE FUNCTION MoveEditor() AS Boolean  IF NOT $hCurrent THEN RETURN  WITH $hTableView.Current    $hPanel.Move($hTableView.X + .X, $hTableView.Y + .Y, .W, .H)    IF $hCurrent = $hTextArea THEN      $hCurrent.Move(0, 0, .W, .H)    ELSE      $hCurrent.Move(0, 0, .W, Min(.H,$iMaxheight))    ENDIF  END WITH  WITH $hPanel    IF .X < ($hTableView.X + $hTableView.Rows.Width) THEN RETURN TRUE    IF .Y < ($hTableView.Y + $hTableView.Columns.Height) THEN RETURN TRUE    IF (.X + .W) >= ($hTableView.X + $hTableView.W) THEN RETURN TRUE    IF (.Y + .H) >= ($hTableView.Y + $hTableView.H) THEN RETURN TRUE  END WITHENDPRIVATE SUB LoadEditor()  $hTableView.Current.Refresh  $sText = $hTableView.Current.Text  'PRINT "LoadEditor: "; $sTextENDPRIVATE FUNCTION ShowEditor() AS Boolean  IF NOT $hCurrent THEN RETURN  IF MoveEditor() THEN    $hPanel.Hide    $hCurrent.Hide    $hCurrent = NULL  ELSE    $hCurrent.Show    $hPanel.Show    $hPanel.Raise  ENDIFENDPUBLIC SUB Resize()  'ShowEditor  HideEditorENDPUBLIC FUNCTION ShowTextBox(OPTIONAL bMandatory AS Boolean, OPTIONAL bTrim AS Boolean, OPTIONAL iMaxLength AS Integer) AS Boolean  IF HideEditor() THEN RETURN TRUE  LoadEditor  $hTextBox.Text = $sText  $hTextBox.MaxLength = iMaxLength  $iRow = $hTableView.Row  $iColumn = $hTableView.Column  $hCurrent = $hTextBox  ShowEditor  SetFocus  $bMandatory = bMandatory  $bTrim = bTrimENDPUBLIC FUNCTION ShowTextArea(OPTIONAL bMandatory AS Boolean, OPTIONAL bTrim AS Boolean) AS Boolean  IF HideEditor() THEN RETURN TRUE  LoadEditor  $hTextArea.Text = $sText  $iRow = $hTableView.Row  $iColumn = $hTableView.Column  $hCurrent = $hTextArea  ShowEditor  SetFocus  $bMandatory = bMandatory  $bTrim = bTrimENDPUBLIC FUNCTION ShowComboBox(sList AS String, OPTIONAL bMandatory AS Boolean, OPTIONAL bTrim AS Boolean) AS Boolean  IF HideEditor() THEN RETURN TRUE  LoadEditor  $hComboBox.ReadOnly = FALSE  $hComboBox.MaxLength = 0  $hComboBox.ReadOnly = bMandatory  $hComboBox.List = sList  $hComboBox.Text = $sText  $iRow = $hTableView.Row  $iColumn = $hTableView.Column  $hCurrent = $hComboBox  MoveEditor  $hComboBox.Visible = TRUE  $hPanel.Show  SetFocus  $bMandatory = bMandatory  $bTrim = bTrimENDPUBLIC SUB Editor_KeyPress()  SELECT Key.Code    CASE Key.Esc      LAST.Text = $sText      TRY LAST.Selection()    CASE Key.Left      IF NOT $hCurrent.ReadOnly THEN        IF $hCurrent.Pos > 0 THEN          RETURN        ENDIF      ENDIF      MoveTo($hTableView.Row, $hTableView.Column - 1)      STOP EVENT    CASE Key.Right, Key.Return, Key.Enter      IF NOT $hCurrent.ReadOnly THEN        IF $hCurrent.Pos < $hCurrent.Length THEN          RETURN        ENDIF      ENDIF      IF MoveTo($hTableView.Row, $hTableView.Column + 1) THEN        RAISE Create()      ENDIF      STOP EVENT    CASE Key.Up      MoveTo($hTableView.Row - 1, $hTableView.Column)      STOP EVENT    CASE Key.Down      MoveTo($hTableView.Row + 1, $hTableView.Column)      'Key.Cancel = TRUE      STOP EVENT    CASE Key.PageUp      MoveTo($hTableView.Row - 10, $hTableView.Column)      STOP EVENT    CASE Key.PageDown      MoveTo($hTableView.Row + 10, $hTableView.Column)      STOP EVENT    CASE Key.Home      IF Key.Control THEN        MoveTo(0, 0)      ENDIF    CASE Key.End      IF Key.Control THEN        MoveTo($hTableView.Rows.Count - 1, $hTableView.Columns.Count - 1)      ENDIF  END SELECTENDPRIVATE SUB SetFocus()  TRY $hCurrent.SetFocusENDPUBLIC SUB TableView_Change()  IF $bIgnore THEN RETURN  IF NOT $hTableView.Visible THEN RETURN  IF $hTableView.Row < 0 THEN    PRINT "TableView_Change: Row < 0"    RETURN  ENDIF  IF HideEditor() THEN RETURN  $bIgnore = TRUE  RAISE Change  $bIgnore = FALSEENDPUBLIC SUB TableView_Data(Row AS Integer, Column AS Integer)  RAISE Data(Row, Column)  'IF $sCharset THEN  '  $hTableView.Data.Text = Conv($hTableView.Data.Text, $sCharset, Desktop.Charset)  'ENDIFENDPUBLIC SUB TableView_Scroll()  IF $bIgnoreScroll THEN    $bIgnoreScroll = FALSE    RETURN  ENDIF  ShowEditor  'HideEditorENDPUBLIC SUB TableView_Resize()  HideEditorENDPUBLIC SUB Editor_Click()  SaveEditorENDPUBLIC SUB Editor_Activate()  SaveEditorENDPUBLIC SUB Close()  Object.Detach($hTableView)  $hTableView = NULLENDPUBLIC SUB TableView_MouseDown()  HideEditorEND'PUBLIC SUB TableView_MouseUp(X AS Integer, Y AS Integer, Button AS Integer)PUBLIC SUB TableView_Click()  RAISE Click  IF NOT $hCurrent THEN    IF $hTableView.Row >= 0 THEN      TableView_Change    ENDIF  ENDIFENDPUBLIC SUB Editor_GotFocus()  TRY LAST.Selection()ENDPUBLIC SUB TableView_Delete()  $hTableView = NULL  $hComboBox = NULL  $hTextBox = NULL  $hTextArea = NULL  $hPanel = NULLEND

⌨️ 快捷键说明

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