pb笔记(三)

 

pb笔记(三)

//常用API函数例解

1.如何使PB窗口总在最上层(Always On Top) 

通过SetWindowPos函数把窗口的显示层次修改为HWNDTOPMOST,就可使指定窗口永远不会被其它窗口覆

盖,该函数声明为: 

Function Long SetWindowPos(Long hwnd,Long ord,Long x,Long y,Long dx,Long dy,Long uflag) Library user32 

参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和

大小,均可忽略。在窗口的OpenActivate事件中加入如下函数调用: 

SetWindowPos(Handle(This),-1,0,0,0,0,3) 

参数2-1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参数若取1,表示窗口大小保持不

变,取2表示保持位置不变,因此,取3(=12)表示大小和位置均保持不变,取0表示将窗口的大小和

位置改变为指定值。 

 

2.在PB中如何获得光盘盘符 

通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映射驱动器等)的信息,该函数

声明为:

Function Uint GetDriveTypeA(String drive) Library kernel32.dll 

参数为一个盘符("C:"),返回值:1表示未知,2表示软驱,3表示本地硬盘,4表示网络驱动器,

5表示光驱。因此如下代码可以获得光盘的盘符: 

For i=Asc(D) to Asc(Z) 

          //列举所有可能的CDROM驱动器 

  If GetDriveTypeA(Char(i)+″:)=5 Then 

                  //若找到CDROM 

                  MessageBox(CDROM,Char(i)+″:) 

                  //显示光盘盘符 

                  Exit //退出列举 

  End If

Next 

 

3.在PB中如何获取目录信息 

⑴获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该函数声明为: 

Function Ulong GetCurrentDirectoryA(Ulong buflen, ref String dir) Library kernel32.dll 

参数2为接收当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。

调用过程为:

String curdir 

curdir=Space(256) 

//为字符缓冲区开辟内存空间 

GetCurrentDirectoryA(256,curdir) 

MessageBox(Current Directory,curdir) 

⑵获取Windows及系统目录。要用到GetWindowsDirectoryGetSystemDirectory两个函数,须作如下声明: 

Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen) Library kernel32.dll 

Function Uint GetSystemDirectoryA(ref String dir,Uint buflen) Library kernel32.dll 

 

4.在PB中如何注销当前用户、关闭计算机、重启计算机 

通过ExitWindowsEx函数可实现这三个功能,首先作如下声明: 

Function Long ExitWindowsEx(Long uflag,Long nouse) Library user32.dll 

参数2保留不用,可取0;参数10可以注销当前用户,取1可以关闭计算机,取2可以重启计算机,其值

再加4表示强制结束"未响应"的进程。 

 

5.控制由Run运行的程序(简称Run程序) 

PB程序设计中,可以用Run()来运行一些程序。比如用户按了F1,就运行一个chm文件。但Run程序无法

PB主程序协调工作,若用户按了多次F1,就会启动Run程序的多个实例,主程序退出时,Run程序依然

运行。可以用如下函数来使它们协调工作: 

Function Ulong FindWindowA(Ulong classname, String windowname) Library user32.dll 

Function Long SetParent(Long childwin,Long parentwin) Library user32.dll 

⑴使Run程序只运行一个实例 

handle=FindWindowA(nul,wtitle) 

//查找Run程序是否已经运行,wtitleRun程序的标题 

IF handle0 Then Return 

//若已经在运行就返回 

Run(C:/Program Files/Joint/Joint.chm) 

//否则运行Run程序 

PB主程序退出时,Run程序也关闭 

handle=FindWindowA(nul,wtitle) 

SetParent(handle,Handle(w—main)) 

//使Run程序窗口成为PB主程序的子窗口 

 

6.映射网络驱动器 

若要在程序中把远程主机的资源映射到本地驱动器,可以用如下函数: 

Function long WNetAddConnectionA(String path,string pwd,String drv) Library mpr.dll 

如下代码可以把远程主机Alexander上的共享文件夹My Documents映射到本地的J盘: 

