اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

تصميم برنامج لسنتر بلاي ستيشن


إذهب إلى أفضل إجابة Solved by Foksh,

الردود الموصى بها

4 دقائق مضت, حسين العربى said:

طبعا مش كل الاجهزه سعر واحد  فانا لاحظت في الكود انه واخد السعر من حقل جهاز 1 فقط لكل الاجهزة 

 

غير صحيح ,, كل جهاز له قيمة مختلفة ، وانا غيرت القيم في كل جهاز علشان تتأكد من هاي الفكرة :yes:

لاحظ هذا الجزء في السطر ، i هي متغير لرقم مربع النص حسب رقم الجهاز :biggrin:

Me.Controls("STSATR_DATE" & i).Value

 

تم تعديل بواسطه Foksh
رابط هذا التعليق
شارك

الان, حسين العربى said:

طيب ممكن افهم ازاي مسويها في الكود لو تكرمت

تم استخدام الخاصية Tag لكل جهاز ، حيث ما يلي :-

أزرار البدء والإيقاف Tag = Station1 للجهاز الأول ... وهكذا لكل جهاز ( Station2 ، Station3 ... إلخ )

مربعات النص والليبلات Tag = St1 للجهاز الأول ... وهكذا لبقية الأجهزة ( St2 ، St3 ... إلخ )

شرح الكود بشكل مبسط وليس تفصيلاً :-

في البداية تم حجز متغيرات عامة قابل للتعديل لتخزين القيم الزمنية للعدادات الستة و لتحديد ما إذا كان العداد قيد التشغيل أم لا و لتحديد ما إذا كان العداد متوقف مؤقتًا أم لا و لتخزين القيم الزمنية عند توقف العداد مؤقتًا . وطبعاً العدد 6 قابل للتعديل كيفما تريد .

Dim counters(1 To 6) As Double
Dim isRunning(1 To 6) As Boolean
Dim isPaused(1 To 6) As Boolean
Dim pauseCounters(1 To 6) As Double

في الحدث عند التحميل كود لجعل الأزرار بالتسمية التوضيحية Start , Stop ، والعدادات قيمتها الإفتراضية = 00:00:00 ، والفاصل الزمني = 1 ثانية ( 1000 ملي ثانية )

 

    Dim i As Integer
    For i = 1 To 6
        counters(i) = 0
        isRunning(i) = False
        isPaused(i) = False
        pauseCounters(i) = 0
        Me.Controls("lblCounter" & i).Caption = "00:00:00"
        Me.Controls("TOTEL" & i).Value = 0
        Me.Controls("cmdStartStop" & i).Caption = "Start"
        Me.Controls("cmdReset" & i).Caption = "Stop"
    Next i
    Me.TimerInterval = 1000

في الزر cmdStartStop هو المسؤول عن بدي وإيقاف مؤقت للتايمر مع تغيير حالة التسمية التوضيحية لكل زر حسب i ، حيث تم تسمية كل زر cmdStartStop بإضافة رقم يمثل رقم الجهاز للتمييز بينهم عند استدعاء الكود ..

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

Private Sub cmdStartStop_Click(Index As Integer)
    Dim stationId As Integer
    Dim startStopButton As Control
    Dim resetButton As Control
    stationId = Index
    Set startStopButton = Me.Controls("cmdStartStop" & stationId)
    Set resetButton = Me.Controls("cmdReset" & stationId)
    If startStopButton.Caption = "Start" Then
        startStopButton.Caption = "Pause"
        isRunning(stationId) = True
        isPaused(stationId) = False
        If counters(stationId) = 0 Then
            counters(stationId) = 0
        Else
            counters(stationId) = pauseCounters(stationId)
        End If
    ElseIf startStopButton.Caption = "Pause" Then
        startStopButton.Caption = "Resume"
        isRunning(stationId) = False
        isPaused(stationId) = True
        pauseCounters(stationId) = counters(stationId)
    ElseIf startStopButton.Caption = "Resume" Then
        startStopButton.Caption = "Pause"
        isRunning(stationId) = True
        isPaused(stationId) = False
        counters(stationId) = pauseCounters(stationId)
    End If
