PowerBuilderÓ¦Óÿª·¢ÏµÁн²×ù(25,26)


Ò»¸ö´úÂëά»¤µÄÓ¦ÓóÌÐò(ÉÏ¡¢ÏÂ)

  ¡¡ÔÚ Ê¹ ÓÃPowerBuilder ±à ³Ì µÄ ¹ý ³Ì ÖУ¬ Äú Ò» ¶¨ Óö µ½ ¹ý Ò» ¸ö È« ¾Ö ±ä Á¿ »ò Éè ¼Æ µÄ ¶Ô Ïó Ðè Òª ¸ü »» Ãû ³Æ µÄ Çé ¿ö£¬ Õâ ¸ö ±ä Á¿ ¿É ÄÜ »á ÔÚ Äú Ëù ±à д µÄ ¶à ¸öPowerScript ÖÐ Òý Óã¬ Ϊ ÁË Êµ ÏÖ ¸ü Ãû£¬ Äú ¿É ÄÜ Òª ´ò ¿ª Ëù ÓÐ µÄ ¶Ô Ïó£¬ ¶Ô Æä ÖÐ Ëù ÓÐ ½ø ÐÐ ¹ý ±à Âë µÄ Ê ¼þ ½ø ÐÐ ËÑ Ë÷¡£ ÏÔ È»£¬ Õâ ÊÇ Ò» ¸ö ·Ç ³£ ·Ñ ʱ ·Ñ Á¦ µÄ ¹¤ ×÷£¬ ¶ø ÇÒ Ò» µ© ËÑ Ñ° ÓÐ Ëù ÒŠ©£¬ Õâ µã ²î ´í ¾Í ¿É ÄÜ ³É Ϊ Äú ±à д µÄ Ó¦ Óà ÖÐ µÄ ´í Îó DZ ·ü Ï À´£¬ ÔÚ ²â ÊÔ »ò Ö± µ½ Óà »§ ʹ Óà ʱ ²Å ±» ·¢ ÏÖ¡£

¡¡¡¡Ê ʵ ÉÏPowerBuilder ϵ ͳ ±¾ Éí Ìá ¹© ÁË Ò» ϵ ÁÐ ¶Ô Æä ±¾ Éí ¶Ô Ïó ¿âpbl ½ø ÐÐ ²Ù ×Ý µÄ º¯ Êý£¬ ÈçLibraryDirectory() µÈ¡£ Õâ Щ º¯ Êý ¿É ÒÔ Óà ÓÚ Äú ÔÚ ±à ³Ì ʱ ¶Ô ×Ô Éí ´ú Âë µÄ Î¬ »¤£¬ »¹ ¿É ÒÔ ×Ô ¶¯ ´´ ½¨ Óà ÓÚ ´ò Ó¡ ±¨ ±í µÄ Êý ¾Ý ´° ¿Ú µÈ¡£

¡¡¡¡Õâ Àï ÎÒ ÃÇ ½é ÉÜ ¸ø Äú Ò» ¸ö С ÐÍ µÄ Ó¦ Óà Èí ¼þ£¬ Óà ÓÚ ×Ô ¶¯ ¼ì Ë÷PowerBuilder µÄpbl ¿â£¬ ËÑ Ë÷ ºÍ Ìæ »» Äú Ö¸ ¶¨ µÄ ¶Ô Ïó »ò ´ú Âë¡£ ͨ ¹ý Õâ ¸ö Èí ¼þ£¬ Äú ½« ½ø Ò» ²½ ÁË ½âPowerBuilder ¶Ô Óà »§ Ëù Éè ¼Æ µÄ ¶Ô Ïó µÄ ¹Ü Àí Ä£ ʽ¡£

¡¡¡¡ÎÒ ÃÇ Ê× ÏÈ Éè ¼Æ Ò» ¸ö Óà ÓÚ ä¯ ÀÀ µÄ ²» ¿É ÊÓ Óà »§ ×Ô ¶¨ Òå ¶Ô Ïó Ãû ½Ðu_objbrowser¡£ Õâ ¸ö ¶Ô Ïó µÄ ×÷ Óà ÊÇ ÔÚPowerBuilder µÄ ¶Ô Ïó ¿â ÖÐ ËÑ Ë÷ ºÍ ä¯ ÀÀ ¶Ô Ïó¡£ ä¯ ÀÀ µÄ ¹ý ³Ì ÊÇ ÏÈ ²é ѯ µ± ǰ Ó¦ Óà °ü º¬ µÄ Ëù ÓÐPowerBuilder ¶Ô Ïó ¿â£¬ ËÑ Ë÷ Õâ Щ ¿â ÖÐ Ö¸ ¶¨ µÄ ¶Ô Ïó Àà ÐÍ£¬ ½« Ãü ÖÐ µÄ ½á ¹û ·µ »Ø¡£ ÔÚ Õâ ¸ö ¶Ô Ïó ÖУ¬ ÎÒ ÃÇ ÖØ µã Òª Óà µ½ µÄ ¾Í ÊÇLibraryDirectory() Õâ ¸ö º¯ Êý¡£

