عرض الصور - الصور مختلفة الأسماء
وموجودة في مكان واحد أو في عدة أمكنة مثال في الأكسس 2002
أضيف بتاريخ 26/8/1423هـ
نحتاج في هذه الطريقة لزر أمر لنختار الصورة لكل سجل عند
إنشاء السجل الجديد ويمكن اختيار الصور إما باستخدام كائن اكتف اكس أو بالكود ،
والأخير أفضل لسهولته ولعدم وجود مشاكل في استخدامه ، وكذلك نحتاج لتخزين مسار كل
صورة في الجدول لذلك أنشئ حقل نصي .
خطوات
الإنشاء :
1- افتح النموذج في عرض التصميم ثم اضغط زر صورة من شريط
أدوات المسمى مربع الأدوات ثم ارسم الصورة على النموذج :
2- سيظهر مربع حوار يطالبك باختيار الصورة الأولية :
اختر الصورة الأولية وهي التي ستعرض أولا .
فكرة : استخدم صورة فارغة بيضاء أو صورة مكتوب
فيها سجل جديد عندما يكون النموذج بدون سجلات .
ثم اضغط موافق .
3- ستظهر الصورة كما في الشكل :
أنا هنا اخترت الصورة
المسماة NewRecord.gif والتي تجدها مرفقة مع المثال .
الآن سم كائن الصورة
الجديد باسم عارض_الصور .
ملاحظة هامة : اسم الحقل الذي نخزن فيه مسار كل صورة في مثالي اسمه صورته .
4- في حدث عند الحالي للنموذج اكتب :
On Error GoTo err_pic
If IsNull(صورته) Or صورته = "" Then
عارض_الصور.Picture = ""
Else
عارض_الصور.Picture = صورته
End If
err_exit:
Exit Sub
err_pic:
If Err.Number = 2220 Then
MsgBox "الصورة غير موجودة."
End If
Resume err_exit
5- ضع زر أمر على النموذج لإظهار
مربع الحوار لاختيار ملف الصورة ، وفي حدث عند النقر له اكتب :
Dim picturepaht
picturepaht = GetOpenFile_CLT("", "اختر صورة :")
If picturepaht <> "" Then
صورته = picturepaht
Call Form_Current
End If
6- أنشئ وحدة نمطية عامة واكتب فيها
:
Option Compare Database
' Declarations for Windows Common Dialogs procedures
Private Type CLTAPI_OPENFILE
strFilter As String ' Filter string
intFilterIndex As Long ' Initial Filter to display.
strInitialDir As String ' Initial directory for the dialog to open in.
strInitialFile As String ' Initial file name to populate the dialog
with.
strDialogTitle As String ' Dialog title
strDefaultExtension As String ' Default extension to append to file If
user didn't specify one.
lngFlags As Long ' Flags (see constant list) to be used.
strFullPathReturned As String ' Full path of file picked.
strFileNameReturned As String ' File name of file picked.
intFileOffset As Integer ' Offset in full path (strFullPathReturned)
where the file name (strFileNameReturned) begins.
intFileExtension As Integer ' Offset in full path (strFullPathReturned)
where the file extension begins.
End Type
Const ALLFILES = "All Files"
Private Type CLTAPI_WINOPENFILENAME
lStructSize As Long
hWndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustrFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustrData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Declare Function CLTAPI_GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" _
(pOpenfilename As CLTAPI_WINOPENFILENAME) _
As Boolean
Declare Function CLTAPI_GetSaveFileName Lib "comdlg32.dll" Alias
"GetSaveFileNameA" _
(pOpenfilename As CLTAPI_WINOPENFILENAME) _
As Boolean
Declare Sub CLTAPI_ChooseColor Lib "msaccess.exe" Alias "#53" _
(ByVal hwnd As Long, rgb As Long)
Function GetOpenFile_CLT(strInitialDir As String, strTitle As String) As
String
Dim fOK As Boolean
Dim typWinOpen As CLTAPI_WINOPENFILENAME
Dim typOpenFile As CLTAPI_OPENFILE
Dim strFilter As String
On Error GoTo PROC_ERR
' Set defaults for the structure
strFilter = CreateFilterString_CLT("JPEG (*.JPG)" & Chr$(0) & "*.JPG" &
Chr$(0) & "Gif (*.GIF)" & Chr$(0) & "*.GIF" & Chr$(0))
If strInitialDir <> "" Then
typOpenFile.strInitialDir = strInitialDir
Else
typOpenFile.strInitialDir = CurDir()
End If
If strTitle <> "" Then
typOpenFile.strDialogTitle = strTitle
End If
typOpenFile.strFilter = strFilter
typOpenFile.lngFlags = OFN_HIDEREADONLY Or OFN_SHOWHELP
' Convert the CLT structure to a Win structure
ConvertCLT2Win typOpenFile, typWinOpen
' Call the Common dialog
fOK = CLTAPI_GetOpenFileName(typWinOpen)
' Convert the Win structure back to a CLT structure
ConvertWin2CLT typWinOpen, typOpenFile
GetOpenFile_CLT = typOpenFile.strFullPathReturned
PROC_EXIT:
Exit Function
PROC_ERR:
GetOpenFile_CLT = ""
Resume PROC_EXIT
End Function
Sub ConvertCLT2Win(CLT_Struct As CLTAPI_OPENFILE, Win_Struct As
CLTAPI_WINOPENFILENAME)
' Comments : Converts the passed CLTAPI structure to a Windows structure
' Parameters: CLT_Struct - record of type CLTAPI_OPENFILE
' Win_Struct - record of type CLTAPI_WINOPENFILENAME
' Returns : Nothing
'
Dim strFile As String * 512
Sub ConvertWin2CLT(Win_Struct As CLTAPI_WINOPENFILENAME, CLT_Struct As
CLTAPI_OPENFILE)
' Comments : Converts the passed CLTAPI structure to a Windows structure
' Parameters: Win_Struct - record of type CLTAPI_WINOPENFILENAME
' CLT_Struct - record of type CLTAPI_OPENFILE
' Returns : Nothing
'
On Error GoTo PROC_ERR
Function CreateFilterString_CLT(ParamArray varFilt() As Variant) As
String
' Comments : Builds a Windows formatted filter string for "file type"
' Parameters: varFilter - parameter array in the format:
' Text, Filter, Text, Filter ...
' Such As:
' "All Files (*.*)", "*.*", "Text Files (*.TXT)", "*.TXT"
' Returns : windows formatted filter string
'
Dim strFilter As String
Dim intCounter As Integer
Dim intParamCount As Integer
On Error GoTo PROC_ERR
' Get the count of paramaters passed to the Function
intParamCount = UBound(varFilt)
If (intParamCount <> -1) Then
' Count through each parameter
For intCounter = 0 To intParamCount
strFilter = strFilter & varFilt(intCounter) & Chr$(0)
Next
' Check for an even number of parameters
If (intParamCount Mod 2) = 0 Then
strFilter = strFilter & "*.*" & Chr$(0)
End If
Function RemoveNulls_CLT(strIn As String) As String
' Comments : Removes terminator from a string
' Parameters: strIn - string to modify
' Return : modified string
'
Dim intChr As Integer
intChr = InStr(strIn, Chr$(0))
If intChr > 0 Then
RemoveNulls_CLT = Left$(strIn, intChr - 1)
Else
RemoveNulls_CLT = strIn
End If