End Sub

Private Sub cmdReset_Click(Index As Integer)
    Dim stationId As Integer
    Dim resetButton As Control
    Dim counterLabel As Control
    Dim totalCostBox As Control
    Dim startStopButton As Control
    stationId = Index
    Set resetButton = Me.Controls("cmdReset" & stationId)
    Set counterLabel = Me.Controls("lblCounter" & stationId)
    Set totalCostBox = Me.Controls("TOTEL" & stationId)
    Set startStopButton = Me.Controls("cmdStartStop" & stationId)
    
    If resetButton.Caption = "Stop" Then
        resetButton.Caption = "Reset"
        isRunning(stationId) = False
        isPaused(stationId) = True
        pauseCounters(stationId) = counters(stationId)
    ElseIf resetButton.Caption = "Reset" Then
        resetButton.Caption = "Stop"
        counterLabel.Caption = "00:00:00"
        counters(stationId) = 0
        totalCostBox.Value = 0
        isRunning(stationId) = False
        isPaused(stationId) = False
        pauseCounters(stationId) = 0
        startStopButton.Caption = "Start"
    End If
End Sub

 

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

Private Sub Form_Timer()
    Dim i As Integer
    Dim totalSeconds As Long
    Dim hourlyRate As Double
    Dim totalCost As Double

    For i = 1 To 6
        If isRunning(i) And Not isPaused(i) Then
            counters(i) = counters(i) + 1
            Me.Controls("lblCounter" & i).Caption = Format(DateAdd("s", counters(i), "00:00:00"), "hh:mm:ss")
            hourlyRate = Me.Controls("STSATR_DATE" & i).Value
            totalSeconds = counters(i)
            totalCost = (hourlyRate / 3600) * totalSeconds
            Me.Controls("TOTEL" & i).Value = Format(totalCost, "0.00")
        End If
    Next i
End Sub

 

وفي النهاية استدعاء الأمر لكل زر (cmdStartStop1 ، cmdStartStop2 ... إلخ ) و (cmdReset1 ، cmdReset2 ... إلخ ) حسب تسميته :yes:

Private Sub cmdStartStop1_Click()
    Call cmdStartStop_Click(1)
End Sub

Private Sub cmdStartStop2_Click()
    Call cmdStartStop_Click(2)
End Sub

Private Sub cmdStartStop3_Click()
    Call cmdStartStop_Click(3)
End Sub

Private Sub cmdStartStop4_Click()
    Call cmdStartStop_Click(4)
End Sub
Private Sub cmdStartStop5_Click()
    Call cmdStartStop_Click(5)
End Sub

Private Sub cmdStartStop6_Click()
    Call cmdStartStop_Click(6)
End Sub

Private Sub cmdReset1_Click()
    Call cmdReset_Click(1)
End Sub

Private Sub cmdReset2_Click()
    Call cmdReset_Click(2)
End Sub

Private Sub cmdReset3_Click()
    Call cmdReset_Click(3)
End Sub

Private Sub cmdReset4_Click()
    Call cmdReset_Click(4)
End Sub

Private Sub cmdReset5_Click()
    Call cmdReset_Click(5)
End Sub

Private Sub cmdReset6_Click()
    Call cmdReset_Click(6)
End Sub

 

وسلاااااامتك يا صديقي

  • Thanks 1
رابط هذا التعليق
شارك

الف شكر استاذي ومعلمي الفاضل Foksh وجزاك الله خير الجزاء وزادك الله من علمة  

وانا اسف ان كنت تقلت علي حضرتك 

وشكرا علي سعت صدرك

لي طلب اخير استاذي الفاضل لماذا حقل عداد الوقت  حقل تكست lblcounter1 وليس حقل  نص غير منضم 