¡¡¡¡Äú Ò» ¶¨ ¶¼ Óà ¹ý º¯ ÊýImportString() Ϊ Êý ¾Ý ´° ¿Ú Ìî ³ä Êý ¾Ý¡£ ÔÚ Õâ Àï ʹ Óà µÄLibraryDirectory() º¯ Êý Ëù µÃ µ½ µÄ ·µ »Ø ЊϢ ͬImportString() µÄ ±í ´ï ·½ ʽ ÊÇ »ù ±¾ Ïà ËÆ£º ½á ¹û Ϊ Ò» ¸ö ×Ö ·û ´®£¬ ×Ö ·û Ö® ¼ä ±í ´ï ²» ͬ µÄ ÁÐ ÒÔ~t ·Ö ¸ô£¬ ²» ͬ µÄ ÐÐ ÒÔ~n ·Ö ¸ô¡£

¡¡¡¡ÔÚu_browser ¶Ô Ïó ÖУ¬ ÎÒ ÃÇ Éù Ã÷ ʵ Àý ±ä Á¿ Èç Ï£º

string  uis_ApplicationName     // µ± ǰ Ó¦ Óà Ãû
string  uis_ApplicationLibrary  // °ü º¬ Ó¦ Óà ¶Ô Ïó µÄpbl ¿â Ãû
string  uis_ApplicationDirectory        // ApplicationLibrary Ëù ÔÚ µÄ · ¾¶
string  uis_PBiniFile   // pb.ini µÄ ÎÄ ¼þ Ãû ³Æ

¡¡¡¡Õâ ¸ö ¶Ô Ïó ÖÐ °ü º¬ ÁË Õâ Ñù ¼¸ ¸ö º¯ Êý£º
       u_browser.uf_GetCurrentApplication()£¬ »ñ È¡ µ± ǰ Ó¦ Óà Ãû

¡¡¡¡Õâ ¸ö º¯ Êý ÊÇ Ò» ¸ö ³õ ʼ »¯ º¯ Êý£¬ Ëü Ê× ÏÈ ÔÚWIN.INI ÖРѰ ÕÒPB.INI µÄ · ¾¶£¬ ¶Á È¡PB.INI ÎÄ ¼þ ÖÐ µÄ[APPLICATION] Õâ Ò» ¶Î£¬ À´ »ñ È¡ µ± ǰ Õâ ¸ö Ó¦ Óà µÄ ²Ù ×÷ »· ¾³¡£ È» ºó ¶Ô Á½ ¸ö ±ä Á¿ ¸³ Öµ£ºuis_ApplicationName ÊÇ µ± ǰ Ó¦ Óà µÄ Ãû ³Æ£¬uis_ApplicationLibrary ÊÇ Õâ ¸ö Ó¦ Óà µÄ Ó¦ Óà ¶Ô Ïó Ëù ´æ ´¢ µÄpbl ¿â Ãû¡£

u_browser.uf_GetCurrentApplication()
long         ll_pos1, ll_pos2
string        ls_PBInitPath
// »ñ È¡PB.INI µÄ · ¾¶
ls_PBInitPath = ProfileString (¡°WIN.INI¡±,POWERBUILDER¡±,
                       ¡°INITPATH¡±,¡°¡±)
uis_PBiniFile = ¡°PB.INI*
IF ls_PBInitPath <> ¡°¡±THEN
  IF Right(ls_PBInitPath, 1) <> *\¡± THEN
        ls_PBInitPath = ls_PBInitPath + *\*
  END IF
  uis_PBiniFile = ls_PBInitPath + uis_PBiniFile
END IF
//´ÓPB.INIÎļþÖлñȡӦÓÃÃû³ÆºÍËùÔÚµÄPBL¿âÃû
uis_ApplicationName = ProfileString(PBiniFile, "APPLICATION¡±,
 ¡°APPNAME¡±, ¡°¡±)
uis_ApplicationLibrary = ProfileString(PBiniFile,¡°APPLICATION¡±,
 ¡°APPLIB¡±,¡°¡±)
uis_ApplicationDirectory = ¡°¡±
ll_pos1 = 0
ll_pos2 = Pos(uis_ApplicationLibrary, *\¡±)
DO WHILE ll_pos2 > 0
  ll_pos1 = ll_pos2
  ll_pos2 = Pos(uis_ApplicationLibrary, *\¡±, ll_pos1 + 1)
LOOP
IF ll_pos1 > 0 THEN uis_ApplicationDirectory = Left
                        (uis_ApplicationLibrary, ll_pos1)

¡¡¡¡u_browser.uf_GetLibraryPath(): »ñ È¡ ±¾ Ó¦ Óà Ëù °ü º¬ µÄpbl ¿â Ãû

¡¡¡¡Ò» ¸ö Ó¦ Óà °ü º¬ ÁË ÄÄ ¼¸ ¸öpbl ¿â£¬ Õâ Ñù µÄ ЊϢ ²¢ ²» ÊÇ ×÷ Ϊapplication ¶Ô Ïó µÄ Ò» ¸ö Êô ÐÔ ´æ ´¢ ÔÚpbl ¿â ÖÐ µÄ£¬ ¶ø ÊÇ °ü º¬ ÔÚ ÁËpb.ini ÎÄ ¼þ ÖÐ[application] ¶Î µÄ$AppLib Ïî µÈ ºÅ ºó Ãæ µÄ ×Ö ·û ´® ÖУ¬ ¿â Ãû Óë ¿â Ãû Ö® ¼ä ÒÔ ·Ö ºÅ ·Ö ¸ô¡£ ÔÚ Õâ Àï ÎÒ ÃÇ Ê¹ Óà ÁËuf_GetLibraryPath() º¯ Êý ¶Á È¡ Õâ Щ ÐŠϢ£¬ ²¢ ½« ¿â Ãû ×Ö ·û ´® ¸Ä ±ä Ϊ ÒÔ ±ê ×¼ µÄ~t ·Ö ¸ô£¬ ×÷ Ϊ º¯ Êý µÄ ·µ »Ø Öµ¡£

long     ll_pos1
string   ls_LibraryList
// ´Ópb.ini ÖÐ ¶Á È¡ ±¾ Ó¦ ÓÃpbl ¿â µÄ · ¾¶
ls_LibraryList = ProfileString ( uis_PBiniFile,&
   ¡°Application¡±,¡°$¡± + uis_ApplicationLibrary +&
   ¡°(¡± + uis_ApplicationName + ¡°)¡±, ¡°¡±)
// ÒÔ~t ·û ºÅ È¡ ´ú ·Ö ºÅ ×÷ Ϊ ·Ö ¸ô ·û
ls_pos1 = Pos(ls_LibraryList, ¡°;¡±)
DO WHILE ls_pos1 > 0
  ls_LibraryList = Replace(ls_LibraryList, ll_pos1, 1,¡°~t~n¡±)
  ll_pos1 = Pos(ls_LibraryList, ¡°;¡±, ll_pos1 + 2)
LOOP
RETURN ls_LibraryList

¡¡¡¡µ± µÃ µ½ ÁË Õâ Щ ¿â Ãû µÄ ÁÐ ±í ºó£¬ ÎÒ ÃÇ ¾Í ¿É ÒÔ ÔÚ ¿â ÖÐ ËÑ Ë÷ ÎÒ ÃÇ Ëù Ðë µÄ ÈÎ ºÎ Ò» ¸ö ÌØ ¶¨ µÄ ¶Ô Ïó ÁË ( ÈçApplication, Window, DataWindow, Menu, Function, Structure »òUserObject µÈ)¡£
       uf_GetLibraryObjects()£º »ñ È¡pbl ¿â ÖÐ µÄ ¶Ô Ïó

¡¡¡¡Õâ ¸ö º¯ Êý ÓÐ Èý ¸ö ²Î Á¿£º Ò» ¸ö ÓÉ ¿â Ãû ×é ³É µÄ ×Ö ´®£¬ Ò» ¸öLibDirType ¶Ô Ïó Àà ÐÍ£¬ Ò» ¸ö ²¼ ¶û ÐÍ µÄ ±ê Ö¾ ²Î Êý¡£ ²¼ ¶û ²Î Êý Óà ÒÔ Ö¸ ʾ ÊÇ ·ñ Ö» ·µ »Ø ¶Ô Ïó Ãû ³Æ¡£

¡¡¡¡Æä ÖÐLibDirType ÊÇ Ò» ¸ö ö ¾Ù Êý ¾Ý Àà ÐÍ£¬ °ü À¨ ÁË Ï ÁÐ µÄ ¼¸ ¸ö ÖµDirAll!, DirApplication!, DirDataWindow!, DirFunction!, DirMenu!, DirStructure!, DirUserObject! ºÍDirWindow! Õâ ¸ö º¯ Êý µÄ ·µ »Ø Öµ ÊÇ Ëù ÓÐ Óë Äú Ö¸ ¶¨ µÄ ¶Ô Ïó Àà ÐÍ Ïà Æ¥ Åä µÄ ´æ ´¢ ÔÚ Õâ Щ ¿â ÖÐ µÄ ¶Ô Ïó Ãû¡£ Ê ʵ ÉÏ Ê¹ ÓÃLibraryDirectory() º¯ Êý »¹ ½« °ü º¬ Õâ Щ ¶Ô Ïó µÄ ×¢ ÊÍ ºÍ ×î ºó ÐÞ ¸Ä µÄ ʱ ¼ä µÈ ЊϢ£¬ ¶ø ÔÚuf_GetLibraryObjects() º¯ Êý ÖУ¬ ÎÒ ÃÇ ¿É ÒÔ ¸ù ¾Ý ²¼ ¶û ²Î Êý£¬ À´ ¾ö ¶¨ ÊÇ ·ñ µ÷ ÓÃuf_ParseDirectory() º¯ Êý ½« Õâ Щ ÄÚ ÈÝ ÌÞ ³ý µô¡£

