home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / envelop / envelop.5 / Tools / Bootcamp / advanced / dbsample / dbsample.eto < prev    next >
Text File  |  1996-07-08  |  16KB  |  527 lines

  1. Type datasamp From Application
  2.   Dim AccessControl As New ACL
  3. End Type
  4.  
  5. Type OptionGroupMaster
  6.   Type Buttons From Form
  7.     Property Value Get getValue Set setValue As String
  8.     Dim OptButton1 As New OptionGroupMaster.OptButton
  9.     Dim OptButton2 As New OptionGroupMaster.OptButton
  10.     Dim OptButton3 As New OptionGroupMaster.OptButton
  11.  
  12.     ' METHODS for object: OptionGroupMaster.Buttons
  13.     Sub AddValue(codex as String, Caption As String)
  14.       dim newobj as OptionGroupMaster.OptButton
  15.       newobj = EmbedObject(Me, OptionGroupMaster.OptButton, UniqueEmbedName(Me, "OptButton"))
  16.       newobj.Caption = Caption
  17.       newobj.codex = codex
  18.       Resize()
  19.     End Sub
  20.  
  21.     Function FindValue(value As String) As Integer
  22.       dim i as integer
  23.       For i = 0 To Controls.Count - 1
  24.         If (Controls(i).codex = value) Then FindValue = i : Exit Function
  25.       Next i
  26.     
  27.       Throw ValueNotFound
  28.     End Function
  29.  
  30.     Function getValue() As String
  31.       dim i as integer
  32.       For i = 0 To Controls.Count - 1
  33.         If Controls(i).Value Then 
  34.           getValue = Controls(i).codex
  35.           Exit Function
  36.         End If
  37.       Next i
  38.     End Function
  39.  
  40.     Sub RemoveValue(value As String)
  41.       dim i as integer
  42.     
  43.       ' This call will throw if value is not found.
  44.       i = FindValue(value)
  45.     
  46.       ' Maintain a reference to the object in the group, to control destruction
  47.       ' during RemoveAt phase.
  48.       DestroyObject(Controls(i))
  49.       Resize()
  50.     End Sub
  51.  
  52.     Sub Resize()
  53.       dim i as integer
  54.       dim top, newheight as single
  55.       If Controls.Count = 0 Then Exit Sub
  56.     
  57.       top = 60
  58.       newheight = ((ScaleHeight - top) / Controls.Count) - 30
  59.     
  60.       For i = 0 To Controls.Count - 1
  61.         Controls(i).Move(0, top, ScaleWidth, newheight)
  62.         top = top + newheight
  63.       Next i
  64.       Refresh
  65.     End Sub
  66.  
  67.     Sub setValue(sval as String)
  68.       dim i as integer
  69.       For i = 0 To Controls.Count - 1
  70.         If (Controls(i).codex = sval) Then 
  71.           Controls(i).Value = True
  72.           Exit Sub
  73.         Else 
  74.           Controls(i).Value = False
  75.         End If
  76.       Next i
  77.     End Sub
  78.  
  79.     Sub Update(ByVal value As String)
  80.       Value = Trim(value)
  81.     End Sub
  82.  
  83.     Sub UpdateDataControl(value As String)
  84.       value = Value
  85.     
  86.     End Sub
  87.  
  88.     Sub UpdateDataSource(value As String)
  89.       value = Value
  90.     End Sub
  91.  
  92.   End Type
  93.   Type OptButton From OptionButton
  94.     Dim codex As String
  95.  
  96.     ' METHODS for object: OptionGroupMaster.OptButton
  97.     Sub Click()
  98.       ' If any new value is picked by a Value Option Button mark container as changed.
  99.       If Parent Then Parent.DataChanged = True
  100.     End Sub
  101.  
  102.     Sub DragStart(xfd As XferData, x As Single, y As Single)
  103.       xfd.ObjectRef = Parent
  104.       xfd.Drag 7
  105.     End Sub
  106.  
  107.   End Type
  108. End Type
  109.  
  110. Type EmployeeForm From SampleMasterForm
  111.   Dim OptionGroup As New OptionGroupMaster.Buttons
  112.   Dim Label1 As New Label
  113.   Dim Label2 As New Label
  114.   Dim Label3 As New Label
  115.   Dim Label4 As New Label
  116.   Dim TxtEmployeeID As New TextBox
  117.   Dim TxtDepartment As New TextBox
  118.   Dim TxtName As New TextBox
  119.   Dim TxtSalary As New TextBox
  120.   Dim BtnNew As New Button
  121.   Dim BtnDelete As New Button
  122.   Dim BtnUpdate As New Button
  123.   Dim DataControl1 As New DataControl
  124.   Dim Frame1 As New Frame
  125.   Type IndentedList1 From IndentedList
  126.     Dim font1 As New Font
  127.   End Type
  128.   Dim Label5 As New Label
  129.   Dim Label6 As New Label
  130.  
  131.   ' METHODS for object: EmployeeForm
  132.   Sub BtnDelete_Click()
  133.     Dim response As Integer
  134.     response = YesNoBox.Message("Delete?", "OK to remove current employee record?")
  135.     If response = 6 Then 
  136.       Dim eid, did As String
  137.       eid = TxtEmployeeID.Text
  138.       did = TxtDepartment.Text
  139.   
  140.       With DataControl1.RecordSet
  141.         If Not .EOF Or Not .BOF Then 
  142.           .Delete
  143.           .MoveNext
  144.           If .EOF Then .MovePrev
  145.         End If
  146.       End With
  147.       DataControl1.RecordSet.UpdateAll()
  148.       ' Need to check and possibly update the indented list if entry is selected
  149.       If IndentedList1.ListIndex <> -1 Then 
  150.         ' Determine if selected entry is an employee entry
  151.         If IndentedList1.ItemIcon(IndentedList1.ListIndex) = 2 Then 
  152.           ' Determine if the indented list line entry is the same as displayed record
  153.           If Trim(Left(IndentedList1.ItemString(IndentedList1.ListIndex), 5)) = eid Then 
  154.             ' ok to remove the selected entry
  155.             IndentedList1.RemoveItem(IndentedList1.ListIndex)
  156.             ' Need to see if any more department id's exit and if not, do a PopulateList
  157.             DataControl1.RecordSet.Column(1).FindFirst(did)
  158.             If did <> Trim(DataControl1.RecordSet.Row(DataControl1.RecordSet.CurrentRecordNumber).Column(0).Value) Then 
  159.               PopulateList
  160.             End If
  161.           End If
  162.         End If
  163.       End If
  164.     End If
  165.   End Sub
  166.  
  167.   Sub BtnNew_Click()
  168.     ' Add a new entry to the recordset
  169.     DataControl1.RecordSet.AddNew
  170.   
  171.     ' Need to clear the option buttons
  172.     OptionGroup.OptButton1.Value = True
  173.     OptionGroup.OptButton2.Value = False
  174.     OptionGroup.OptButton3.Value = False
  175.   
  176.     ' Place the type-in point in the Employee ID textbox
  177.     TxtEmployeeID.SetFocus
  178.   End Sub
  179.  
  180.   Sub BtnUpdate_Click()
  181.     ' Need to validate vital employee information
  182.     If TxtEmployeeID.Text = "" Then 
  183.       InfoBox.Message("Warning", "No Employee ID has been entered.")
  184.       Exit Sub
  185.     End If
  186.   
  187.     If TxtDepartment.Text = "" Then 
  188.       InfoBox.Message("Warning", "No Department number has been entered.")
  189.       Exit Sub
  190.     End If
  191.     ' Save the contents of the recordset to disk file
  192.     DataControl1.RecordSet.UpdateAll()
  193.   
  194.     ' Need to update the indented list
  195.     PopulateList
  196.   End Sub
  197.  
  198.   Sub CheckUpdateRecords ()
  199.     ' If the employee ID or department number change, collapse the list
  200.     If TxtEmployeeID.DataChanged || TxtDepartment.DataChanged Then 
  201.       BtnUpdate_Click
  202.     Else 
  203.       ' update the current record in case it has changed
  204.       DataControl1.RecordSet.Update
  205.     End If
  206.   End Sub
  207.  
  208.   Sub IndentedList1_Click()
  209.     Dim icon_type As Integer
  210.     ' Determine the type of icon the item has
  211.     icon_type = IndentedList1.ItemIcon(IndentedList1.ListIndex)
  212.   
  213.     ' If the item is an icon_type = 2, it is an employee
  214.     ' so we need to move the datacontrol to the right employee
  215.     If icon_type = 2 Then 
  216.       Dim eid As String
  217.       Dim i, row As Integer
  218.       ' check the key records to see if list needs to be redone
  219.       CheckUpdateRecords
  220.       ' Get the indented list line entry
  221.       eid = Trim(Left(IndentedList1.ItemString(IndentedList1.ListIndex), 5))
  222.       ' Find the first blank space
  223.       DataControl1.RecordSet.Column(1).FindFirst(eid)
  224.       DataControl1.RecordSet.CurrentRecordNumber = DataControl1.RecordSet.CurrentRecordNumber
  225.     End If
  226.   End Sub
  227.  
  228.   Sub IndentedList1_Collapsed(ByVal itemIndex as Integer, ByVal itemData as Long, itemObj as Object)
  229.     IndentedList1.SetItemIcon(itemIndex, 1)
  230.   End Sub
  231.  
  232.   Sub IndentedList1_Expand(ByVal itemIndex as Integer, ByVal itemData as Long, itemObj as Object)
  233.     Dim i as Integer
  234.     Dim sdept, fdept, eid As String
  235.   
  236.     sdept = IndentedList1.ItemString(itemIndex)
  237.     ' Search the recordset to find all employees in sdept department
  238.     For i = 0 To DataControl1.RecordSet.RowsRead - 1
  239.       fdept = DataControl1.RecordSet.Row(i).Column(0).Value
  240.       If sdept = fdept Then 
  241.         eid = DataControl1.RecordSet.Row(i).Columns(1, 2).Value
  242.         IndentedList1.InsertItem(eid, 2, 1, itemIndex + 1)
  243.       End If
  244.     Next i
  245.     IndentedList1.Reset
  246.   End Sub
  247.  
  248.   Sub PopulateList
  249.     Dim i, j, pos as Integer
  250.     Dim dept As String
  251.     Dim found As Boolean
  252.   
  253.     IndentedList1.Clear
  254.   
  255.     pos = 0
  256.   
  257.     For i = 0 To DataControl1.RecordSet.RowsRead - 1
  258.       dept = DataControl1.RecordSet.Row(i).Column(0).Value
  259.       ' If the item does not already exist, add it
  260.       For j = 0 To IndentedList1.ListCount - 1
  261.         If IndentedList1.ItemString(j) = dept Then 
  262.           found = True
  263.           Exit For
  264.         Else 
  265.           found = False
  266.         End If
  267.       Next j
  268.       If Not found Then 
  269.         pos = pos + 1
  270.         ' IndentedList1.InsertItem(dept, 1, 0, pos - 1)
  271.         ' We use AddItem so we get the benefit of the sorted property
  272.         IndentedList1.AddItem(dept, 1)
  273.   
  274.         ' IndentedList1.SetItemCanExpand(pos - 1, True)
  275.       End If
  276.       found = False
  277.     Next i
  278.   
  279.     ' Set the expand flag on all items in the indented list
  280.     For i = 0 To IndentedList1.ListCount - 1
  281.       IndentedList1.SetItemCanExpand(i, True)
  282.     Next i
  283.   
  284.     IndentedList1.Reset
  285.   End Sub
  286.  
  287.   Sub ResetApplication_Click()
  288.     ' Restore the size of the form
  289.     Height = 6015
  290.     Width = 7170
  291.     ' connect the Data Control to the ASCII Data Source
  292.     DataControl1.RecordSet.Connect = SampleDir & "employee.TXT"
  293.   
  294.     ' Move to the first record
  295.     DataControl1.RecordSet.MoveFirst
  296.   
  297.     ' Populate the department list
  298.     PopulateList
  299.   End Sub
  300.  
  301. End Type
  302.  
  303. Begin Code
  304. ' Reconstruction commands for object: datasamp
  305. '
  306.   With datasamp
  307.     .ModulePath := "C:\ENVELOP\PROGRAM\base.ebo;C:\ENVELOP\PROGRAM\win32.ebo;C:\ENVELOP\PROGRAM\dialogs.ebo;C:\ENVELOP\PROGRAM\tools.ebo;D:\envelop1\bootcamp\concepts\dbsample\dbsample.eto"
  308.     .ProjectFileName := "C:\envelop\temp\datasamp.epj"
  309.     .Path := "C:\envelop\temp\"
  310.     .EXEName := "datasamp"
  311.     With .AccessControl
  312.       .ObjectAccess := "R,W,C,M,P"
  313.     End With  'datasamp.AccessControl
  314.   End With  'datasamp
  315. ' Reconstruction commands for object: OptionGroupMaster
  316. '
  317.   With OptionGroupMaster
  318.     With .Buttons
  319.       .Move(3750, 1275, 1785, 1695)
  320.       .Value := ""
  321.       With .OptButton1
  322.         .Caption := "Active"
  323.         .ZOrder := 2
  324.         .Move(0, 60, 1665, 380)
  325.         .codex := "A"
  326.       End With  'OptionGroupMaster.Buttons.OptButton1
  327.       With .OptButton2
  328.         .Caption := "On Leave"
  329.         .ZOrder := 3
  330.         .Move(0, 440, 1665, 380)
  331.         .codex := "O"
  332.       End With  'OptionGroupMaster.Buttons.OptButton2
  333.       With .OptButton3
  334.         .Caption := "Terminated"
  335.         .ZOrder := 1
  336.         .Move(0, 820, 1665, 380)
  337.         .codex := "T"
  338.       End With  'OptionGroupMaster.Buttons.OptButton3
  339.     End With  'OptionGroupMaster.Buttons
  340.     With .OptButton
  341.       .Move(0, 0, 0, 0)
  342.       .codex := ""
  343.     End With  'OptionGroupMaster.OptButton
  344.   End With  'OptionGroupMaster
  345. ' Reconstruction commands for object: EmployeeForm
  346. '
  347.   With EmployeeForm
  348.     .Caption := "Database Sample: Maintain Employees"
  349.     .Move(4290, 1785, 7170, 6015)
  350.     .SampleDir := "C:\envelop\bootcamp\advanced\dbsample\"
  351.     .SampleName := "dbsample"
  352.     With .OptionGroup
  353.       .DataSource := EmployeeForm.DataControl1.RecordSet
  354.       .DataField := "Status"
  355.       .ZOrder := 15
  356.       .Move(5100, 3000, 1500, 1200)
  357.       .BorderStyle := "None"
  358.       .MaxButton := False
  359.       .ControlBox := False
  360.       .Parent := EmployeeForm
  361.       .Visible := True
  362.       .Value := "A"
  363.       With .OptButton1
  364.         .ZOrder := 1
  365.         .Move(0, 60, 1500, 350)
  366.         .TabStop := True
  367.         .Value := True
  368.       End With  'EmployeeForm.OptionGroup.OptButton1
  369.       With .OptButton2
  370.         .ZOrder := 2
  371.         .Move(0, 410, 1500, 350)
  372.       End With  'EmployeeForm.OptionGroup.OptButton2
  373.       With .OptButton3
  374.         .ZOrder := 3
  375.         .Move(0, 760, 1500, 350)
  376.       End With  'EmployeeForm.OptionGroup.OptButton3
  377.     End With  'EmployeeForm.OptionGroup
  378.     With .Label1
  379.       .Caption := "Employee ID:"
  380.       .ZOrder := 14
  381.       .Move(300, 2850, 1350, 300)
  382.       .Alignment := "Right"
  383.     End With  'EmployeeForm.Label1
  384.     With .Label2
  385.       .Caption := "Department:"
  386.       .ZOrder := 13
  387.       .Move(300, 3300, 1350, 300)
  388.       .Alignment := "Right"
  389.     End With  'EmployeeForm.Label2
  390.     With .Label3
  391.       .Caption := "Name:"
  392.       .ZOrder := 12
  393.       .Move(300, 3750, 1350, 300)
  394.       .Alignment := "Right"
  395.     End With  'EmployeeForm.Label3
  396.     With .Label4
  397.       .Caption := "Salary:"
  398.       .ZOrder := 11
  399.       .Move(300, 4200, 1350, 300)
  400.       .Alignment := "Right"
  401.     End With  'EmployeeForm.Label4
  402.     With .TxtEmployeeID
  403.       .DataSource := EmployeeForm.DataControl1.RecordSet
  404.       .DataField := "EID"
  405.       .ZOrder := 1
  406.       .Move(1950, 2850, 750, 345)
  407.       .MaxLength := 5
  408.     End With  'EmployeeForm.TxtEmployeeID
  409.     With .TxtDepartment
  410.       .DataSource := EmployeeForm.DataControl1.RecordSet
  411.       .DataField := "Dept"
  412.       .ZOrder := 2
  413.       .Move(1950, 3300, 750, 345)
  414.       .MaxLength := 5
  415.     End With  'EmployeeForm.TxtDepartment
  416.     With .TxtName
  417.       .DataSource := EmployeeForm.DataControl1.RecordSet
  418.       .DataField := "Name"
  419.       .ZOrder := 3
  420.       .Move(1950, 3750, 2550, 345)
  421.       .MaxLength := 20
  422.     End With  'EmployeeForm.TxtName
  423.     With .TxtSalary
  424.       .DataSource := EmployeeForm.DataControl1.RecordSet
  425.       .DataField := "Salary"
  426.       .ZOrder := 4
  427.       .Move(1950, 4200, 1350, 345)
  428.       .MaxLength := 10
  429.     End With  'EmployeeForm.TxtSalary
  430.     With .BtnNew
  431.       .Caption := "New"
  432.       .ZOrder := 10
  433.       .Move(5100, 600, 1650, 450)
  434.       .TabStop := False
  435.     End With  'EmployeeForm.BtnNew
  436.     With .BtnDelete
  437.       .Caption := "Delete"
  438.       .ZOrder := 9
  439.       .Move(5100, 1200, 1650, 450)
  440.       .TabStop := False
  441.     End With  'EmployeeForm.BtnDelete
  442.     With .BtnUpdate
  443.       .Caption := "Update"
  444.       .ZOrder := 8
  445.       .Move(5100, 1800, 1650, 450)
  446.       .TabStop := False
  447.     End With  'EmployeeForm.BtnUpdate
  448.     With .DataControl1
  449.       .Caption := "DataControl1"
  450.       .ZOrder := 7
  451.       .Move(300, 4800, 6450, 300)
  452.       .BorderStyle := "None"
  453.       .MinButton := True
  454.       .ControlBox := False
  455.       .Parent := EmployeeForm
  456.       .Visible := True
  457.       With .DataMoveFirst
  458.         .ZOrder := 1
  459.         .Move(0, 0, 806, 300)
  460.       End With  'EmployeeForm.DataControl1.DataMoveFirst
  461.       With .DataMovePrev
  462.         .ZOrder := 2
  463.         .Move(806, 0, 806, 300)
  464.       End With  'EmployeeForm.DataControl1.DataMovePrev
  465.       With .DataMoveNext
  466.         .ZOrder := 3
  467.         .Move(4837, 0, 806, 300)
  468.       End With  'EmployeeForm.DataControl1.DataMoveNext
  469.       With .DataMoveLast
  470.         .ZOrder := 4
  471.         .Move(5643, 0, 806, 300)
  472.       End With  'EmployeeForm.DataControl1.DataMoveLast
  473.       With .DataLabel
  474.         .ZOrder := 5
  475.         .Move(1612, 0, 3225, 300)
  476.       End With  'EmployeeForm.DataControl1.DataLabel
  477.       With .RecordSet
  478.         .DatabaseType := "FixedAscii"
  479.         .Database.FirstLineAsFieldNames := True
  480.         .Database.FieldWidthList := "5, 5, 20, 10, 7"
  481.         .Connect := "C:\envelop\bootcamp\advanced\dbsample\employee.TXT"
  482.       End With  'EmployeeForm.DataControl1.RecordSet
  483.     End With  'EmployeeForm.DataControl1
  484.     With .Frame1
  485.       .Caption := " Status "
  486.       .ZOrder := 16
  487.       .Move(4950, 2700, 1800, 1650)
  488.       .TabStop := False
  489.     End With  'EmployeeForm.Frame1
  490.     With .IndentedList1
  491.       .Caption := "IndentedList1"
  492.       .ForeColor := 0
  493.       .Font := EmployeeForm.IndentedList1.font1
  494.       .ZOrder := 17
  495.       .Move(300, 600, 4500, 1950)
  496.       .TabStop := False
  497.       .IconBitmap := SourceSearcher.bitmap
  498.       .IconHeight := 12
  499.       .IconWidth := 12
  500.       .Sorted := True
  501.       .HighlightStyle := "FullLine"
  502.       With .font1
  503.         .FaceName := "Courier"
  504.         .Size := 12.000000
  505.         .Bold := True
  506.         .Italic := False
  507.         .Strikethru := False
  508.       End With  'EmployeeForm.IndentedList1.font1
  509.     End With  'EmployeeForm.IndentedList1
  510.     With .Label5
  511.       .Caption := "Dept"
  512.       .ForeColor := 16711680
  513.       .ZOrder := 6
  514.       .Move(300, 75, 525, 225)
  515.     End With  'EmployeeForm.Label5
  516.     With .Label6
  517.       .Caption := "EID      Name"
  518.       .ForeColor := 255
  519.       .ZOrder := 5
  520.       .Move(825, 300, 2250, 300)
  521.     End With  'EmployeeForm.Label6
  522.     With .helpfile
  523.       .FileName := "C:\envelop\bootcamp\advanced\dbsample\dbsample.hlp"
  524.     End With  'EmployeeForm.helpfile
  525.   End With  'EmployeeForm
  526. End Code
  527.