الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب: progressBar مع عملية الحفظ

مغلق
بدأه AMRO في 8 ديسمبر 2002 · 9 رد · 1,157 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

وكل عام وأنتم بخير وأعاده الله علينا وعلى جميع المسلمين بالنصر والخير

أرجوا مساعدتي في عمل (progressBar) شريط تقدم الحالة , أثناء عملية النسخ على قرص مرن

والكود عندي كالتالي :

On Error GoTo diskerror

Kill ("a:*.*")

Shell ("C:data1ARJ.EXE A A:data.ARJ C:data1data.MDB")

 Exit Sub

diskerror:

 MsgBox (Err.Description), , "

 Resume

Err:



End Sub

وهذا كود غير كامل ليقوم بعمل شريط التقدم لكن في عملة ترتيب نص وأنا أرغب في الحفظ السابق

lineCount% = 0

charsInFile% = Len(txtNote.Text)

If charsInFile% < 2 Then Exit Sub 



'otherwise, begin sort by displaying progress bar

ProgressBar1.Visible = True

ProgressBar1.Min = 1

ProgressBar1.Max = charsInFile%   'set max for progress bar

ProgressBar1.Value = 1            



'determine number of lines in the text box

For i% = 1 To charsInFile%

    letter$ = Mid(txtNote.Text, i%, 1)

    ProgressBar1.Value = i%    

    If letter$ = Chr$(13) Then 

        lineCount% = lineCount% + 1  

        i% = i% + 1            

    End If

Next i%



'reset progress bar for next phase of sort

ProgressBar1.Value = 1

ProgressBar1.Max = lineCount%



'build an array to hold the text in the text box

ReDim strArray$(lineCount%) 'create array of proper size

curline% = 1

ln$ = ""  'use ln$ to build lines one character at a time

For i% = 1 To charsInFile%     'loop through text again

    letter$ = Mid(txtNote.Text, i%, 1)

    If letter$ = Chr$(13) Then 'if carriage return found

        ProgressBar1.Value = curline%  'show progress

        curline% = curline% + 1    'increment line count

        i% = i% + 1            'skip linefeed char

        ln$ = ""               'clear line and go to next

    Else

        ln$ = ln$ & letter$    'add letter to line

        strArray$(curline%) = ln$  'and put in array

   End If

Next i%



'sort array

ShellSort strArray$(), lineCount%



'display sorted array in text box

txtNote.Text = ""

Wrap$ = Chr$(13) & Chr$(10) 'add date to string

curline% = 1

For i% = 1 To lineCount%

    txtNote.Text = txtNote.Text & strArray$(curline%) & Wrap$

    curline% = curline% + 1

Next i%



'hide progress bar

ProgressBar1.Visible = False

End Sub

أرجوا إعداد شريط التقدم مع عملية الحفظ (أي الضغط على زر الحفظ )

هذا هام جداً أرجوا مساعدتي مع خالص الشكر والتقدير الآستاذ حسين

لا تنسانا

:o طلب آخر

كيف أستخدم مثلاً زر أمر أو كمبو بوكس لمرة واحدة فقط يعني حتى التشغيل

الآخر للبرنامج لايظهر كأن يستخدم مرة واحدة ثم يحذف؟؟؟؟؟

شاكراً للجميع

#2

يا أخي العزيز : إذا أردت إظهار شريط التقدم عند الحفظ أو النسخ أوعلمية من هذه العمليات فلا تستخدم دوال من اللواتي تنفذ العملية بشكل كامل مرة واحدة رغم أن هذا أسرع .لكنً تستطيع أن تحفظ الملف أنت بايت بايت عن طريق استخدم الدالة input أو put أو غيرهما وبهذا تستطيع التحكم بالشريط . أما أن تستخدم الدوال التي تنسخ أو تحفظ مرة واحدة ، فهذا لا يمكنك من استخدام شريط التقدم . يمكن استخدم شريط التقدم عند التعامل مع هذه الدوال لإجراء عمليات على عدة ملفات ، لكن لا أعتقد أن هذا ماتريده هنا .

بالنسبة للسؤال الثاني : فأعتقد أنه يجب أن تستخدم الريجستري لحفظ متغير ما يدل على أن البرنامج قد تم تشغيلة مسبقاً ، وعند بدء تشغيل البرنامج افحص الريجستري فإذا كان هذا المتغير موجود أو لدية قيمة معينة ، أخفي ذلك الزر أو أجعل البرنامج يظهر بشكل آخر .

إرجو أن يكون هذا هو ما تبحث عنه .