WNetAddConnectionA(//Alexander/My Documents,″″,J:)//参数2为访问口令 

它的作用相当于在DOS提示符下执行:Net Use J: //Alexander/My Documents 

 

7.显示或隐藏Windows的任务栏 

要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它的窗口类为:

ShellTrayWnd,没有标题,故只能用FindWindowEx函数来取得它的句柄: 

Function long FindWindowEx(long ph, long ch, ref String cn, ref String wn) Library user32 

Function Long ShowWindow(Long hWnd, Long nCmdShow ) Library user32 

ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示: 

handle = FindWindowEx(0,0,ShellTrayWnd, wn)//wn为空串 

ShowWindow(handle,0)//隐藏任务栏 

 

8.如何将长文件名转换为短文件名 

通过GetShortPathName函数可以把长文件名转换为8.3格式,其声明为: 

Function Long GetShortPathNameA(String lf, ref String sf, Long buflen) Library kernel32 

参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如: 

GetShortPathNameA(C:/My Documents/PowerBuilder编程实践.Doc, sf,256)//sf=Space(256) 

 

9.如何在PB中实现延时 

延时函数很有用,PB虽然没有提供,但可以通过Win32Sleep函数来扩展: 

Function Long Sleep(Long ms) Library kernel32 

调用:Sleep(1000)//延时1 

 

10.如何在PB中播放音乐 

PB没有提供任何多媒体函数,要播放音乐只能通过Win32 APIPlaySound来实现: 

Function Long PlaySound(String Filename,Int Mod,Int Flags ) Library winmm.dll 

参数1wav文件名,参数2必须取0,参数31表示后台播放,取8表示循环播放,因此取9(=18)表示在后台循环播放。 

   

11、获得Windows系统目录 

首先声明如下外部函数:

Function uint GetWindowsDirectoryA(ref string dirtext, uint textlen) library "KERNEL32.DLL"

Script如下:

String ls_WinPath 

ls_WinPath = Space( 128 ) 

GetWindowsDirectoryA( ls_WinPath, 128 ) 

 

12、播放AVI文件 

首先声明外部函数如下:

Function uLong SendMessageA(ulong hWnd , ulong wMsg , ulong wParam ,string lParam )             library "user32.dll" 

定义External用户对象uo_comctl_animateDLL名字填入comctl32.dll,类名填入sysanimate32

用户对象实例变量中定义如下常量:

Constant Private Long WM_USER = 1024

Constant Private Long AviFileComp = 101

Constant Private Long AviSearch = 102

Constant Private Long AviFileCopy = 103

Constant Private Long AviDownload = 104

Constant Private Long AviPrinting = 105

Constant Private Long ACM_OPEN = WM_USER + 100

Constant Private Long ACM_PLAY = WM_USER + 101

Constant Private Long ACM_STOP = WM_USER + 102

定义用户对象的函数(播放AVI文件)

of_playavi(readonly string as_avifilename) returns long

SendMessagea(handle(this), ACM_OPEN, 0, as_avifilename)

Return Send(handle(this), ACM_PLAY, -1, 4294901760)

和函数(停止播放)

of_stopplay() returns long

Return Send(Handle(this), ACM_STOP, 0, 0)

接下来,在窗口中新建该用户对象uo_test,调用uo_test.of_playavi("xxx.avi)

uo_test.of_stopplay()即可播放和停止文件名为"xxx.avi”的AVI

 

13.限制应用程序只运行一次 

.声明外部函数如下: 

FUNCTION boolean ShowWindow( ulong winhandle,& int wincommand ) Library "user32" 

FUNCTION boolean BringWindowToTop( ulong HWND )& Library "user32" 

FUNCTION long FindWindowA( ulong Winhandle, & string wintitle ) Library "user32" 

创建一个窗口’w_test . title 设置为"Test Window". 

application Open 事件中加入如下代码: 

long ll_winhandle

ll_winhandle = FindWindowA( 0, "Test Window" ) 

If ll_winhandle > 0 Then 

          BringWindowToTop( ll_winhandle ) 

          ShowWindow( ll_winhandle , 5 ) 

          Return 

End If 

Open( w_test ) 

 

14.将长文件名转换为短文件名 

声明外部函数如下:

function long GetShortPathNameA( string lpLong, ref string lpShort, long lBuff )                         library ’kernel32’ 

定义函数f_Convert( string as_long ), 函数代码如下:

String ls_Buffer 

Long ll_RC 

ls_Buffer = Space( 255 ) 

ll_RC = GetShortPathNameA( as_Long, ls_Buffer, 255 ) 

RETURN ls_Buffer

 

 

//other事件都些什么用

other事件当发生了某个Windows 消息而该消息又不对应于该控件的某个powerBuilder事件时触发;

message.number代表事件的数值编号,该编号由Windows 提供

 

 

//PBSHELL命令

1.命令: rundll32.exe shell32.dll,Control_RunDLL

    功能: 显示控制面板

2.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1

 功能: 显示“控制面板->辅助选项->键盘”选项视窗

3.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2

 功能: 显示“控制面板->辅助选项->声音”选项视窗

4.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3

 功能: 显示“控制面板->辅助选项->显示”选项视窗

5.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4

 功能: 显示“控制面板->辅助选项->鼠标”选项视窗

6.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5

 功能: 显示“控制面板->辅助选项->常规”选项视窗

7.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1

 功能: 执行“控制面板->添加新硬件”向导。

8.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter

 功能: 执行“控制面板->添加新打印机”向导。

9.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1

 功能: 显示 “控制面板->添加/删除程序->安装/卸载” 面板。

10.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2

  功能: 显示 “控制面板->添加/删除程序->安装Windows 面板。

11.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3

 功能: 显示 “控制面板->添加/删除程序->启动盘” 面板。

12.命令: rundll32.exe syncui.dll,Briefcase_Create

  功能: 在桌面上建立一个新的“我的公文包”。

13.命令: rundll32.exe diskcopy.dll,DiskCopyRunDll

  功能: 显示复制软盘视窗

14.命令: rundll32.exe apwiz.cpl,NewLinkHere %1

  功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。

15.命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0

  功能: 显示“日期与时间”选项视窗。

16.命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1

  功能: 显示“时区”选项视窗。

17.命令: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]

  功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。

18.命令: rundll32.exe rnaui.dll,RnaWizard

  功能: 显示“新建拨号连接”向导的视窗。

19.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

  功能: 显示“显示属性->背景”选项视窗。

20.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1

  功能: 显示“显示属性->屏幕保护”选项视窗。

21.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2

  功能: 显示“显示属性->外观”选项视窗。

22.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3

  功能: 显示显示“显示属性->属性”选项视窗。

23.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder

  功能: 显示Windows的“字体”文件夹。

24.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3

  功能: 同样是显示Windows的“字体”文件夹。

25.命令: rundll32.exe shell32.dll,SHformatDrive

  功能: 显示格式化软盘的对话框。

26.命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0

  功能: 显示“控制面板->游戏控制器->常规”选项视窗。

27.命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1

  功能: 显示“控制面板->游戏控制器->高级”选项视窗。

28.命令: rundll32.exe mshtml.dll,PrintHTML(HTML文档)

  功能: 打印HTML文档。

29.命令: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl

  功能: 显示Microsoft Exchange常规选项视窗。

30.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0

  功能: 显示“控制面板->鼠标” 选项

31.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1

  功能: 显示 “控制面板->键盘属性->速度”选项视窗。

32.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1

  功能: 显示 “控制面板->键盘属性->语言”选项视窗。

33.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2

  功能: 显示Windows“打印机”文件夹。

34.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3

  功能: 显示Windows“字体”文件夹。

35.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4

 功能: 显示“控制面板->输入法属性->输入法”选项视窗。

36.命令: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add

 功能: 执行“添加新调制解调器”向导。

37.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0

  功能: 显示“控制面板->多媒体属性->音频”属性页。

38.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1

  功能: 显示“控制面板->多媒体属性->视频”属性页。

39.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2

  功能: 显示“控制面板->多媒体属性->MIDI”属性页。

40.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3

  功能: 显示“控制面板->多媒体属性->CD音乐”属性页。

41.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4

  功能: 显示“控制面板->多媒体属性->设备”属性页。

42.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1

  功能: 显示“控制面板->声音”选项视窗。

43.命令: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl

  功能: 显示“控制面板->网络”选项视窗。

44.命令: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl

  功能: 显示ODBC32资料管理选项视窗。

45.命令: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:/path/filename}

  功能: 显示指定文件(drive:/path/filename)的“打开方式”对话框。

