App.path تعني مسار البرنامج ، وهي تستخدم للحصول على مسار المجلد الذي يوجد فيه البرنامج .
فمثلاً إذا كان لدينا برنامج في C:New فهذا هو مسار البرنامج والذي يمكننا الحصول عليه باستخدام App.path
وللتجربة يمكنك الحصول على مسار برنامجك بواسطة أمر هكذا :
code:Msgbox App.path
وسترى أنه يعطيك مسار المجلد الذي تحفظ فيه المشروع .
الفائدة من ذلك هو تلافي مشكلة تغير المسارات من جهاز لآخر ، فمثلاً في برنامج للصور ضع جميع الصور في نفس مجلد البرنامج ، ولتحميل صورة مثلاً اسمها PP1 وامتدادها Bmp اكتب :
code
icture1.Picture = Loadpicture(App.path & "PP1.Bmp")
ويمكنك أيضاً إنشاء مجلد جديد في نفس مجلد البرنامج وتسميه مثلاً Image وتضع فيه الصور ، وبذلك يصبح أمر تحميل الصور بالشكل التالي :
code
icture1.Picture = Loadpicture(App.path & "ImagePP1.Bmp")
وليست الصور هي كل ما نستخدم فيها App.path بل كل شيء ، فمثلاً لتشغيل ملف مفكرة ملحق بالبرنامج نضعه في مجلد البرنامج ونكتب :
code:****l "notepad.exe" & " " & App.path & "RedMe.txt", vbNormalFocus
ولنسخ نفس البرنامج نستخدم الأمر التالي :
code:Filecopy App.path & App.EXEName , "C:Ahmed"
وهكذا ، وتوجد لـ App العديد من الفوائد التي لا يتسع المجال لذكرها ، ومنها مثلاً إنهاء البرنامج إذا لم يكن يعمل من القرص المدمج ، واستخدامها في أوامر حفظ البيانات واسترجاعها ، ومنع تشغيل أكثر من نسخة .... الخ
لكن ينبغي التنبه إلى أن App.path قد تعطينا C:Ahmed أو C:Ahmed ولتلافي هذه المشكلة نقوم بالتالي :
code:Dim Folder
Folder = App.path
If Right(Folder,1) <> "" then Folder = Folder & ""
هنا قمنا بتعريف متغير وخزنا فيه مسار البرنامج ، واختبرناه ، فإذا كان آخر حرف من اليمين لا يساوي فإننا نقوم باضافتها إليه .
وهكذا نتعامل مع الناتج والمخزن في المتغير Folder كأنه يحتوي على مباشرة ، ولذا لا حاجة لكتابتها قبل كتابة اسم الملف .
أخيراً هنا طريقة أخرى قرأتها للأخ المشرف طارق العبيد وقمت بتخزينها لكني لا أتذكر مكانها تحديداً ، ولذلك أوردها هنا ، وهي غير طريقة App.path
quote:
--------------------------------------------------------------------------------
2) استخدام
- Registry
* reading values from Registry by using GetSetting(conAppTitle, conRegistrySection, conRegistryKey)
* writing values to Registry by using SaveSetting conAppTitle, conRegistrySection, conRegistryKey, TqGPath
- Dialog Box , to be able to browse the dirctory to locate your database
1)
Set MyDb = OpenDatabase( App.Path & "Tareq.mdb")
2)
' Create a Module.bas then add the code showing next
Global TqGPath As String ' تعريف لتعميم اسم و مسار قاعدة البيانات
' تعريفات المشروع لوضعها في الريجستري
Public Const conAppTitle As String = "Tareq Al-Obaid Applications"
Public Const conRegistrySection As String = "Database********"
Public Const conRegistryKey As String = "Quality Control"
Sub Main()
Dim i As Integer
On Error GoTo NopathErr
FirstPath:
TqGPath = GetSetting(conAppTitle, conRegistrySection, conRegistryKey)
If TqGPath <> "" Then
Set MYDB = OpenDatabase(TqGPath)
frmLogin.Show
Exit Sub
ElseIf TqGPath = "" Then
MsgBox "This the first time to run this application , Please Specify data path", vbOKOnly, "Welcome to Complain Control application"
GoTo NopathErr
End If
Exit Sub
NopathErr:
' MsgBox "Error : " + Err.Name '+ " " + Trim(Str(Err.Number)) + " " + Err.De******ion
TqGPath = FindData
SaveSetting conAppTitle, conRegistrySection, conRegistryKey, TqGPath
GoTo FirstPath
End Sub
Function FindData() As String
On Error GoTo ErrHandler
' Configure cmdDialog in case the QC.mdb can't be found.
With frmPath.CmDlg
.DialogTitle = "Can't Find QC.mdb"
.Filter = "(*.MDB)|*.mdb"
End With
'Causes an error if user clicks on cancel
frmPath.CmDlg.CancelError = True
frmPath.CmDlg.ShowOpen
'Make sure user select your aa.mdb Database
Do While UCase(Right(Trim(frmPath.CmDlg.FileName), 6)) <> "QC.MDB"
MsgBox "File Name is not equal to QC.mdb"
frmPath.CmDlg.ShowOpen
Loop
FindData = frmPath.CmDlg.FileName
Exit Function
ErrHandler:
If Err = 32755 Then
End
End If
End Function
تحياتي للجميع