熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

PowerBuilder實用技巧八則(二)

2013-11-13 12:36:55  來源: SQL語言 

  數據窗口中實現自動折行

  有時為了界面的考慮需要將一些長字段折行顯示但又不能確保在所有情況下都會出現長字段比如我們要求當客戶地址超過個字符時將它分兩行顯示對於沒滿個字符的客戶仍然按照正常格式顯示

  具體如下

  在數據窗口中選擇要自動折行的列Address

  選擇位置屬性(Position)並選中Autosize Height選項

   選擇編輯屬性(Edit)並去掉Auto Horz Scroll選項

  選擇數據窗口中細目帶的屬性Autosize Height選項注意是當你拖動細目欄時出現的屬性

設置完畢後在左下角預覽窗口中將顯示圖例的結果

  在進行列自動折行顯示的時候還要注意一點系統判斷自動折行的斷點是以空格或標點符號為依據的如果我們輸入一長串字符且中間沒有任何標點符號或空隔的話即使該字符串再長也無濟於事因此我們一定要提醒用戶在錄入時適當的加入一些空格或回車

  數據窗口中記錄顏色的隔層顯示

  相信你一定見過這樣的顯示第一行記錄的背景色是淺黃色第二行記錄的背景色是白色第三行又是淺黃色第四行又是白色……依次類推

  要想讓顯示的數據達到上述效果我們首先要知道的是這些數據存放在數據窗口中的什麼地方很顯然數據窗口中的所有數據是在細目帶中列出的因此只要在細目帶中設置一些數據屬性就會影響到這個細目帶中的所有內容具體實現如下

  打開數據窗口單擊細目帶(Detail)注意是點擊有Detail字的一欄不是它存放數據的地方點擊它鼠標會出現上下小箭頭

  選擇常規屬性單擊顏色屬性(Color)旁邊的一個帶有紅色圖標的小按鈕

  在表達式一欄中輸入

  if ( Mod( GetRow() ) = RGB( RGB( ))

  // RGB( 淺黃色

  OK預欄一下效果不錯大功告成

  實現數據窗口的動態排序

  在用到Windows的資源管理器的時候當我們需要按照文件的類型或名稱排序的時候只要用鼠標點擊一下相應的標題欄系統會按照升序或降序交替排序這完全取決於用戶鼠標點擊的奇偶數如此方便的操作何不用到我們的數據窗口中——實現按某列的動態排序

  為了實現上述功能程序首先需要用到一個全局變量(相對於PB來說可以用窗體變量)用它來控制連續兩次點擊之間的排序方向因為字段的排序方向只有升序和降序兩種所以我們可以用一個Boolean型本例中是Boolean ib_flag接著在數據窗口控件的Clicked事件中寫上如下代碼

  /*****************************程序代碼******************************/
  String ls_column ls_sort
  ls_column = thisGetObjectAtPointer() // 得到鼠標按下位置的對象名
  ls_column = left(ls_column len(ls_column) ) // 得到列標題名字
  if not Lower(right(ls_column )) = _t then return// 如果不是缺省的列標題即以_t結尾或鼠標根本沒有點在列標題上則退出
  ls_column = left(ls_column len(ls_column) ) // 去掉列標題末尾的_t得到有效的列標題名
  // 進行升序和降序的切換
  if ib_flag then
  ls_sort = ls_column + A // 升序
  else
  ls_sort = ls_column + D // 降序
  end if
  ib_flag = not ib_flag // 為下一次排序准備
  ls_sort = ls_sort
  thissetsort(ls_sort)
  thissort()
  /*****************************結束******************************/
  注這裡所敘述的數據窗口中列的動態排序是以系統默認的列標題名為前提即在標題欄中列標題名字是以_t結尾

  八設置系統時間

  在開發具有數據服務器的應用軟件時有時為了使所有計算機的時間都保持相同或者接近相同主要是為了避免數據錄入時出現的時間差異通常我們會在客戶機每次使用應用軟件前將本地時間設置成跟服務器相同從而確保輸入的數據在時間上具有較高的正確性要實現系統時間的設置下面就講述一下實現的過程

  本程序是通過調用外部函數SetSystemTime()實現系統時間的設置該函數返回布爾型查閱一下有關參考手冊就會發現該函數需要一個表示系統時間結構(Struct)的數據類型作為參數此結構的定義如下

  struct _SYSTEMTIME
  {
   INT iYear;
   INT iMonth;
   INT iDayOfWeek;
   INT iDay;
   INT iHour;
   INT iMinute;
   INT iSecond;
   INT iMilliseconds; // 毫秒
  } str_SystemTime;
  
  要在程序中使用外部函數首先需要要進行外部函數聲明可以根據函數的使用范圍放在全局外部函數聲明區或局部外部函數區聲明具體聲明如下

  Function Boolean SetSystemTime(str_SystemTime str_MyTime) Library Kerneldll

  聲明之後就可以使用了下面代碼實現將系統日期設置成

  /*****************************程序代碼******************************/
  str_SystemTime str_MyTime
  // 給結構賦值
  str_MyTimeiYear = //
  str_MyTimeimonth = / /
  str_MyTimeiDay = //
  // 設置系統日期
  if SetSystemTime(ref str_MyTime)then
  Beep(
  MessageBox(提示系統日期設置成功!
  else
  Beep(
  MessageBox(提示系統日期設置失敗!
  end if
  /*****************************結束******************************/
  
  注意如果只有日期沒有時間的話系統會將時間設置成默認的上午點整設置系統的時間方法和設置日期類似只要將結構中的時秒分別設置成想要的就行了


From:http://tw.wingwit.com/Article/program/SQL/201311/16242.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.