46.命令: rundll32.exe shell32.dll,Control_RunDLL password.cpl

  功能: 显示“控制面板->密码”选项视窗。

47.命令: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl

  功能: 显示“控制面板->电源管理属性”选项视窗。

48.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder

  功能: 显示Windows“打印机”文件夹。(rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)

49.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0

  功能: 显示“控制面板->区域设置属性->区域设置”选项视窗。

50.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1

  功能: 显示“控制面板->区域设置属性->数字”选项视窗。

51.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2

  功能: 显示“控制面板->区域设置属性->货币”选项视窗。

52.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3

  功能: 显示“控制面板->区域设置属性->时间”选项视窗。

53.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4

  功能: 显示“控制面板->区域设置属性->日期”选项视窗。

54.命令: rundll32.exe desk.cpl,InstallScreenSaver [屏幕保护档案名]

  功能: 将指定的屏幕保护文件设置为Windows的屏保,并显示屏幕保护属性视窗。

55.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0

  功能: 显示“控制面板->系统属性->传统”属性视窗。

56.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1

  功能: 显示“控制面板->系统属性->设备管理器”属性视窗。

57.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2

  功能: 显示“控制面板->系统属性->硬件配置文件”属性视窗。

58.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3

  功能: 显示“控制面板->系统属性->性能”属性视窗。

59.命令: rundll32.exe user.exe,restartwindows

  功能: 强行关闭所有程式并重启机器。

60.命令: rundll32.exe user.exe,exitwindows

  功能: 强行关闭所有程式并关机。

61.命令: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl

  功能: 显示“拨号属性”选项视窗。。

62.命令: rundll32.exe shell32.dll,Control_RunDLL themes.cpl

  功能: 显示“桌面主题”选项面板。

 

 

//PB键码常数值描述

vbKeyLButton 1 鼠标左键

vbKeyRButton 2 鼠标右键

vbKeyCancel 3 CANCEL

vbKeyMButton 4 鼠标中键

vbKeyBack 8 BACKSPACE

vbKeyTab 9 TAB

vbKeyClear 12 CLEAR

vbKeyReturn 13 ENTER

vbKeyShift 16 SHIFT

vbKeyControl 17 CTRL

vbKeyMenu 18 菜单键

vbKeyPause 19 PAUSE

vbKeyCapital 20 CAPS LOCK

vbKeyEscape 27 ESC

vbKeySpace 32 SPACEBAR

vbKeyPageUp 33 PAGEUP

vbKeyPageDown 34 PAGEDOWN

vbKeyEnd 35 END

vbKeyHome 36 HOME

vbKeyLeft 37 LEFT ARROW

vbKeyUp 38 UP ARROW

vbKeyRight 39 RIGHT ARROW

vbKeyDown 40 DOWN ARROW

vbKeySelect 41 SELECT

vbKeyPrint 42 PRINT SCREEN

vbKeyExecute 43 EXECUTE

vbKeySnapshot 44 SNAP SHOT

vbKeyInser 45 INS

vbKeyDelete 46 DEL

vbKeyHelp 47 HELP

vbKeyNumlock 144 NUM LOCK

//A键到Z键与其ASCII码的相应值

常数     描述

vbKeyA 65 A

vbKeyB 66 B

vbKeyC 67 C

vbKeyD 68 D

vbKeyE 69 E

vbKeyF 70 F

vbKeyG 71 G

vbKeyH 72 H

vbKeyI 73 I

vbKeyJ 74 J

vbKeyK 75 K

vbKeyL 76 L

vbKeyM 77 M

vbKeyN 78 N

vbKeyO 79 O

vbKeyP 80 P

vbKeyQ 81 Q

vbKeyR 82 R

vbKeyS 83 S

vbKeyT 84 T

vbKeyU 85 U

vbKeyV 86 V

vbKeyW 87 W

vbKeyX 88 X

vbKeyY 89 Y

vbKeyZ 90 Z

//0键到9键与其ASCII码的相应值

常数     描述

vbKey0 48 0

vbKey1 49 1

vbKey2 50 2

vbKey3 51 3

vbKey4 52 4

vbKey5 53 5

vbKey6 54 6

vbKey7 55 7

vbKey8 56 8

vbKey9 57 9

//数字小键盘上的键

常数                描述

vbKeyNumpad0 96 0

vbKeyNumpad1 97 1

vbKeyNumpad2 98 2

vbKeyNumpad3 99 3

vbKeyNumpad4 100 4

vbKeyNumpad5 101 5

vbKeyNumpad6 102 6

vbKeyNumpad7 103 7

vbKeyNumpad8 104 8

vbKeyNumpad9 105 9

vbKeyMultiply 106 乘号(*)

vbKeyAdd 107 加号(+)

vbKeySeparator 108 ENTER(在数字小键盘上)

vbKeySubtract 109 减号(-)

vbKeyDecimal 110 小数点(.)

vbKeyDivide 111 除号(/)

//功能键

常数               描述

vbKeyF1 112 F1

vbKeyF2 113 F2

vbKeyF3 114 F3

vbKeyF4 115 F4

vbKeyF5 116 F5

vbKeyF6 117 F6

vbKeyF7 118 F7

vbKeyF8 119 F8

vbKeyF9 120 F9

vbKeyF10 121 F10

vbKeyF11 122 F11

vbKeyF12 123 F12

vbKeyF13 124 F13

vbKeyF14 125 F14

vbKeyF15 126 F15

vbKeyF16 127 F16

 

 

//PowerBuilder系统表

PBCatTbl 数据库中的表

PBCatCol 数据库中的列

PBCatFmt 显示格式

PBCatVld 有效性规则

PBCatEdt 编辑风格

