ورود

View Full Version : مبتدی: نحوه استفاده از CommonDialog در Visual Basic 6 را توضیح دهید ؟



Reza_Zeby
چهارشنبه 24 آذر 1389, 12:13 عصر
سلام

من میخوام داخل یک برنامه برای ذخیره کردن یک فایل از CommonDialog استفاده کنم ، البته من از کامپوننت Codejock برای CommonDialog استفاده کردم و از comdlg32 استفاده نکردم .

این کد کلیدی هست که قراره فایل رو Save کنه :


Private Sub cmd_save_Click

()

Call txt_password_set
Call txt_pass_set
Call save_file
Dim FileName As String

CommonDialog1.DialogTitle = "Save File"
CommonDialog1.FileName = cbo_model.Text + " _ Password = " + txt_password1 + txt_password2 + txt_password3 + txt_password4
CommonDialog1.Filter = "Dat File *.dat|*.dat"
CommonDialog1.InitDir = txt_save.Text
CommonDialog1.ShowSave

Call CopyMove

txt_save.Text = CommonDialog1.FileName
txt_log.Text = "Saved to : " + txt_save.Text

End Sub


این هم قسمتی هست که فایلو کپی میکنه :




Sub CopyMove()
Dim strSource As String
Dim strTarget As String
Dim lngRetVal As Long
strSource = "C:\file.dat"
strTarget = CommonDialog1.FileName

lngRetVal = CopyFile(Trim$(strSource), Trim(strTarget), False)
If lngRetVal Then
txt_log.Text = "File copied!"
Else
MsgBox "Error. File not moved!"
End If
End Sub

برنامه یک سری تغییرات در فایلی که در C:\file.dat قرار داره میده و بعد قراره فایل در یک مکان دیگه ذخیره بشه .....

موقعیت فایلی که قراره ذخیره بشه همیشه در c:\file.dat قرار داره و موقعیکه CommonDialog باز میشه تغییرات انجام شده و فقط قراره فایل مورد نظر در مکانیکه در CommonDialog مشخص شده ذخیره بشه ....

با این کدی که الان هست فایل ذخیره میشه ولی اگر در مسیر مورد نظر فایلی با همون نام باشه بدون هیچ سوالی فایل Replace میشه ، ضمنا اگر روی کلید Cancel که روی CommonDialog هست هم کلیک کنیم باز هم فایل در مسیر مورد نظر ذخیره میشه اما بدون پسوند .

من میخوام موقع ذخیره فایل اگر در مسیر مورد نظر فایلی با همون نام قرار داشت برنامه اخطار بده که فایل مورد نظر وجو داره و ..... که با کلیک روی کلید Yes فایل جایگزین بشه و با کلیک روی No پنجره CommonDialog دوباره نمایش داده بشه ، ضمنا اگر روی کلید Cancel موجود روی CommonDialog کلیک کنیم ، فایلی ذخیره نشه و CommonDialog بسته بشه .....

با تشکر ....

SlowCode
پنج شنبه 25 آذر 1389, 18:46 عصر
برای replace تونستم یه چیزی بنویسم اما برای cancel نه، حالا یه نگاهی بنداز شاید به دردت خورد:گیج:.

Reza_Zeby
جمعه 26 آذر 1389, 17:31 عصر
سلام

دوست عزیز این سورسی که شما گذاشتی ایراد داره ، چه فایلی در مسیر مقصد باشه چه نباشه اخطار میده که همچین فایلی هست Replace کنم یا نه .........

با تشکر

Reza_Zeby
جمعه 26 آذر 1389, 17:43 عصر
سلام

داخل یک انجمن دیدم نوشته بود که از این کد باید استفاده کنید :


Determine if a File Exists Using the Windows API




Option Explicit

Private Const INVALID_HANDLE_VALUE = -1
Private Const MAX_PATH = 260

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long





'Usage:
'dim bFileExists as boolean
'bFileExists = FileExists("c:\win\system\comctl32.dll")
Public Function FileExists(sSource As String) As Boolean

Dim WFD As WIN32_FIND_DATA
Dim hFile As Long

hFile = FindFirstFile(sSource, WFD)
FileExists = hFile <> INVALID_HANDLE_VALUE

Call FindClose(hFile)

End Function

چطوری از این کد باید استفاده کنم ؟

Reza_Zeby
جمعه 26 آذر 1389, 18:18 عصر
سلام

این هم هست :


Detect if a file exists




Function FileExists (strPath As String) As Integer
Dim lngRetVal As Long
On Error Resume Next
lngRetVal = Len(Dir$(strPath))
If Err Or lngRetVal = 0 Then
FileExists = False
Else
FileExists = True
Emd Of
End Function

Reza_Zeby
دوشنبه 29 آذر 1389, 18:18 عصر
سلام

ببخشيد دوستان من اين تاپيک رو چند روزه باز کردم و گير اين کدم ، اگر ميشه جواب ما رو هم بديد .

با تشکر

parselearn
دوشنبه 29 آذر 1389, 18:57 عصر
از API هم ميتونيد استفاده كنيد
http://www.visualbasictutor.com/visual-basic-60-programming-1/making-a-quotbrowsequot-button.shtml

Reza_Zeby
دوشنبه 29 آذر 1389, 19:47 عصر
سلام براي کليد Cancel اين کد رو اضافه کردم و درست شد :





CommonDialog1.CancelError = True
On Error GoTo ErrHandler

ErrHandler:
Exit Sub

براي نمايش پيغام قبل از Replace کردن فايل بايد چکار کنم در صورتيکه کاربر کليد NO رو زد دوباره CommonDialog نمايش داده بشه و در صورت زدن کليد Yes فايل Replace بشه ؟

parselearn
سه شنبه 30 آذر 1389, 11:41 صبح
فلگ رو تنظيم كنيد
فكر كنم مشكل حل بشه


CommonDialog1.Flags = cdlOFNOverwritePrompt
CommonDialog1.ShowSave


در صورتي كه جواب نداد
واژه fileexist vb6 در گوگل جستجو كنيد. توابع بسيار است

Reza_Zeby
سه شنبه 30 آذر 1389, 15:50 عصر
فلگ رو تنظيم كنيد
فكر كنم مشكل حل بشه


CommonDialog1.Flags = cdlOFNOverwritePrompt
CommonDialog1.ShowSave


در صورتي كه جواب نداد
واژه fileexist vb6 در گوگل جستجو كنيد. توابع بسيار است

سلام

ممنون با همين کد درست شد ، دستت درد نکنه :)