uf_GetLibraryObjects()
// ²Î Êý
//string        as_LibraryName
//LibDirType  a_ObjectType
//boolean       ab_ParseList
string   ls_result
ls_result = LibraryDirectory (as_LibraryName, a_ObjectType) 
IF ab_ParseList THEN
  ls_result = This.uf_ParseDirectory (ls_result)
END IF
RETURN ls_result

¡¡¡¡Ê¹ ÓÃLibraryDirectory() º¯ Êý µÃ µ½ µÄ ¶Ô Ïó ЊϢ ÓÐ Èý ¸ö Êý ¾Ý ¶Î£º ¶Ô Ïó Ãû ³Æ¡¢ ÐÞ ¸Ä ʱ ¼ä ºÍ ×¢ ÊÍ£¬ Õâ Èý ¸ö ×Ö ¶Î ÒÔ~t Ïà ¸ô£¬ ²» ͬ µÄ ¶Ô Ïó ¼ä ÒÔ~n ·Ö ¸ô¡£uf_ParseDirectory() º¯ Êý ½« ɾ ³ý ÿ Ò» Ìõ ¼Ç ¼ µÄ ºó Á½ ¸ö ×Ö ¶Î£¬ Ö» ±£ Áô ¶Ô Ïó Ãû ³Æ µÄ ЊϢ¡£uf_ParseDirectory() º¯ Êý µÄ ´ú Âë Èç Ï£º

uf_ParseDirectory()
// ²Î Êý£ºstring   as_LibDirectory
// ·µ »Ø£ºstring 
string ls_ObjList = ¡°¡±
long  ll_pos1, ll_pos2, ll_DirLen 
ll_DirLen = Len(as_LibDirectory)
ll_pos1 = 1
DO WHILE ll_pos1 < ll_DirLen
  // ÕÒ µ½ µÚ Ò» ¸ötab ·Ö ¸ô ·û
  ll_pos2 = Pos (as_LibDirectory, ¡°~t¡±, ll_pos1)
//·ÖÀë³ö¶ÔÏóÃû³Æ£¬²¢½«Æä¼ÓÈëµ½¶ÔÏóÁбíÖÐÈ¥
  ObjList = ObjList + Mid(LibDirectory, Pos1, Pos2 - Pos1) + "~t~n*
  Pos1 = Pos (LibDirectory, *~n*, Pos2) + 1
LOOP
RETURN ls_ObjList

¡¡¡¡×î ºó Ò» ¸ö º¯ Êý ÊÇuf_ConvertListToArray()£¬ Ëü ½Ó ÊÜ Ò» ¸ö ÓÉ ¶Ô Ïó Ãû ×é ³É µÄ ×Ö ·û ´®£¬ ½« Æä ·Ö ¸ô Ϊ Êý ×é ÐΠʽ¡£

uf_ConvertListToArray()
// ²Î Êý£ºstring                as_ObjectString 
//      string          as_ObjectOjbect
//       string         as_OjbectArray  reference       
// ·µ »Ø£º ·Ö ¸ô ·û µÄ ¸ö Êý
long ll_pos1, ll_pos2, ll_count
int  li_seplen
IF as_ObjectString = ¡°¡± THEN RETURN 0
li_SepLen = Len(as_ObjectSeparator)
IF Right (as_ObjectString, SepLen) <> as_ObjectSeparator &
  THEN as_ObjectString = as_ObjectString + as_ObjectSeparator
//È·¶¨·Ö¸ô·ûÔÚ×Ö´®ÖеÄλÖÃ
ll_count = 0
ll_pos1 = 1
ll_pos2 = Pos (as_ObjectString, as_ObjectSeparator)
DO UNTIL ll_pos2 = 0
  ll_Count ++
  // ½« ·Ö ¸ô ·û ¼ä µÄ ÄÚ ÈÝ ¿½ ±´ ÔÚ Êý ×é ÖÐ
  as_ObjectArray[ll_count] = Mid (as_ObjectString, ll_pos1, ll_pos2 - ll_pos1)
  ll_pos1 = ll_pos2 + li_seplen
  ll_pos2 = Pos (as_ObjectString, as_ObjectSeparator, ll_pos1)
LOOP
// ·µ »Ø ·Ö ¸ô ·û µÄ ¸ö Êý
RETURN ll_count

---------ÔÚ´Ë´¦·Ö¸ôΪÉÏÏÂÁ½Æª---------