//PBCatTbl

pbt_tnam 表名

PBt_tid 表的SQL Server Object ID(仅用于SQL Server)

pbt_ownr 表的属主

pbd_fhgt 数据字体高度,以PowerBuilder中的单位表示

pbd_fwgt 数据字体笔划粗细(400=Normal,700=Bold)

pbd_fitl 字体是否位斜体(Y=YESN=NO)

pbd_funl 数据字体是否为加下划线(Y=YESN=NO)

pbd_fchr 数据字体字符ji(0=ANSI,2=Symbol,255=OEM)

pbd_fptc 数据字体的字符间距和系列,由2个常数相加得到

Pitch(0=Default,1=Fixed,2=Variable)

Family(0=无所谓,16=Roman,32=Swiss,48=Modern,64=Scrit,80=Decorative)

pbd_ffce 数据字体的字形

pbh_fhgt 标题字体高度,以PowerBuilder中的单位表示

pbh_ fwgt 标题字体笔划粗细(400=Normal,700=Bold)

pbh_fitl 标题字体是否位斜体(Y=YESN=NO)

pbh_funl 标题字体是否为加下划线(Y=YESN=NO)

pbh_fchr 标题字体字符集(0=ANSI,2=Symbol,255=OEM)

pbh_fptc 标题字体的字符间距和系列,由2个常数相加得到

Pitch(0=Default,1=Fixed,2=Varible)

Family(0=无所谓,16=Roman,32=Swiss,48=Modern,64=Scrit,80=Decorative)

pbh_ffce 标题字体的字形

pbl_fhgt 标签字体高度,以PowerBuilder中的单位表示

pbl_ fwgt 标签字体笔划粗细(400=Normal,700=Bold)

pbl_fitl 标签字体是否位斜体(Y=YESN=NO)

pbl_funl 标签字体是否为加下划线(Y=YESN=NO)

pbl_fchr 标签字体字符集(0=ANSI,2=Symbol,255=OEM)

pbl_fptc 标签字体的字符间距和系列,由2个数相加得到

Pitch(0=Default,1=Fixed,2=Varible)

Family(0=无所谓,16=Roman,32=Swiss,48=Modern,64=Scrit,80=Decorative)

pbl_ffce 标签字体的字形

pbt_cmnt 表的注释

//PBCatCol

pbc_tnam 表名

pbc_tid 表的SQL Server Object ID

pbc_ownr 表的属主

pbc_cnam 列名

pbc_cid SQL ServerColumn ID

pbc_labl 标签

pbc_lpos 标签位置(23=左边,24=右边)

pbc_hdr 标题

pbc_hpos 标题位置(23=左边,24=右边,25=居中)

pbc_jtfy 对齐方式(23=左边,24=右边)

pbc_mask 显示格式的名称

pbc_case 大小写(26=Actual,27=UPPER,28=lower)

pbc_hght 列高度

pbc_wdth 列宽度

pbc_ptrn 有效规则的名称

pbc_bmap 位图/图片(Y=Yes,N=No)

pbc_init 初始值

pbc_cmnt 列的注释

pbc_tag(保留)

//PBCatFmt

pbf_name 显示格式的名称

pbf_frmt 显示格式

pbf_type 格式应用于何种数据类型

pbf_cntr 并发用法标志

//PBCatVld

pbv_name 有效性规则的名称

pbv_frmt 有效性规则

pbv_type 有效性规则作用的数据类型

pbv_cntr 并发用法标志

pbv_msg 有效性检验出错消息

//PBCatEdt

pbe_name 编辑风格的名称

pbe_edit 格式串

pbe_type 编辑风格类型:

85=CheckBox,86=RadioButton,87=DropDownListBox

88=DropDownDataWindow,89=Edit,90=Edit Mask

pbe_cntr 修改次数计数器

pbe_seqn 对于PNCatEdt标中需要多行的编辑类型,指定行循序

pbe_flag 编辑风格标志

pbe_work 附加域

 

 

 

 

 

//PB自定义事件ID含义:

EventID含义 内容浅析

//单选或多选按钮消息(前缀:pbm_bm)

pbm_bmgetcheck 单选按钮或多选按钮是否被选。

pbm_bmgetstate 按钮是否加亮。

pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然。

pbm_bmsetstate 加亮或不加亮按钮。

pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框。

//单选或多选按钮通知消息(前缀:pbm_bn)

pbm_bnclicked 按钮控件被点中。

pbm_bndisable 使按钮控件无效。

pbm_bndoubleclicked 按钮控件被双点。

pbm_bndragdrop 一个对象被放到按钮控件。

pbm_bndragenter 一个对象被拖到按钮控件。

pbm_bndragleave 一个对象被拖离按钮控件。

pbm_bndragover 一个对象被拖经按钮控件。

pbm_bnhilite 按钮控件被加亮。

pbm_bnpaint 按钮控件被绘制。

pbm_bnsetfocus 按钮控件获得聚焦。

pbm_bnunhilite 按钮控件不被加亮。

//通用对话框消息(前缀:pbm_cb)

pbm_cbaddstring 将字符串加到通用对话框。

pbm_cbdeletestring 从通用对话框删除一个字符串。

pbm_cbdir 加一个目录列表到通用对话框。

pbm_cbfindstring 搜索以一组字符开头的字符串。

pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串。

pbm_cbgetcount 列表框中的项数。

pbm_cbgetcursel 当前被选项的数目。

pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置。

pbm_cbgeteditsel 编辑器控件中被选字符的范围。

pbm_cbgetextendedui 缺省或扩展的用户界面。

pbm_cbgetitemdata 重画的列表框中的4字节(32)项。

pbm_cbgetitemheight 列表框中某一项的高度。

pbm_cbgetlbtext 列表框中的文本。

pbm_cbgetlbtextlen 列表框中文本的长度。

pbm_cbinsertstring 向列表框中增加新的字符串或4字节项。

pbm_cblimittext 限制能被输入到列表框中的字符数。

pbm_cbresetcontent 删除列表框中所有元素。

pbm_cbselectstring 搜索匹配的字符串并显示。

