第三十讲 窗口的深入 PowerBuild中拖放技术的应用(一) 打印本页  
 
  通过前两讲,现在我们已经知道Windows API的消息传递,这只是Windows API最简单编程。
  在下面的这两讲中,我们将介绍在PowerBuild中拖放技术的应用,拖放具有两个主要的组件:被拖对象和目标对象。我们来结合一个简单的示例程序加以说明。
  
  建立一个新的Application对象,命名为Dragdrop。
  新建一个窗口,命名为w_employee_xfer。
  进入Application对象,打开Script画板的 Open事件,编程:
  SQLCA.DBMS = "ODBC"
  SQLCA.Database = "Powersoft Demo DB V6"
  SQLCA.AutoCommit = False
  SQLCA.DBParm = "ConnectString='DSN=Powersoft Demo DB V6;UID=dba;PWD=sql'"
  CONNECT;
  if SQLca.SQLCode <> 0 then
  show_db_error("网络数据库连接错误")
  halt
  end if
  open(w_employee_xfer)
  选择Close事件,写入语句:
  disconnect;
  打开w_employee_xfer窗口添加控件
  添加TreeView控件并改变属性。
  添加两个CommandButton控件改变其属性。
  制作一个Datawindow命名为d_employees_by_dept。他的数据源是Powersoft Demo DB V6数据库中的employee表。
  w_employee_xfer 的open事件编程:用于初始化TreeView控件,将后台数据按部门连接到TreeView控件的不同“目录中”。
  ids_Source = Create DataStore
  ids_Source.DataObject = "d_emp_by_dept"
  ids_Source.SetTransObject(sqlca)
  Post Event ue_populate()
  TreeViewItem ltvi_Item
  SetPointer(HourGlass!)
  ltvi_Item.label = "R & D"
  ltvi_Item.data = 100
  ltvi_Item.pictureindex = 1
  ltvi_Item.selectedpictureindex = 7
  ltvi_Item.children = True
  tv_1.InsertItemLast(0, ltvi_Item)
  ltvi_Item.label = "Sales"
  ltvi_Item.data = 200
  ltvi_Item.pictureindex = 2
  tv_1.InsertItemLast(0, ltvi_Item)
  ltvi_Item.label = "Finance"
  ltvi_Item.data = 300
  ltvi_Item.pictureindex = 3
  tv_1.InsertItemLast(0, ltvi_Item)
  ltvi_Item.label = "Marketing"
  ltvi_Item.data = 400
  ltvi_Item.pictureindex = 4
  tv_1.InsertItemLast(0, ltvi_Item)
  ltvi_Item.label = "Shipping"
  ltvi_Item.data = 500
  ltvi_Item.pictureindex = 5
  tv_1.InsertItemLast(0, ltvi_Item)
  对窗口w_employee_xfer 的close事件编程:用于删除产生的DataStore
  Destroy ids_Source
  对窗口w_employee_xfer 的resize事件编程:用于当窗口改变大小时重新更改TreeView控件的大小
  tv_1.Height = newheight – 25