¡¡¡¡ÎÒ ÃÇ Òª д µÄ Õâ ¸ö ËÑ Ë÷ ¼° Ìæ »» µÄ Ó¦ Óà ³Ì Ðò ʹ Óà ÁËu_browser Õâ ¸ö Óà »§ ¶Ô Ïó¡£ Ëü ½« ¸ù ¾Ý Óà »§ Ö¸ ¶¨ µÄ Ñ¡ Ôñ Ìõ ¼þ£¬ ËÑ Ë÷ ¶Ô Ïó µÄ Êä ³ö ÎÄ ±¾¡£ µ« ÊÇ Óà ÓÚPowerBuilder ²¢ ²» Ö§ ³Ö ³ý Êý ¾Ý ´° ¿Ú Íâ ¶Ô Ïó µÄ ¶¯ ̬ Êä È룬 Ëù ÒÔ Èç ¹û ÎÒ ÃÇ ¶Ô Êä ³ö µÄ ÎÄ ±¾ ½ø ÐÐ ÐÞ ¸Ä ºó ÊÇ ÎÞ ·¨ ´æ Èëpbl ¿â ÖÐ µÄ£¬ ÎÒ ÃÇ Ö» ÄÜ ½« Æä ±£ ´æ ³É Ϊ Ò» ¸ö ÎÄ ±¾ ÎÄ ¼þ£¬ ËÑ Ë÷ Íê ³É ºó£¬ ÔÚLibrary »­ ±Ê ÖÐ ÊÖ ¹¤ ½« Õâ Щ ÐÞ ¸Ä ºó µÄ ¶Ô Ïó Êä Èë ¿â ÖС£

¡¡¡¡ÎÒ ÃÇ Òª ×¢ Òâ µÄ ÎÊ Ìâ ÊÇ£¬ Èç ¹û ÔÚ ²» ͬ µÄ ¶Ô Ïó Ö® ¼ä ¶¼ Òý Óà ÁË ÐÞ ¸Ä µÄ ÎÄ ×Ö Ê±£¬ Êä Èë Õâ Щ ¶Ô Ïó µÄ ˳ Ðò ÊÇ Ê® ·Ö ÖØ Òª µÄ£¬ Àý Èç Äú ÐÞ ¸Ä ÁË È« ¾Ö ±ä Á¿ µÄ Ãû ³Æ£¬ Äú ¾Í Ó¦ µ± Ê× ÏÈ Êä Èëapplication ¶Ô Ïó£¬ Ò² ¾Í ÊÇ Ëµ Äú Ó¦ µ± Ê× ÏÈ Êä Èë ¶¨ Òå ÎÄ ×Ö µÄ ÄÇ ¸ö ¶Ô Ïó¡£ Áí Ò» ¸ö ×¢ Òâ Ê Ïî ÊÇ£¬ Äú ²» ÄÜ ÐÞ ¸ÄPowerBuilder ±£ Áô µÄ ¹Ø ¼ü ×Ö£¬ Èçtype£¬within µÈ¡£ µ± Äú ʹ Óà ÁË Õâ ¸ö ËÑ Ë÷ ¹¤ ¾ß ÒÔ ºó£¬ Ëü »á ×Ô ¶¯ Éú ³É Ò» ¸ö ÎÄ ¼þ Ö¸ ʾ Äú Ðè Òª Êä Èë ¶Ô Ïó µÄ Ãû ³Æ¡¢ Õâ ¸ö ¶Ô Ïó µÄ ¿â Ãû ºÍ ¶Ô Ïó Êä ³ö µÄ ÎÄ ¼þ Ãû¡£

¡¡¡¡ÔÚ Õâ ¸ö Ó¦ Óà µÄOpen Ê ¼þ ÖÐ ÎÒ ÃÇ Ð´ Èë Õâ Ñù Ò» ¶Î ´ú Â룺

Browser = CREATE u_objbrowser
Browser.ff_GetCurrentApplication()
Open(w_search_criteria)

¡¡¡¡Æä ÖÐ ½« Òª ´ò ¿ª µÄw_search_criteria ´° ¿Ú Èç ͼ Ëù ʾ£º

¡¡¡¡ÔÚ ÉÏ Ãæ µÄListBox ÖÐ ÏÔ Ê¾ ÁË µ± ǰ Ó¦ Óà Ëù °ü º¬ µÄpbl ¿â£¬ ÓÉ Óà »§ Ö¸ ¶¨ ËÑ Ë÷ µÄ ·¶ Χ£¬ ×ó Ï ½Ç Ϊ Ê® ¸ö ¶à Ñ¡ ¿ò£¬ Ö¸ ¶¨ Òª Ñ¡ Ôñ µÄ ¶Ô Ïó Ãû ³Æ£¬ ÓÒ Ï ½Ç ÓÉ Óà »§ Êä Èë ²é ÕÒ ºÍ Ìæ »» µÄ ×Ö ·û ´® ÄÚ ÈÝ¡£

