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 º¯ Êý£¬ Óà ³Ì Ðò À´ Íê ³É Êä Èë ¹¤ ×÷£¬ ²» ¹ý Õâ ¸ö ÄÚ ÈÝ ¾Í ³¬ ³ö ÁË ±¾ ÎÄ µÄ ·¶ Χ ÁË¡£