pbm_cbsetcursel 在列表框中选择并显示一项。

pbm_cbseteditsel 在列表框的编辑区域中选择一块文本。

pbm_cbsetextendedui 设置缺省或扩展的用户界面。

pbm_cbsetitemdata 在列表框中设定4字节(32)项。

pbm_cbsetitemheight 设置列表框中项的高度。

pbm_cbshowdropdown 转换(显示或隐藏)列表框中拖放区域。

//通用对话框通知消息(前缀:pbm_cbn)

pbm_cbndblclk 用户在列表中某一项上双点。

pbm_cbndragdrop 一个对象被放到通用对话框控件上。

pbm_cbndragenter 一个对象被拖到通用对话框控件上。

pbm_cbndragleave 一个对象被拖离通用对话框控件。

pbm_cbndragover 一个对象被拖经通用对话框控件。

pbm_cbndropdown 列表框的下放区域即将被显示。

pbm_cbneditchange 编辑器控件中的文本发生变化。

pbm_cbneditupdate 列表框编辑器控件中的文本即将被改变。

pbm_cbnerrspace 列表框满,不能再向其中加入项。

pbm_cbnkillfocus 通用列表框失去聚焦。

pbm_cbnselchange 列表框中被选文本被改变。

pbm_cbnselendcancel 用户按下了"取消"按钮。

pbm_cbnselendok 用户按下了"确认"按钮。

pbm_cbnsetfocus 通用对话控件拥有聚焦。

//数据窗口消息(前缀:pbm_dw)

pbm_dwclosedropdown 关闭下拉式数据窗口。

pbm_dwscrollend 在数据窗口中卷滚到最后一行。

pbm_dwscrollhome 在数据窗口中卷滚到第一行。

pbm_dwscrolllineend 卷滚到当前行的行尾(水平方向)

pbm_dwscrolllinehome 卷滚到当前行的行首(水平方向)

//数据窗口通知消息(前缀:pbm_dwn)

pbm_dwnbacktabout 即将通过Shift+Tab组合键离开该控件。

pbm_dwnchanging 控件即将被改变。

pbm_dwndropdown 下拉式列表框的下拉部分即将可见。

pbm_dwngraphcreate 即将创建图形。

pbm_dwnitemchangefocus 数据窗口控件中当前项的聚焦改变。

pbm_dwnitemvalidationerror 对当前项的修改引起了一个合法性检查错误。

pbm_dwnkey 有键被按下。使用KeyDown()处理键盘值。

pbm_dwnlbuttondown 鼠标左键被按下。

pbm_dwnlbuttonup 鼠标左键被松开。

pbm_dwnmbuttonclk 鼠标中键点击。

pbm_dwnmbuttondbclk 鼠标中键双击。

pbm_dwnmousemove 鼠标移动。

pbm_dwnprintmarginchange 打印边界被改变。

pbm_dwnprocessenter 回车键被按下。

pbm_dwnrowchange 数据窗口中聚焦从一行转向另一行。

pbm_dwntabdownout 用户在数据窗口最后一行按了下箭头键。

pbm_dwntabout 用户在数据窗口的最后一行/列中按了tab键。

pbm_dwntabupout 用户在数据窗口第一行中按了上箭头键。

//动态数据交换(DDE)消息(前缀:pbm_dde)

pbm_ddeddeack 收到一个DDE消息。

pbm_ddeddeinitiate 开始一个DDE会话。

pbm_ddeddeterminate 终止一个DDE会话。

//编辑器控件消息(前缀:pbm_em)

pbm_emcanundo 编辑器控件是否能撤消上一次修改。

pbm_ememptyundobuffer 清空由Windows管理的取消操作的缓冲区。

pbm_emfmtlines 在多行编辑器控件的行尾增加或删除回车换行。

pbm_emgetfirstvisibleline 返回编辑器控件中可见的第一行的行号。

pbm_emgethandle 获得编辑器控件使用的内存句柄。

pbm_emgetline 从编辑器控件中复制一行到内存中的一个缓冲区。

pbm_emgetlinecount 返回多行编辑器控件的行数。

pbm_emgetmodify 文本是否被用户修改。

pbm_emgetrect 返回控件的长方形域。

pbm_emgetsel 返回被选文本的起始位置。

pbm_emlimittext 限制用户键入的文本长度。

pbm_emlinefromchar 返回被选文本的行号。

pbm_emlineindex 返回编辑器控件中被选行第一个字符在编辑串中的位置。

pbm_emlinelength 返回编辑器控件中被选行中的字符数。

pbm_emlinescroll 水平或垂直卷滚编辑器控件。

pbm_emreplacesel 从剪贴板或从键盘上用新文本替换被选文本。

pbm_emsethandle 设置编辑器控件的句柄指向内存中的一个缓冲区。

pbm_emsetmodify 设置编辑器控件的modified标志。

pbm_emsetpasswordchar 设置用户输入任何文本时显示的字符,在输入密码时的显示。

pbm_emsetrect 设置/重置编辑器控件所在的长方形区域,编辑器控件中的文本被重画。

pbm_emsetrectnp 除了不重画文本,大致与setrect相同。

pbm_emsetsel 选择字符。

pbm_emsettabstops 在多行编辑器控件中设置tabstops

pbm_emsetwordbreak 设置新的词拆分函数。

pbm_emsetwordbreakproc 设置新的词拆分过程。

pbm_emundo 撤消最近的编辑操作。

//编辑控件通知消息(前缀:pbm_en)

pbm_enchange 编辑器控件中的文本发生改变。

pbm_enerrspace 编辑器控件内存缓冲区溢出。

pbm_enhscroll 用户点中上水平卷滚条。

pbm_enmaxtext 用户试图输入比允许更多的文本。

pbm_enupdate 编辑器控件即将显示用户的修改。

pbm_envscroll 用户点中了垂直卷滚条。

//列表框消息(前缀:pbm_lb)

pbm_lbaddstring 向列表框控件中增加一项或一个字符串。

pbm_lbdeletestring 从列表框中删除一项或一个字符串。