¡¡¡¡ÔÚ Õâ ¸ö ´° ¿Ú ÖÐ Éù Ã÷ Ò» ¸öwstr_SearchCriteria ½á ¹¹ µÄ ʵ Àýiwstr_SearchCriteria£¬ ½« Óà »§ Êä Èë µÄ ÐŠϢ Ìî д Èë Õâ ¸ö ½á ¹¹ ÖС£ Õâ ¸ö ½á ¹¹ °ü À¨£º

boolean object_type[]  //Óû§ÔÚ´°¿ÚÓÒϽÇÑ¡ÖеĶÔÏóÀàÐÍ
integer         lib_count        //Óû§Ñ¡Ôñ¶ÔÏó¿âµÄ¸öÊý
string          lib_list[]       //Óû§Ñ¡ÔñÁ˵Äpbl¿âÃû
boolean match_case       //Óû§ÊÇ·ñÑ¡ÔñÁË¡°Çø·Ö´óСд¡±µÄÑ¡Ïî
´ËÍ⻹Ҫ¶ÔÒÔϼ¸¸öʵÀý±äÁ¿¸³Öµ£º
string is_SearchFor   //Óû§Ö¸¶¨ËÑË÷µÄ×Ö·û´®
string is_ReplaceText //Óû§Ö¸¶¨Ìæ»»µÄ×Ö·û´®
integer ii_ReplaceLen = len(is_SearchFor)
integer ii_SecharLen = len(is_ReplaceText)

¡¡¡¡µ± Óà »§ °´ Ï¡° ¿ª ʼ ²é ÕÒ¡± µÄ °´ Å¥ ÒÔ ºó£¬ ³ö ÏÖ Ò» ¸ö ÏÔ Ê¾ ½ø ¶È µÄ ×Ó ´° ¿Ú¡£ Õâ ¸ö ´° ¿Ú µÄ Éè ¼Æ ¹ý ³Ì ÏÞ ÓÚ Æª ·ù ´Ó ÂÔ¡£ ÔÚPowerBuilder4.0 µÄ Àà ¿â ÖÐ ÓÐ Ò» ¸ö ¿É ÒÔ Àû ÓÚ µÄ Óà ÓÚ ÏÔ Ê¾ ½ø ¶È µÄ ´° ¿Ú£¬ ͨ ¹ý µ÷ Óà ¸Ã ´° ¿Ú µÄf_progress() º¯ Êý ¿É ÒÔ ÏÔ Ê¾ Õý ÔÚ ½ø ÐÐ µÄ ½ø ¶È£¬ ±¾ ÎÄ Ò² Õý ÊÇ ½« Õâ ¸ö ´° ¿Ú ½ø ÐÐ ¸Ä ½ø ºó µÃ µ½ µÄ£¬ ²» ¹ý Õâ ¸ö ´° ¿Ú ÔÚPowerBuilder5.0 µÄ Àà ¿â ÖÐ ±» È¡ Ïû ÁË£¬ Èç ¹û Äú Ò² Ïë ʹ Óà Ëü£¬ ¾Í Ö» ÄÜ ½« Æä ´Ó4.0 ÖÐ Éý ¼¶ µÃ µ½ ÁË¡£ ÔÚ Õâ ¸ö ´° ¿Ú ÖÐ ÎÒ ÃÇ Ê¹ Óà ÁË Á½ ¸ö Óà »§ ×Ô ¶¨ Òå Ê ¼þue_object ºÍue_search À´ ·Ö ±ð ¿Ø ÖÆ ËÑ Ë÷ µÄ ¶Ô Ïó ºÍ Íê ³É ²é ÕÒ ¹¤ ×÷¡£

¡¡¡¡µ± ÓÐ ÎÄ ±¾ ±» Ìæ »» ʱ£¬ ÎÒ ÃÇ µ÷ Óà ´° ¿Ú º¯ Êýwf_SaveExportObject()£¬ ½« Õâ ¸ö ¶Ô Ïó µÄ Êä ³ö ÎÄ ¼þ ¹Ú ÒÔ$PBExportHeader$objectnam e.ext~r~n µÄ ÎÄ ×Ö£¬ ²¢ ½« Æä ±£ ´æ ³É Ϊ Ò» ¸ö ÎÄ ¼þ¡£ Õâ ¸ö ¶Ô Ïó Ãû ³Æ µÄ ǰ8 ¸ö ×Ö ·û ×÷ Ϊ ÎÄ ¼þ Ãû ³Æ£¬ Èç ¹û ³ö ÏÖ ÖØ Ãû£¬ ½« Ìá ʾ Óà »§£¬ ÓÉ Óà »§ ½ø ÐÐ È· ÈÏ¡£