هل ممكن عمله حقل غير منضم لاني اريد تخزين البيانات في الجدول

تم تعديل بواسطه حسين العربى
اوكي
  • Like 1
رابط هذا التعليق
شارك

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

أخي العزيز Foksh

اقتباس

وهذه فكرتي المتواضعة والقابلة للتطوير بشكل بسيط جداً ,, :yes:

طبعاً أصبح العداد أفضل بدون (الرمش) الذي كان فيه أنت دائما مبدع

بالإضافة لتشغيل كل عدادات الأجهزة في نموذج واحد

وجزاك الله خيراً

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

104.gif.19bea1b688a815c75fe4644124e65129.gif

 

TEST_3.accdb

تم تعديل بواسطه ahmed draz
  • Thanks 1
رابط هذا التعليق
شارك

استاذي الفاضل ahmed draz لقد فهمتني خطأ انا اقصد حقل  عداد الوقت  حقل تكست وليس حقل  نص غير منضم 

هل ممكن عمله حقل غير منضم لاني اريد تخزين البيانات في الجدول

https://www.officena.net/ib/topic/126145-تصميم-برنامج-لسنتر-بلاي-ستيشن/?do=findComment&comment=748734

تم تعديل بواسطه حسين العربى
اوكي
رابط هذا التعليق
شارك

أخونا حسين العربى

أنا لم أفهمك خطأ فكلنا فهمنا كلامك وطنشنا بالعربي كدة

عارف ليه؟

لان تصميم البرنامج من البداية تم  على أنه برتامج Stopwatch وأضاف اليه أخونا  Foksh الحساب حسب التسعيرة

وأن القاعدة في الواقع ليس لها أي جدول فهي عبارة عن نموذج وبعض الاكواد فقط

وعند بحثي في بداية التصميم وجدت أن حساب الوقت في الاكسس وتخزينه صعب قليلاً بعكس التواريخ فهو يتعامل معها بكل سهولة

فقمت بعمله على الشكل الذي نراه

وعلية أظن من خبرتي الصفرية المتواضعة أنه يجب علينا تصميم القاعدة من جديد لتقوم بعمليات الحساب والتخزين والمكسب والخسارة واصدار التقارير و الفواتير

إلا إذا خالفني أخي العبقري  Foksh  الرأي واستطاع أن يقوم بتحويل برتامج Stopwatch  إلى قاعدة حقيقية تقوم بمهام قواعد البيانات المعروفة 

وتقبل صراحتي وشكرأً جزيلاً لك

تم تعديل بواسطه ahmed draz
  • Like 1
رابط هذا التعليق
شارك

8 ساعات مضت, حسين العربى said:

الف شكر استاذي ومعلمي الفاضل Foksh وجزاك الله خير الجزاء وزادك الله من علمة  

وانا اسف ان كنت تقلت علي حضرتك 

وشكرا علي سعت صدرك

لي طلب اخير استاذي الفاضل لماذا حقل عداد الوقت  حقل تكست lblcounter1 وليس حقل  نص غير منضم 

هل ممكن عمله حقل غير منضم لاني اريد تخزين البيانات في الجدول

بالنسبة لهذه النقطة تم حلها ، واعتقد ان الليبل أفضل في المؤقتات والقيم الوقتية لإنه غير قابل للتركيز كما هو الحال في مربع النص ستضطر لقفله وعدم تمكينه.

وسيتم إرفاق النسخة الجديدة مع تخزين القيم كما هي في الجدول.

 

6 ساعات مضت, ahmed draz said:

أخونا حسين العربى

أنا لم أفهمك خطأ فكلنا فهمنا كلامك وطنشنا بالعربي كدة

عارف ليه؟

لان تصميم البرنامج من البداية تم  على أنه برتامج Stopwatch وأضاف اليه أخونا  Foksh الحساب حسب التسعيرة