pbm_lbdir 用目录列表填充列表框。

pbm_lbfindstring 在列表框中搜索与所给字符串部分匹配的第一项。

pbm_lbfindstringexact 在列表框中搜索与所给字符串精确匹配的第一项。

pbm_lbgetcaretindex 在列表框中搜索拥有聚焦的项。

pbm_lbgetcount 确定列表框中的项数。

pbm_lbgetcursel 确定所选项是第几项。

pbm_lbgethorizontalextent 获得列表框的宽度、计算水平卷滚。

pbm_lbgetitemheight 确定列表框控件中项的高度。

pbm_lbgetitemrect 确定列表框的尺寸。

pbm_lbgetsel 获得列表框中当前所选的项。

pbm_lbgetselcount 在多选列表框中获得所选项的数目。

pbm_lbgetselitems 用列表框中表框各自的项号填充一个给定的整数数组。

pbm_lbgettext 获得列表框中当前所选项的文本。

pbm_lbgettextlen 获得列表框中当前所选项的文本中的字符数。

pbm_lbgettopindex 确定列表框中可见的最上面一项的项号。

pbm_lbinsertstring 向列表框中加入一个新字符串。

pbm_lbresetcontent 重置(消除)列表框中的内容。

pbm_lbselectstring 搜索并加亮与所给字符匹配的字符串。

pbm_lbselitemrange 选择/取消列表框中某一范围中的项。

pbm_lbsetcaretindex 设置列表框中的某一项拥有聚焦。

pbm_lbsetcolumnwidth 设置列表框中列的宽度。

pbm_lbsetcursel 在列表框中选择并加亮一项;如果需要,卷滚到列表框。

pbm_lbsethorizontaltext 设置列表框中被水平卷滚的单元数。

pbm_lbsetitemdata 设置与列表框相关的32/4字节值。

pbm_lbsetitemheight 设置列表框中项的高度。

pbm_lbsetsel 在列表框中选择一个字符串。

pbm_lbsettabstops 设置列表框控件中tabstops的位置。

pbm_lbsettopindex 卷滚列表框使特定的项成为可见的最上面一项。

//列表框通知消息(前缀:pbm_en) 

pbm_endblclk 用户在列表框控件中的某一项上双击。

pbm_enerrspace 用户试图超越可在列表框中输入字符的最大限制。

pbm_enselcancel 当前选取文本被取消。

pbm_enselchange 用户在列表框中选择或取消了一项。

//窗口消息(前缀:pbm_)

pbm_activateapp 被激活的窗口属于另外一个应用。

pbm_askcbformatname 要求剪贴板中的内容被复制到一个使用自定义格式的文本缓冲区中。

pbm_char 传送键盘上按下的键。

pbm_chartoitem 通过转换键盘来的字符,帮助列表框定位其中的项。

pbm_childactivate 一个子窗口被移动或激活。

pbm_clear 用户要删除当前编辑器控件中的内容。

pbm_command 用户选择了一个菜单项、控件,或使用了加速键。

pbm_compacting 系统内存资源不足;Windows占用了多于1/8CPU时间紧缩内存时,产生这条消息。

pbm_compareitem 当新的一项被加入列表框或组合框时产生此消息,Window用这条消息进行项之间的比较。

pbm_ctlcolor 一个控件即将被画出,可在此时改变控件的颜色。

pbm_deadchar 用户选择了一种非英语字符集或其它特殊字符集,这将改变下面将要输入的字符。

pbm_deleteitem 从列表框或通用对话框中移去一项。

pbm_destroyclipboard 剪贴板内容被清除。

pbm_devmodechanged WIN.INI中的一个设备名被修改。

pbm_drawclipboard 剪贴板内容发生改变。

pbm_drawitem 列表框或通用对话框的一项内容被改变。

pbm_dropfiles 当鼠标左键在一个注册为拖放文件接受器的应用上释放时,发出该消息。

pbm_erasebkgnd 窗口的客户区需要重画。

pbm_fontchange 应用可用的字体数改变。

pbm_getdlgcode 通知消息,说明当前使用哪种类型的键盘。

pbm_getfont 获取当前激活的字体。

pbm_getminmaxinto Windows正在检查最小化或最大化窗口的尺寸。

pbm_gettext 从一个控件(如按钮或编辑器控件)中复制文本到一个内存缓冲区。

pbm_gettextlength 用来确定一个控件中的字符数。

pbm_hscrollclipboard 剪贴板的水平卷滚条被使用。

pbm_iconerasebkgnd 一个最小化窗口需要重化背景。

pbm_initdialog 一个对话框即将被显示。

pbm_initmenu 一个菜单即将被显示。

pbm_initmenupopup 一个弹出式窗口即将被显示。

pbm_keydown 键盘上的一个键被按下。

pbm_keyup 键盘上的一个键被释放。

pbm_mdiactive 一个MDI子窗口(表单)被激活。

pbm_mdicascade 以重叠的形式重排所有的表单。

pbm_mdicreate 创建一个表单。

pbm_mdidestroy MDI框架中移去一个表单。

pbm_mdigetactive 获得当前活动的MDI表单的句柄。

pbm_mdiiconrange 在一个MDI框架中重排最小化表单的图标。

pbm_mdimaximize 最大化一个MDI子表单。

pbm_mdinext 激活下一个MDI表单(紧接着活动表单的表单)

pbm_mdirestore MDI表单恢复到它原来的大小。

pbm_mdisetmenu 将一个菜单与一个MDI表单联系起来。

pbm_mdifitle 平铺所有的MDI表单。

pbm_measureitem 这个消息被送给即将创建的、内有按钮或其它控件的窗口。

pbm_menuchar 用户使用了一个快捷键,但系统不支持该快捷键。

pbm_menuselect 用户选择了一个菜单项。

pbm_mouseactivate 用户在一个非活动窗口中点击了鼠标。

pbm_mousemove 用户移动了鼠标。

pbm_ncactivate 窗口的非客户区即将被激活。

pbm_nccalcsize 窗口的尺寸需要重新计算。

pbm_nccreate 窗口即将创建它的非客户区。