¡¡¡¡ÔÚ Õâ ¸ö ½ø ¶È ´° ¿Ú ´ò ¿ª ʱ£¬ ÎÒ ÃÇ Éù Ã÷ Ò» ¸öwstr_object ½á ¹¹ µÄ ʵ Àý Êý ×éiwstr_object[]£¬ Óà ÒÔ ¼Ç ¼ Óà »§ Ñ¡ ÖÐ ÁË µÄ ¶Ô Ïó Àà ÐÍ¡£ Õâ ¸ö ½á ¹¹ °ü À¨ ÒÔ Ï ¼¸ ¸ö Ôª ËØ£º

string  libraryname     //¸Ã¶ÔÏó½«ÒªÔÚÄĸöpbl¿âÖÐËÑË÷
integer objecttype      //Õâ¸ö¶ÔÏóÀàÐÍ
integer objectcount     //ÔÚÕâ¸ö¿âÖй²ÃüÖÐÁ˶àÉÙ¸ö¸Ã¶ÔÏóÀàÐÍ
string  objectlist[]    //ÃüÖжÔÏóµÄÃû³Æ
ÔÚue_objectʼþÖÐÎÒÃÇÒª×÷ÒÔϳõʼ»¯µÄ¹¤×÷£º
int li_MaxIndex,li_LibCnt, k, j
string  ls_List
libdirtype libdir[] = {dirapplication!,dirdatawindow!, & 
        dirfunction!,dirmenu!,dirpipeline!,dirproject!,dirquery!,& 
        dirstructure!,diruserobject!,dirwindow!}
long ProgressMax, ProgressCur = 0
int li_curobj, li_curobjcount
libexporttype libexport[]={exportapplication!,exportdatawindow!, & 
        exportfunction!,exportmenu!,exportpipeline!,exportproject!,
       exportquery!,& 
        exportstructure!,exportuserobject!,exportwindow!}
li_MaxIndex = 0
liLibCnt = iwstr_SearchCriteria.lib_count
//¶Ôÿһ¸öÓû§Ñ¡ÖеÄpbl¿â
FOR j = 1 to li_LibCnt
  //¶ÔÓÚÿһ¸ö¿ÉÄÜÑ¡ÔñµÄ¶ÔÏóÀàÐÍ
  FOR k = 1 to 10
    //Èç¹ûÓû§Ñ¡ÔñÁ˸öÔÏóÀàÐÍ
    IF iwstr_searchcriterial.object_types[k] THEN
      li_MaxIndex ++ 
      //±£´æ¿âÃû
      lwstr_object[li_MaxIndex].LibraryName =&
         iwstr_searchcriterial.Lib_List[j]
        //±£´æ¶ÔÏóÀàÐÍ
      lwstr_object[li_MaxIndex].ObjectType = k
      //»ñÈ¡¸Ã¶ÔÏóÀàÐÍÔÚ¿âÖеÄÈ«²¿Ãû³ÆÁбí
      ls_List = Browser.uf_GetLibraryObjects(&
        lwstr_object[li_MaxIndex].LibraryName,&
         LibDir[k], TRUE)
      //½«Ãû³ÆÁбíת»»ÎªÊý×éÐÎʽ
      lwstr_object[li_MaxIndex].ObjectCount = &
         Browser.uf_ConvertListToArray(ls_List,&
         lwstr_object[li_MaxIndex].ObjectList, "~t~n")
      ProgressMax = ProgressMax + &
       lwstr_object[li_MaxIndex].ObjectCount
    END IF
  NEXT
NEXT

¡¡¡¡// ÏÖ ÔÚ Òª ËÑ Ë÷ µÄ ¶Ô Ïó Ãû ³Æ ¶¼ ÒÑ ¾­ È· ¶¨£¬ ½Ó Ï À´ ÎÒ ÃÇ Òª ×÷ µÄ Ê Çé ¾Í ÊÇ Ñ­ »· Êä ³ö ÿ Ò» ¸ö

¡¡¡¡// ¶Ô Ïó µÄ ÎÄ ±¾£¬ ²¢ µ÷ ÓÃue_search() Ê ¼þ£¬ ËÑ Ë÷ ³ö Ö¸ ¶¨ µÄ ÎÄ ×Ö¡£

FOR li_CurIndex = 1 to li_MaxIndex
   FOR li_CurObj = 1 to lwstr_object[k].OjbectCount
        // ÏÔ Ê¾ ¶Ô Ïó ЊϢ
        st_library.Text = lwstr_object[li_CurIndex].LibraryName
        st_object.Text = lwstr_object[li_CurIndex].ObjectList[li_CurObj]
        // ½« ¶Ô Ïó Êä ³ö µ½mle_text ÖÐ
        mle_text.Text = LibraryExport(lwstr_object[li_CurIndex].LibraryName, &
          lwstr_object[li_CurIndex].ObjectList[li_CurObj], &
        LibExport[lwstr_object[li_CurIndex].ObjectType])
        THIS.Event ue_search()
        ProgressCur ++
        f_Progress( ProgressCur / ProgressMax )
   NEXT
NEXT