#3

الأستاذ نبهان وفقه الله

أشكرك جزيل الشكر على الإفادة

وأرجوا أن تعطيني مثال بالكود للحفظ السابق مع شريط التقدم كما ترى أنت

لأنه الحقيقة أتعبني كثيراً وما صلح معي ....:confused:

آسف بأتعبك معي لكن الله لايحرمك الأجر

كذلك للسؤال الثاني وتحياتي لك ....

أخوك

#4

هذا هو الكود أخي ، وكلما عليك عمله هو تحديد الملف المراد نسخة في المتغير SrcFile وتحديد الملف الجديد DesFile . يجب أن يحتوي الفورم على شريط تقدم ProgressBar1 و زر Command1.

Private Sub Command1_Click()
On Error GoTo CopyErr
'Declare variables
Dim SrcFile As String
Dim DestFile As String
Dim SrcFileLen As Long
Dim nSF, nDF As Integer
Dim Chunk As String
Dim BytesToGet As Integer
Dim BytesCopied As Long

'The source file the you want to copy
SrcFile = "C:SrcFile.txt"
'The destination file name
DestFile = "A:DestFile.txt"

'Get source file length
SrcFileLen = FileLen(SrcFile)
'Progress bar settings
ProgressBar1.Min = 0
ProgressBar1.Max = SrcFileLen

'Open both files
nSF = 1
nDF = 2
Open SrcFile For Binary As nSF
Open DestFile For Binary As nDF

'How many bytes to get each time
BytesToGet = 4096 '4kb
BytesCopied = 0
'Show Progress
ProgressBar1.Value = 0
ProgressBar1.Visible = True

'Keep copying until finishing all bytes
Do While BytesCopied < SrcFileLen
    'Check how many bytes left
    If BytesToGet < (SrcFileLen - BytesCopied) Then
        'Copy 4 KBytes
        Chunk = Space(BytesToGet)
        Get #nSF, , Chunk
    Else
        'Copy the rest
        Chunk = Space(SrcFileLen - BytesCopied)
        Get #nSF, , Chunk
    End If
    BytesCopied = BytesCopied + Len(Chunk)

    'Show progress
    ProgressBar1.Value = BytesCopied

    'Put data in destination file
    Put #nDF, , Chunk
Loop

'Hide progress bar
ProgressBar1.Visible = False

'Close files
Close #nSF
Close #nDF
Exit Sub

CopyErr:
MsgBox Err.Description, vbCritical, "Error"
End Sub
#5

الاستاذ نبهان وفقك الله

عمل جميل ورائع ومتقن وليس لك مني إلا الدعاء ثم اننا لانستغني

عن خدماتك الرائعة في المنتدى

شاكراً لك أخي الحبيب (gift)

#6

أخي لا شكر على واجب ، وبعدين إحنا أخوة ونتعاون مع بعضنا البعض ، بالنسبة للقسم الثاني إذا حصلت فرصة باكتب لك الكود ، بس في خلال هذا الوقت حاول تبحث هنا وهنالك ، القضية هي كيف تسجل في الريجستري وكيف تقرأ منها .

حظاً موفقاً .

#7

كلاكم جزاكما الله خير الجزاء وأكثر من أمثالكم

#8

الاستاذ العزيز نبهان المضلع :

السلام عليكم ورحمة الله

أريد وضيفة أخرى في الكود السابق مع progressbar وهو أخذ نسخة من القرص الصلب بالطريقة التالية وبضغط الملفات التالية عن طريق برنامج الضغط ARJ والاشكال في هذا أن الأمر كله في سطر واحد وهو بالدالة SHELL

Shell ("C:manarARJ.EXE A A:maa1.ARJ C:manardata1.MDB")

الأمر السابق يقوم بضغط الملف ثم نسخه على القرص المرن ,,

والسؤال كيف أستطيع عمله مع progressbar ... وأنت عملت الكود السابق

مشكوراً تحدد في الملف المطلوب نسخة إلى ملف آخر كما أعطيتني كالتالي :

'The source file the you want to copy

SrcFile = "C:manardata2.mdb"

'The destination file name

DestFile = "c:back3data2.mdb"

أو إذا كان لديك حيلة أخرى

أرجوا الافادة ,,,,,, وتحملنا ,,, تحياتي لك

#9

برجاء لو امكن اعطاء مثال كامل على الكود

KHALED_HELAL

#10

لو امكن مثال عن progessrbar

KHALED_HELAL

هذا الموضوع مغلق.

مواضيع مشابهة