وأن القاعدة في الواقع ليس لها أي جدول فهي عبارة عن نموذج وبعض الاكواد فقط

وعند بحثي في بداية التصميم وجدت أن حساب الوقت في الاكسس وتخزينه صعب قليلاً بعكس التواريخ فهو يتعامل معها بكل سهولة

فقمت بعمله على الشكل الذي نراه

وعلية أظن من خبرتي الصفرية المتواضعة أنه يجب علينا تصميم القاعدة من جديد لتقوم بعمليات الحساب والتخزين والمكسب والخسارة واصدار التقارير و الفواتير

إلا إذا خالفني أخي العبقري  Foksh  الرأي واستطاع أن يقوم بتحويل برتامج Stopwatch  إلى قاعدة حقيقية تقوم بمهام قواعد البيانات المعروفة 

وتقبل صراحتي وشكرأً جزيلاً لك

أشكرك أخي أحمد على ذوقك 😇

وللأسف تم إنشاء جدول واحد كما قلت لك لتخزين القيم كما هي وبنفس التنسيقات في الجدول 😉

 

💡 بالنسبة للترميش كان سببه الصورة التي في النموذج.

 

تم تعديل بواسطه Foksh
  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

مشاء الله عليك استاذي  ومعلمي الفاضل Foksh وعلي صبرك  

ذيما بجواب علي كل نقطه بسالها  وبسعة صدر الله يجزيك الخير ويجعله في ميزان حسناتك ويزيدك صبرا وعلما

وفعلا الرمشه التي في النموذج كانت من الصوره التي في الخلفية 😁

تم تعديل بواسطه حسين العربى
  • Like 1
رابط هذا التعليق
شارك

النسخة الجديدة والمطورة مع بعض اللمسات :power:

1. حفظ القيم في الجدول  من خلال زر جديد = Go

2. تمييز الجهاز المشغول باللون الأخضر ، وعند الإيقاف الؤقت باللون الأحمر ، وعند الأيقاف التام باللون البني . وعند الحفظ يعود الى اللون الأسود

الباقي أتركه لكم لإكتشافه  :yes:

 

PlayStation.accdb

  • Thanks 1
رابط هذا التعليق
شارك

استاذي ومعلمي الفاضل عمل ممتاذ وجميل جزاك الله خير وزادك الله من علمه

بس حبيت انبه علي حاجه 

هل عداد الوقت في هذه الصوره كده مظبوط 

IMG_3537.jpeg.ee0d69dc5568444ed95d4e5e571cfe3b.jpeg

لاني سعر الساعه 60 جنبه مصري

والساعه فيها 60 دقيقه 

المفروض سعر الدقيقه 1جنيه 

يبق المفروض ال 26 دقيقه كما في عداد الوقت الذي في الصوره  سعرهم 26 جنيه وقروش

 

او انا في شي مش فاهمه

تم تعديل بواسطه حسين العربى
  • Like 1
رابط هذا التعليق
شارك

32 دقائق مضت, حسين العربى said:

استاذي ومعلمي الفاضل عمل ممتاذ وجميل جزاك الله خير وزادك الله من علمه

بس حبيت انبه علي حاجه 

هل عداد الوقت في هذه الصوره كده مظبوط 

IMG_3537.jpeg.ee0d69dc5568444ed95d4e5e571cfe3b.jpeg

لاني سعر الساعه 60 جنبه مصري

والساعه فيها 60 دقيقه 

المفروض سعر الدقيقه 1جنيه 

يبق المفروض ال 26 دقيقه كما في عداد الوقت الذي في الصوره  سعرهم 26 جنيه وقروش

 

او انا في شي مش فاهمه

كلامك صحيح 100%

يبدو ان العملية الحسابية لم تكن دقيقة ، سيتم التدقيق والتعديل ، ولا يهمك

رابط هذا التعليق
شارك

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

سيتم التعديل في المشاركات اللاحقة :wink2:

العملية الحسابية سليمة وصحيحة 1000%. 🤗