pbm_ncdestroy 窗口的非共享区被析构。

pbm_nchittest 每次非客户区被移动时都发送该消息。

pbm_nclbuttondblclk 用户在非客户区双点了鼠标左键。

pbm_ncpaint 非客户需要画出。

pbm_nextdlgctl 在对话框中将聚焦转给另一个控件。

pbm_paint 窗口的客户区需要被画出。

pbm_paintclipboard 剪贴板应用有剪贴操作,剪贴板查看器需重画。

pbm_palettechanged 系统调色板被改变。

pbm_paletteischanging 系统调色板即将被改变。

pbm_parentnotify 通知父窗口一个子窗口即将被创建。

pbm_querydragicon 用户要拖一个最小化窗口。

pbm_queryendsession 通知消息,说明窗口即将被关闭。

pbm_querynewpalette 应用即将收到输入聚焦,应该执行必要的颜色调整。

pbm_queryopen 一个最小化窗口即将被恢复。

pbm_quit 应用处理的最后一个消息。

pbm_renderallformats 通知一个剪贴板格式的拥有者,应用将失去所有的格式。

pbm_renderformats 通知消息,说明放在剪贴板中的数据应该用一种特殊格式传送。

pbm_setcursor 通知消息,说明鼠标指针在一个窗口中移动。

pbm_setfont 用来在对话框中改变字体。

pbm_setredraw 在加一个新项之前发送给列表框或通用对话框。

pbm_settext 用来改变窗口的标题或文本。

pbm_sizeclipboard 剪贴板查看器应用改变尺寸。

pbm_spoolerstatus 一个打印管理器任务被添加或删除。

pbm_syschar <ALT>键和其它某键同时被按下。

pbm_syscolorchange 一种或多种系统颜色被改变。

pbm_syscommand 用户选择了一个系统菜单命令。

pbm_sysdeadchar 通知消息,说明一种非英语字符集被选定。

pbm_syskeydown 用户按下某键的同时按下了<ALT>键。

pbm_syskeyup 用户释放了<ALT>组合键。

pbm_timechange 系统时钟被修改。

pbm_undo undo缓冲区复制文本到编辑器控件。

pbm_vkeytoitem 当一个列表框拥有聚焦时,用户按下了一个键。

pbm_vscroll 用户点击了垂直卷滚条。

pbm_vscrollclipboard 剪贴板查看器的垂直卷滚条被点击。

pbm_windowposchanged 窗口位置发生改变。

pbm_windowposchanging 窗口位置即将发生改变。

pbm_wininichange WIN.INI文件被修改。

 

 

//PB7.0运行库文件

FileName           Purpose     Runtime Development

PBADD70.DLL Utilities(Profiler, DWSyntax, etc) No Yes

PBAPL70.DLL Application Painter & Project Painter No Yes

PBCGB70.DLL Code Generation 1 No Yes

PBCGC70.DLL Code Generation Compiler 1 No Yes

PBCGL70.DLL Code Generation Linker 1 No Yes

PBCGR70.DLL Code Generation Resource Compiler 1 No Yes

PBCGS70.DLL Code Generation 1 No Yes

PBCH70.DLL           Machine code generation No Yes

PBCMP70.DLL Compiler No Yes

PBCOM70.DLL COM Generator No Yes

PBCPP70.DLL C++ Generator No Yes

PBDEV70.DLL Shared Development Utilities No Yes

PBDIR70.DLL DirectConnect Database Driver Optional Optional

PBDPP70.DLL Pipeline Painter No Yes

PBDTS70.DLL Table/Database Painter No Yes

PBDWE70.DLL DataWindow Engine Yes Yes

PBDWO70.DLL DataWindow Objects for Painters No Yes

PBDWP70.DLL DataWindow Painter No Yes

PBDWR70.DLL HTML DataWindow Optional No

PBGEN70.DLL Application Template No Yes

PBIN770.DLL Informix 7 Database Driver Optional Optional

PBIN970.DLL Informix 9 Database Driver Optional Optional

PBISA70.DLL MS Internet InfoServices API Optional No

PBJAG70.DLL Jaguar Interfaces – required on server Optional No

PBJCG70.DLL Jaguar Interfaces No Yes

PBJDC70.DLL Jaguar Interfaces No Yes

PBJDM70.DLL Microsoft JDBC Database Driver Optional Optional

PBJDS70.DLL Sun JDBC Database Driver Optional Optional

PBJPG70.DLL Jaguar Component Generator No Yes

PBJPX70.DLL Jaguar Proxy Generator No Yes

PBLIB70.DLL Library Painter No Yes

PBMSS70.DLL Microsoft SQLServer Database Driver Optional Optional

PBNS170.DLL WEB.PB Netscape API Version 1 Optional No

PBNS270.DLL WEB.PB Netscape API Version 2 Optional No

PBNS370.DLL WEB.PB Netscape API Version 3 Optional No

PBO7370.DLL Oracle 7.3 Database Driver Optional Optional

PBO8470.DLL Oracle 8.04 Database Driver Optional Optional

PBODB70.DLL ODBC Database Driver Optional Optional

PBOGR70.DLL Registry Utility No Yes

PBOLE70.DLL OLE DB Database Driver Optional Optional

PBOR870.DLL Oracle 8 Database Driver Optional Optional

PBORC70.DLL ORCA interface No No

PBPRX70.DLL Proxy Generator No Yes

PBRTC70.DLL Rich Text Control Optional Yes

PBSCC70.DLL SCC Source Control Driver No Optional

PBSCR70.DLL script Painter & Debugger No Yes

PBSQL70.DLL SQL Painter & Query Painter No Yes

PBSYC70.DLL Sybase ASE Database Driver Optional Optional

PBSYD70.DLL UNIX Sybase Database Driver Optional Optional

PBSYJ70.DLL Jaguar Sybase ASE Database Driver Optional No

PBSYS70.DLL System Utility No Yes

PBTRA70.DLL Database Trace Utility(pbtrace.log) Optional Optional

PBUDO70.DLL User Object Painter & Menu Painter No Yes

PBVM70.DLL Virtual Machine Yes Yes