UE_SEARCHʼþ½«ËÑË÷Óë֮ƥÅäµÄÎı¾£¬Æä´úÂëÈçÏ£º
int       li_SearchPos = 0
boolean  lb_Changed = False
DO
   IF iwstr_searchcriterial.match_case THEN
        li_SearchPos = Pos(mle_text.Text, is_SearchFor, li_SearchPos )
   ELSE
      li_SearchPos = Pos(UPPER(mle_text.Text),is_SearchFor, li_SearchPos )
   END IF
   IF li_SearchPos > 0 THEN
        mle_text.text = Replace(mle_text.text, li_SearchPos, ii_SearchLen, &    
        is_ReplaceText )
        changed = true
        li_SearchPos += ii_ReplaceLen
   END IF
LOOP WHILE li_SearchPos <> 0
//Èç¹ûûÓз¢ÏÖÆ¥ÅäµÄÎÄ×ÖÔò·µ»Ø£¬·ñÔò½«±£´æ¸ÃÊä³öÎļþ
IF Changed THEN
   wf_SaveExportObject()
END IF

¡¡¡¡Õâ Àï ÎÒ ÃÇ Ö» ÊÇ ÁÐ ³ö ÁË Õâ ¸ö Èí ¼þ ÖÐ ²¿ ·Ö ´ú Â룬 Æä Óà ²¿ ·Ö Äú ¿É ×Ô ÐÐ ²¹ Æë¡£ Ê ʵ ÉÏ£¬ Õâ ¸ö Ó¦ Óà С Èí ¼þ µÄ Óà ; ÊÇ ·Ç ³£ ¹ã µÄ¡£ ÎÒ ÃÇ ÔÚ ÒÔ Ç° µÄ ר Ìâ ÖÐ Ôø ¾­ ̸ µ½ ¹ý ʹ Óà ¿É ÖØ Óà µÄ Êý ¾Ý ´° ¿Ú µÄ ÎÊ Ì⣬ ½« Êý ¾Ý ´° ¿Ú ¶¨ Òå Ϊ ÓÉ Óà »§ ¶Ô Ïódw_main ¼Ì ³Ð ¶ø À´ µÄ Óà »§ ¶Ô Ïó£¬ ²¢ ÇÒ Ìá µ½ ÁË Òª ¸Ä ±ä ÒÑ Éè ¼Æ ºÃ µÄ Êý ¾Ý ´° ¿Ú Ëù Ó¦ ¼Ì ³Ð µÄ ׿ ÏÈ ¶Ô Ïó¡£ ´Ë Íâ Äú ÔÚ ±à ³Ì ÖÐ ¿É ÄÜ ¾­ Àú ¹ý Õâ Ñù µÄ Ê Ç飬 ÔÚ ×î ¿ª ʼ ±à ³Ì Ôø ¾­ ³¢ ÊÔ Ê¹ Óà ÁË Ò» Щ ¼ò µ¥ µØ ´° ¿Ú ¼Ì ³Ð£¬ ¶ø µ± Äú Íê ³É ÁË ¸Ã Èí ¼þ µÄ ¿ª ·¢£¬ ¶ø ÇÒ ¾ß ÓÐ ÁË Ò» ¶¨ µÄ ¿ª ·¢ ¾­ Ñé ºó£¬ ÔÚ Õû Àí Õâ Щ ´ú Âë ʱ£¬ Äú »á ·¢ ÏÖ ÓÐ ¸ü ºÃ µÄ ¼Ì ³Ð ¹Ø ϵ À´ È¡ ´ú ÏÖ ÓÐ µÄ ²ã ´Î£¬ µ± Äú Éè ¼Æ ºÃ РµÄ »ù Àà ºó£¬ ¾Í ¿É ÒÔ Ê¹ Óà Õâ ¸ö Èí ¼þ À´ Ìæ »» Ô­ ÓÐ µÄ »ù Àà ¶Ô Ïó ÁË¡£

¡¡¡¡ÓÉ ÓÚPowerBuilder û ÓРΪ ÎÒ ÃÇ Ìá ¹© ½« ¶Ô Ïó Êä Èëpbl ¿â µÄ º¯ Êý£¬ ÎÒ ÃÇ Ö» ÄÜ ½« Æä ±£ ´æ ³É Ϊ ÎÄ ¼þ£¬ È» ºó ÊÖ ¹¤ Êä Èë ¶Ô Ïó ¿â ÖС£ Èç ¹û Äú ÈÏ Îª Õâ Ñù Ì« Âé ·³£¬ Ò² ¿É ÒÔ Ê¹ ÓÃC Óï ÑÔ µ÷ Óà ÆäORCA µÄAPI º¯ Êý£¬ Óà ³Ì Ðò À´ Íê ³É Êä Èë ¹¤ ×÷£¬ ²» ¹ý Õâ ¸ö ÄÚ ÈÝ ¾Í ³¬ ³ö ÁË ±¾ ÎÄ µÄ ·¶ Χ ÁË¡£