تم تعديل بواسطه Foksh
رابط هذا التعليق
شارك

  • أفضل إجابة

اممممم ، طيب لو جينا مثلاً مثلاً يعني وغيرنا مربع نص إيجار الساعة من مربع نص لكومبوبوكس يا ترى هيحصل ايييييه

أكيد هتحصل طرطشة كبيرة أوي 

يعني لو انا جيت السنتر عندك و خدت الجهاز رقم 2 واللي هو متسعر أساساً 100 جنيه ( على سبيل المثال انا بقول ) ، وانا شغال وفي عز المعركة في اللعبة جيت انت وقلتلي انا هحسبلك الساعة بـ 50 جنيه خصم .. يا ترى هتعمل ايه ؟؟

انت ما تعملش حاجة هو نفسه هيرجع يحسب السعر في الإجمالي على حسب السعر اللي انت غيرته من غير تحديث ولا ريفريش ولا حاجة :dance1: . وجرب كده واديني رأيك .

 

وكمان انا قلت للزر Stop يوقف مؤقت العداد ولو الزبون طلع عيل ورجع في كلامه وما جاش على باله يروح وقال انا عايز أكمل ، تقدر تضغط على زر Resume مرتين علشان البيه يكمل لعب وما تضطرش تفتحله وقت تاني جديد :yes:

دي طئطوئة من اللي في دماغي لما أكون مضغوط في الشغل :wavetowel:

PlayStation.accdb

 

تم تعديل بواسطه Foksh
تم تحديث المرفق
رابط هذا التعليق
شارك

بسم الله مشاء الله انا فتحت بحر علم نابع من اساتذتي الافاضل  الاستاذ ahmed draz والاستاذ  Foksh الظاهر كده هنطلع ببرامج قوي 

بارك الله فيكم علي جهودكم العظيمه وزادكم الله من علمه بصراحة عمل ما فيش اروع من كده 

  • Like 2
رابط هذا التعليق
شارك

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

أخواني الأعزاء أنا قولت طالما هنعلي الشغل..... ييقى نعليه على الأخر

:dance1:حظك بقة يا حسين:dance1:

وتحياتي لأخونا العبقري  :fff:Foksh:fff:

(يرجى أضافة الخط الموجود في الملف digital-7 (mono) مع الويندوز أولاً)

2.thumb.gif.134516007f0b2a020a12d88d6033de2d.gif

3.thumb.gif.f3132f620f1ef2422e784734fc1288ce.gif

 

PlayStation 6.rar

تم تعديل بواسطه ahmed draz
رابط هذا التعليق
شارك

فكرة القيمة على شكل نص أو كتابة ، لا أعتقد أنها فكرة ممتازة . لأن المبرمج الناجح يهدف إلى عدم تحميل النموذج حيز عمل كبير ( هناك من يتعاون في سرعة الأداء لأي كود في أكسيس منها كرت الشاشة والرام ونوع الهارد ديسك SSD , HDD ... إلخ ) .

 

وفي مثالك أخي أحمد لو كنت مكانك لما تطرقت إلى هذه الفكرة :rol: . 

ليس إحباطاً للمعنويات ، ولكن وجهة نظر ..

وإرجو الإهتمام من صاحب الموضوع لتحديد أهداف الطلب في هذا الموضوع :smile: ،

وإن كان هناك تقرعات في طلبه فليتوجه لقتح موضوع جديد في طلبه الجديد :fff:

  • Like 1
رابط هذا التعليق
شارك

مشاء الله مشاء الله استاذ احمد والله ده كتير علي طبعا الحمده لله  لاني محظوظ اني اثنين من اساتذتي العباقره  معهتمين بموضوعي والف شكر ليك استاذ Foksh وجعله الله في ميزان حسناتكم  وبارك الله فيكم انتو كده وفيتو وكفيتو انا مش عاوز اكتر من كده وشكرا ليكم جميعا 

  • Thanks 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information