PBWED70.DLL script Editor 2 No Yes

PBWEI70.DLL script Editor 2 No Yes

PBWEP70.DLL script Editor 2 No Yes

PBWES70.DLL script Editor 2 No Yes

PBWIZ70.DLL Start Wizards No Yes

PBWPB70.DLL Web PB Wizard No Yes

PSDWC70.CAB DataWindow Web ActiveX Optional No

pbapl70.dll 应用画笔

pbbgr70.dl 商业图形引擎

pbcgc70.dll 编译代码

pbcgl.dll 链接代码

pbcgr.dll 资源编译

pbch70.dll 头文件

pbcmp70.dll powerscript编译器

pbctl70.dll 窗口/报表和用户自定义对象画板

pbdpp70.dll 分布式powerbuilder

pbdts70.dll    数据库画板工具

pbdwe70.dll    数据窗口引擎

pbdwo70.dll    数据窗口对话框

pbdwp70.dll    数据窗口画板

pbgen70.dll    应用模板

pbin970.dll    informix 数据库接口

pblib70.dll    库画板和浏览器

pbmss70.dll    ms sql server数据库接口

pbodb70.dll    odbc数据库接口

pborc70.dll orcle数据库接口

pbrtc70.dll rtf支持软件

pbscr70.dll script画板

pbsql70.dll sql画板

pbsyc70.dll sybase数据库接口

pbsys70.dll 开发系统

pbtra70.dll 数据库接口

pbudo70.dll 用户对象画板

pbwed70.dll 编辑器

pbwei70.dll 编辑器的自动缩进

pbwep70.dll 编辑器的powerscript颜色 

pbwes70.dll 编辑器的sql颜色

 

 

//在数据窗口当中按下回车键之后,焦点移动到后面的字段,如从最后移动,则自动跳转到下一行

send(handle(this),256,9,long(0,0))

 

 

//窗口当中的enter事件!在datawindow的事件当中新建一个自定义事件ue_enter,even_id当中paste"pbm_dwnprocessenter"

long      ll_row,ll_RowCount

integer li_col,li_colcount

li_col        = dw_1.GetColumn()

li_ColCount = long(describe(dw_1,"datawindow.column.count"))

if li_col     = li_ColCount then

    ll_row      = dw_1.GetRow()

    ll_RowCount = dw_1.RowCount()

    if ll_row = ll_RowCount then

       ll_row = dw_1.InsertRow(0)

             dw_1.setredraw(false)  

       scrolltorow(dw_1,ll_Row)

       setrow(dw_1,ll_Row)

       setcolumn(dw_1,1) 

       dw_1.setredraw(true)

       dw_1.SetFocus()

           dw_1.modify("datawindow.horizontalscrollposition=1")

       return 1

    end if

end if

send(handle(this),256,9,long(0,0))

return 1

 

 

//怎样在程序中为datawindow加计算域或line

//以下程序加一计算域sum(dept_id for all)

string ls_modrow

dw_1.Modify("DataWindow.summary.Height=64")

ls_modrow = 'Create compute(band=summary font.charset="0" font.face="MS Sans Serif" font.family="2" font.height="-8" font.pitch="2" font.weight="400" background.mode="1" background.color="536870912" color="0" x="9" y="4" height="52" width="297" format="[general]" expression="sum(dept_id for all)" alignment="1" border="0" crosstab.repeat=no )~r~n'

dw_1.modify( ls_modrow )

//以下程序加一条线

string ls_line

dw_1.Modify("DataWindow.detail.Height=332")

ls_line = 'Create line(band=detail background.mode="2" background.color="16777215" pen.style="0" pen.width="5" pen.color="0" x1="37" y1="320" x2="1458" y2="316" )~r~n'

dw_1.modify( ls_line )

dw_1.settransobject(sqlca)

dw_1.retrieve()

 

 

//我如何才能够很好的控制程序的安全性呢?

比如说,我要在一个窗口当中控制一个button的操作权限

datawindow中,操作一个字段的可操属性,难道要对这些个单独编码吗?

有没有比较好的方式?

窗口当中的权限放置在变量当中,然后把窗口的权限取消就可以了!

 

 

//一个把窗口redrawscreen中间的函数:

f_wincenter(windowname)

environment lenv

long ll_height,ll_width

if getenvironment(lenv)= -1 then

           messagebox("error","get screen message error!")

else

          ll_height=pixelstounits(lenv.screenheight,Ypixelstounits!)

          ll_width=pixelstounits(lenv.screenwidth,xpixelstounits!)

          awin.y=(ll_height - awin.height)/2 - 200

          awin.x=(ll_width - awin.width)/2

          return 0     //成功返回0

end if       

return 1

 

 

//如何获得当前应用程序的路径

FUNCTION    unit getmodulefilenamea(ulong hmodule,ref string lpfilename,ulong nsize)library "kernel32.dll"

string ls_buffer=space(255)

int i

if getmodulefilenamea(handle(getapplication()),ls_buffer,255)=0 then

          setnull(ls_buffer)

else

          do while pos(ls_buffer,"/",i+1)>0

                  i=pos(ls_buffer,"/",i+1)

          loop

          ls_buffer=left(ls_buffer,i)

          if right(ls_buffer,1)<>"/" then ls_buffer=ls_buffer+"/"

end if

return ls_buffer

 

 

//获得当前计算机的名称

FUNCTION boolean GetComputerNameA(ref string cname,ref long nbuf) LIBRARY "kernel32.dll"

String ls_computername=space(512)

Long ll_buffer=512

Getcomputernamea(ls_computername,ll_buffer)

Return ls_computername

 

 

//获得当前的路径

FUNCTION ulong GetCurrentDirectoryA(ulong nBufferLength,ref string lpBuffer) Library    kernel32.dll"

String ls_buffer

Ls_buffer=space(255)

If getcurrentdirectorya(255,ls_buffer)=0 then

     Setnull(ls_buffer)

Else

If Right(ls_buffer,1)<>"1" then ls_buffer=ls_buffer+"/"

End if

Return ls_buffer

 

 

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值