كيف اجعل ProgressBar يتزامن مع العمل المنجز
#1
السلام عليكم
كيف اجعل ProgressBar يتزامن مع العمل المنجز من البرنامج مثلا تحميل ملف او ارسال بيانات كبيرة جدا الى قاعدة بيانات
وفقكم الله
الرد
#2
إقتباس :مثلا تحميل ملف او ارسال بيانات كبيرة جدا الى قاعدة بيانات
ما هي طريقة الارسال ..؟
غالباً .. يكون هناك متغير في عملية الارسال ... يحدد حجم الملف المرسل ... وما مقدار البياانات المرسلة ...
لذلك قم بإعطاء الـ ProgressBar.Max حجم الملف المرسل و ProgressBar.Position حجم البياانات المرسلة

---
عادتاً ... إذا كنت تستعمل حلقة ( For, While ... ) تستعمل متغير يكون عدااد للحلقة وتقوم بإعطاء
قيمته للـ ProgressBar.Position

مثال :
PHP كود :
var
  
i : Integer;
begin
  ProgressBar1
.Min := 0;
  
ProgressBar1.Max := 50000;
  for 
i := 0 to 50000 do
  
begin
    
// your codes ...
    
ProgressBar1.Position := i
  end
;
end; 

وايضاً تختلف الطرق على حسب الحالة التي انت بها ...
الرد
#3
بارك الله فيكم اخي الكريم

ما القصد بحجم البيانات المرسلة ؟

ماذا لو حدث خطأ واردت ان يكتب لي البروقرس بار كلمة خطأ بالانجليزي داخل البروقرس بار وايضا نسبة التحميل

وفقكم الله
الرد
#4
ALmuhhnad كتب :مثال :
PHP كود :
var
  
i : Integer;
begin
  ProgressBar1
.Min := 0;
  
ProgressBar1.Max := 50000;
  for 
i := 0 to 50000 do
  
begin
    
// your codes ...
    
ProgressBar1.Position := i
  end
;
end; 
انتبه أخي .. ستقوم بتكرار الكود حوالي 50000 مرة !!!
ماذا لو كانت لدينا دالة تستغرق 5 دقائق !! ستقوم بمناداة الدالة 50000 مرة ..

إقتباس :وايضاً تختلف الطرق على حسب الحالة التي انت بها ...
كلام صحيح ... على حسب الكود المستعمل
أغلب الأحيان يتم استخدام دوال رياضية لحساب الزمن الذي تستغرقه الدالة ثم اجراء علاقة ثلاثية بين الزمن المستغرق و قيمة ال Max لل ProgressBar ...
الرد
#5
السلام عليكم ورحمة الله

إقتباس : ما القصد بحجم البيانات المرسلة ؟
على ما اعرف انه في التعامل مع البياانات يوجد متغير يشير او يحتوي على معلومة عن المعلومات التي تم تحميله او تم ارسالها
وانا لم اجرب البيانات وقواعد البيانات في دلفي لذلك لا استطيع ان افيدك بكود معين ...

إقتباس : ماذا لو حدث خطأ واردت ان يكتب لي البروقرس بار كلمة خطأ بالانجليزي داخل البروقرس بار وايضا نسبة التحميل
تستطيع فعل ذلك من خلال وضع الامر في Block جملة Try ... except
مثال عندما لا تعرف نوع الخطا وتضع إستثناء عامل لجميع الاخطاء التي ستحدث :
PHP كود :
try
    
// Your Code
  
except // if any an error happened ,do except
    
ProgressBar1.Text := 'Error !!'
  
end; 

مثال عندما تعرف نوع الخطأ ونفرض انه من نوع EMathError نكتب هذا الكود :
PHP كود :
try
    
// Your Code
  
except on EMathError do // if the error of Math happened ,do except
    
ProgressBar1.Text := 'Error on Math'
  
end; 

هذا ما اعرفه .. اتمنى اني افدتك والسلام عليكم
---------
إقتباس :انتبه أخي .. ستقوم بتكرار الكود حوالي 50000 مرة !!!
ماذا لو كانت لدينا دالة تستغرق 5 دقائق !! ستقوم بمناداة الدالة 50000 مرة ..

نعم صحيح على اسااس ان السائل يعرف اسااسيات اللغة ... فهذا الرقم فقط للمثال Smile
الرد
#6
بارك الله فيكم أخي ALmuhhnad
حسنا ماذا لو أردت ان اجعل البروقرس بار عبارة عن صورة حميلة داخل مستطيل طويل تمتد وكانها بروقرس بار
و اعذر لي بساطتي وفقك الله
الرد
#7
تستطيع فعل ذلك بعدة طريق ودائماً ما نختار اللطريقة الاسهل والاريح لنا
ارفقت مثال صغير ... وبسيط ومليء بالعيوب :d


الملفات المرفقة
.rar   Example ProgressBar with Image.rar (الحجم : 13.98 ك ب / التحميلات : 75)
الرد
#8
وانا حاولت تعديل عملك أخي الكريم وهذا هو الملف المعدل ، حيث وجدت ان خاصية اوتو سايز غير ناحجة

انتظر منكم الارشاد


الملفات المرفقة
.rar   Example ProgressBar with Image.rar (الحجم : 230.06 ك ب / التحميلات : 100)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم