////////////////////////////////////////////////////////////// //////////////////////////////////
//
// الوظيفة: onMaintuiaFter
//
// الحدث: يتم إرسال حدث maintuiaFter بعد نقل الملفات ، عند تشغيل المستخدم النهائي
// التثبيت الذي تم تثبيته بالفعل على الجهاز. عادة
يحدث هذا من خلال إضافة/إزالة البرامج.
// في تثبيت المعالج عادة ما يعرض واجهة المستخدم التي ستُعلم
// المستخدم النهائي الذي تم الانتهاء من الصيانة/إلغاء التثبيت بنجاح.
//
////////////////////////////////////////////////////////////// //////////////////////////////////
وظيفة onMaintuiaFter ()
String Sztitle ، SZMSG1 ، SZMSG2 ، Szoption1 ، Szoption2 ؛
رقم Bopt1 ، Bopt2 ؛
يبدأ
تعطيل (Statusex) ؛
bopt1 = false ؛
bopt2 = false ؛
SZMSG1 = SDLOADSTRING (IFX_SDFINISH_MAINT_MSG1) ؛
SZMSG2 = "" ؛
szoption1 = "" ؛
szoption2 = "" ؛
sztitle = sdloadString (ifx_sdfinish_maint_title) ؛
sdfinishex (sztitle ، szmsg1 ، szmsg2 ، szoption1 ، szoption2 ، bopt1 ، bopt2) ؛
العودة 0 ؛
نهاية؛
////////////////////////////////////////////////////////////// //////////////////////////////////
//
// الوظيفة: onmoving
//
// الحدث: يتم إرسال الحدث المتحرك عند بدء نقل الملفات نتيجة
// ComponentTransferdata Call ، قبل أي عمليات نقل الملفات
// يتم تنفيذها.
//
////////////////////////////////////////////////////////////// //////////////////////////////////
وظيفة onmoving ()
سلسلة szapppath.
يبدأ
// تعيين مسار تطبيق الامتثال الشعار
// للقيام: إذا كان تطبيقك .exe في مقلع فرعي لـ TargetDir ثم أضف المجلد الفرعي
SzapPpath = TargetDir ؛
RegDBSetItem (RegDB_APPPATH ، SZAPPPATH) ؛
RegDBSetItem (RegDB_APPPATH_DEFAULT ، SZAPPPATH ^Product_key) ؛
نهاية؛
// --- تضمين قسم ملف البرنامج النصي ---
وظيفة loginsql (Sztitle ، szsqlsvname ، szsqluser ، szsqlpassword)
سلسلة szdlg ، sztemp ؛
رقم bdone ، nid ، nmessage ، ntemp ؛
int hwnddlg ؛
hwnd hwndcontrol ؛
يبدأ
szdlg = "dlg_loginsqlsv" ؛
// تسجيل البيانات التي ينتجها هذا الحوار
إذا (mode = silentMode) ثم
Sdmakename (Szappkey ، Szdlg ، Sztitle ، nloginsql) ؛
SilentReadData (szappkey ، "result" ، data_number ، sztemp ، nid) ؛
if ((nid! = back) && (nid! = cancel)) ثم
SilentReadData (szappkey ، "szsqlsvname" ، data_string ، szsqlsvname ، ntemp) ؛
SilentReadData (Szappkey ، "szsqluser" ، data_string ، szsqluser ، ntemp) ؛
SilentReadData (szappkey ، "szsqlpassword" ، data_string ، szsqlpassword ، ntemp) ؛
endif
إرجاع nid ؛
endif
// تأكد من اكتمال التهيئة العامة
إذا (! bsdinit) ثم
sdinit () ؛
endif
if (ezDefinialog (szdlg ، "" ، "" ، dlg_loginsqlsv) = dlg_err) ثم
العودة -1 ؛
endif
// 在用户选择标准按钮前进行循环
bdone = خطأ ؛
بينما (! bdone)
nid = waitondialog (szdlg) ؛ // 显示对话框
hwndcontrol = getDlgItem (hwnddlg ، sd_edit_sqlsv_name) ؛
setFocus (hwndcontrol) ؛
التبديل (NID)
حالة DLG_INIT:
ctrlsettext (szdlg ، sd_edit_sqlsv_name ، szsqlsvname) ؛
ctrlsettext (szdlg ، sd_edit_sqlsv_user ، szsqluser) ؛
ctrlsettext (szdlg ، sd_edit_sqlsv_password ، szsqlpassword) ؛
hwnddlg = cmdgethwnddlg (szdlg) ؛
sdgeneralinit (szdlg ، hwnddlg ، style_normal ، szsdproduct) ؛
// هذه الوظيفة تحدد التسمية التوضيحية لحوار الحوار القديم أو
// يضع النص في الحوارات Top Banner Area of Win2K Style
sdsetdlgtitle (szdlg ، hwnddlg ، sztitle) ؛
Case SD_EDIT_SQLSV_NAME:
nmessage = ctrlgetSubCommand (szdlg) ؛
إذا (nmessage = editbox_change) ثم
ctrlgetText (szdlg ، sd_edit_sqlsv_name ، szsqlsvname) ؛
endif
Case SD_EDIT_SQLSV_USER:
nmessage = ctrlgetSubCommand (szdlg) ؛
إذا (nmessage = editbox_change) ثم
ctrlgetText (szdlg ، sd_edit_sqlsv_user ، szsqluser) ؛
endif
الحالة sd_edit_sqlsv_password:
nmessage = ctrlgetSubCommand (szdlg) ؛
إذا (nmessage = editbox_change) ثم
CtrlgetText (SZDLG ، SD_EDIT_SQLSV_PASSWORD ، SZSQLPASSWORD) ؛
endif
حالة موافق:
NID = التالي ؛
bdone = صحيح ؛
مرة أخرى:
nid = الظهر ؛
bdone = صحيح ؛
حالة DLG_ERR:
Sderror (-1 ، "sdwelcome") ؛
nid = -1 ؛
bdone = صحيح ؛
حالة DLG_CLOSE:
sdclosedlg (hwnddlg ، nid ، bdone) ؛
تقصير:
// تحقق من المناولة القياسية
إذا (sdisstdbutton (nid) && sddostdbutton (nid)) ثم
bdone = صحيح ؛
endif
endswitch
نهاية
enddialog (szdlg) ؛
regialog (SZDLG) ؛
sduninit () ؛
// تسجيل البيانات التي ينتجها هذا الحوار
Sdmakename (Szappkey ، Szdlg ، Sztitle ، nloginsql) ؛
SilentWritedata (szappkey ، "szsqlsvname" ، data_string ، szsqlsvname ، 0) ؛
SilentWritedata (Szappkey ، "szsqluser" ، data_string ، szsqluser ، 0) ؛
SilentWritedata (szappkey ، "szsqlpassword" ، data_string ، szsqlpassword ، 0) ؛
SilentWritedata (szappkey ، "result" ، data_number ، "" ، nid) ؛
إرجاع nid ؛
نهاية؛
وظيفة exesqlfile (szsqlfilename)
سلسلة szcmdline ؛
رقم ntemp ؛
يبدأ
szcmdline = supportdir ^"osql.exe" ؛
if (launchappandwait (supportdir ^"osql.exe" ، szsqlfilename ، انتظر) <0) ثم
MessageBox ("不能运行 sql 安装文件." ، شديدة) ؛
endif
نهاية؛
وظيفة modifdbdir ()
سلسلة szinstallfile.
رقم nvresult ، nvlinenumber ؛
سلسلة Szwindir ، svreturnline ؛
رقم SN ، nstartpos ؛
String SZ1 ، SZ2 ، Sznewdir ؛
رقم ntemp ؛
يبدأ
szinstallfile = targetDir ^"install // createB.Sql" ؛
// 替换 DB 文件的建立路径
بينما (nvresult! = end_of_file)
nvresult = fileGrep (szinstallfile ، "d: // cycdata //" ، svreturnline ، nvlinenumber ، recepart) ؛
// filegteline (szodbcregfile ، nvlinenumber ، nvlinenumber) ؛
sn = strlength (svreturnline) ؛
nstartpos = strfind (svreturnline ، "d: // cycdata //") ؛
Strsub (SZ1 ، Svreturnline ، 0 ، nstartpos) ؛
Strsub (Sz2 ، Svreturnline ، nstartpos+11 ، Sn-nstartpos-11) ؛
sznewdir = sz1+targetdir ^sz2 ؛
FileInsertLine (szinstallfile ، sznewdir ، nvlinenumber ، استبدال) ؛
sz1 = "" ؛
sz2 = "" ؛
sznewdir = "" ؛
نهاية
نهاية؛
////////////////////////////////////////////////////////////// /////////////////////////////////
//
// الوظيفة: onfilereadonly
//
// الحدث: يتم إرسال حدث FileReadonly أثناء نقل الملفات عند القراءة فقط
// ملف يحتاج إلى الكتابة أو إزالته.
//
// الوسيطات: ملف - المسار الكامل للملف الذي تم تمييزه على أنه قراءة فقط.
//
// إرجاع: err_yes - يجب كتابة الملف أو إزالته.
// err_no - لا ينبغي تعديل الملف.
//
////////////////////////////////////////////////////////////// //////////////////////////////////
وظيفة onfilereadonly (ملف)
يبدأ
إرجاع sdexceptions (readonly ، ملف) ؛
نهاية؛
////////////////////////////////////////////////////////////// /////////////////////////////////
//
// الوظيفة: onfilereadonly
//
// الحدث: يتم إرسال حدث FileReadonly أثناء نقل الملفات عند القراءة فقط
// ملف يحتاج إلى الكتابة أو إزالته.
//
// الوسيطات: ملف - المسار الكامل للملف الذي تم تمييزه على أنه قراءة فقط.
//
// إرجاع: err_yes - يجب كتابة الملف أو إزالته.
// err_no - لا ينبغي تعديل الملف.
//