مصلح الحريصي قام بنشر مايو 10, 2004 قام بنشر مايو 10, 2004 لدي نموذج اسمه ( Frm1 ) مربعات نصوص اسمائها ( Txt4)__( Txt3 ) __ ( Txt2) __ ( Txt1 ) المطلوب : Module عام يقوم بتغيير لون الخلفية إلى اللون الأسود ولون الخط إلى اللون الأبيض لكل Txt عند التركيز وتغيير لون الخلفية إلى اللون الأبيض ولون الخط إلى اللون الأسود عند فقدان التركيز من دون استخدام حدثي ( عند التركيز ) و ( عند فقدان التركيز ) . أي تتعرف Module على مربع النص الذي يمتلك التركيز وعلى خصائصه . حاولت استخدام screen.ActiveControl ولكنني لم أفلح في ذلك وعجزت في الوصول إلى ذلك. الرجاء ممن لديه معرفة في ذلك أفادتي بارك الله فيكم
lyla قام بنشر مايو 11, 2004 قام بنشر مايو 11, 2004 ياليتني أعرف كان ما أتردد... :p طيب ماتقدر تخلي خصائص text الخلفية يكون لونها عشوائي Random بحيث يتغير رقم اللون في حالة الدخول للفورم في كل مرة الى أرقام عشوائية الي هي تمثل درجة لون الخلفية ... مجرد عرض فكرة
مصلح الحريصي قام بنشر مايو 11, 2004 الكاتب قام بنشر مايو 11, 2004 شكراً أخت ليلى على الفكرة وأنا عارف ما تقصرين فيما لديك من معلومات. فكرة تغيير اللون عشوائي ما تنفع الهدف هو التحكم في خصائص العناصر على النموذج بدون التعامل مع الأحداث مباشرة . تخيلي لو لديك نمموذج عليه 12 مربع نص ويلزمك حدث تغيير لون خلفية مربع النص ولون الخط عند التركيز وعند فقدان التركيز هذا يعني أنك ستكتبين حدثين هما عند التركيز وعند فقدان التركيز وتكررين الأمر نفسه مع الــ 12 مربع نص وهذا يعني 2 ضرب12=24 ولو وصلنا للطريقة التي ابحث عنها فأننا نكون قد كتبنا برنامج عمومي واحد بدلاً من 24 أرجو أن نصل لذلك فهو سيختصر علينا مسافات طويله.
مهند عبادي قام بنشر مايو 11, 2004 قام بنشر مايو 11, 2004 سأحاول في هذا الموضوع إن شاء الله نصل إلى النتيجة
مهند عبادي قام بنشر مايو 11, 2004 قام بنشر مايو 11, 2004 (معدل) هذا هو التابع الذي تريده : Public Sub SetTextColors(F As Form, Optional AFC As OLE_COLOR = vbBlack, Optional ABC As OLE_COLOR = vbWhite , Optional DFC As OLE_COLOR = vbWhite, Optional DBC As OLE_COLOR = 12632256) Dim T As Object For Each T In F If T.ControlType = acTextBox Then If T.Name = F.ActiveControl.Name Then T.BackColor = ABC T.ForeColor = AFC Else T.BackColor = DBC T.ForeColor = DFC End If End If Next End Sub أرجو أن يكون وافياً بالغرض تم تعديل مايو 11, 2004 بواسطه مهند عبادي
lyla قام بنشر مايو 11, 2004 قام بنشر مايو 11, 2004 ياليتك يامهند تحطه في مثال أشان أشوف وستفيد من فكرة الأخ مصلح
مصلح الحريصي قام بنشر مايو 11, 2004 الكاتب قام بنشر مايو 11, 2004 الأخ / مهند أنا وأثق من قدراتك في ذلك لقد جربت الكود ولكن ظهرت لي رسالتين الأول تطالب بعدد الوسائط . حتى يتم تنفيذ الكود لا بد من وضعه في حدث " في الحالي" _ Form_Current وهذا سبب رسالة نصها الأتي " يتطلب التعبير الذي أدخلته أن يتواجد عنصر التحكم في الأطار النشط " ليس السبب من الكود ولكن قد يكون مني أنا فهل لك أن تجربه على مثال ترفقه بارك الله فيك شكراً لك مقدماً .
مهند عبادي قام بنشر مايو 11, 2004 قام بنشر مايو 11, 2004 هذا مثال وقد عدلت الكود قليلاً فيه Muhannad.rar
مصلح الحريصي قام بنشر مايو 11, 2004 الكاتب قام بنشر مايو 11, 2004 الأخ / مهند ألف ألف شكر لك الله ينعم عليك بالصحة ويزيدك علم ويجعل ما تقدمه في موازين حسناتك. لم أجرب المثال بعد ولكنني واثقاً من ما تعمل . تحياتي لك
أبو هادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 (معدل) السلام عليكم جميل أخي مهند .. ولكن تبقى مشكلة الماوس . اعتقدت قبل التعديل أن حدث MouseMove لقسم الـ Detail/تفصيل سيحل الموضوع ولكن بعد تجربته لم ينجح . تحياتي . تم تعديل مايو 12, 2004 بواسطه أبو هادي
مهند عبادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 بالنسبة لمشكلة الماوس وجدت الحل إذا وضعت هذا السطر في حدث Timer وعينت Form.TimerInterval إلى 300 تحل المشكلة كما يلي : Private Sub Form_Timer() SetTextColors End Sub وأزل أي سطر برمجة آخر من الفورم بما يتعلق بهذا الSub
مهند عبادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 كما يمكن الحصول على تأثير مشابه بكل بساطة وبدون أي مديول أو كود ، وذلك كما يلي : عين لون الخلفية في كل مربعات النص إلى أبيض ثم عين نمط الخلفية إلى شفاف والآن شغل النموذج وجرب الانتقال من أداة إلى أخرى وسترى كيف تكون النتيجة !
أبو هادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 السلام عليكم أخي مهند .. لقد حاولت أن أخفف من عملية التكرار والتلوين المستمر لكل مكونات النموذج اعتمادا على اقتراحك الأخير باستخدام المؤقت ، طبعا قبل أن أرى ردك الأخير وقبل التجربة كذلك . تحياتي . Muhannad.rar
مهند عبادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 أخي أبو هادي الأسلوب الذي تعتمده أنت يعتمد على حفظ اسم عنصر التحكم السابق ليتم تظليله فقط بالرمادي وهذا ممكن بغير أسلوب وذلك بالاعتماد على خاصية screen.PreviousControl ولكن استخدام هذه الطريقة يؤدي إلى بقاء مربع النص دون تظليل بالرمادي في حال الضغط المستمر على زر Tab مثلاً ثم إفلاته فوق مربع نص بعيد ! علماً أن الأسلوب الذي اتبعته أنا في مثالي وقد غيرته عن الـ Sub في المشاركة الأولى لي لا يعتمد التلوين المستمر لكل مكونات النموذج بل يلون بعد شرط If لفحص اللون إذا كان مغايراً على أي حال مشاركتي السابقة تحتوي الحل الأسهل برأيي
أبو هادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 السلام عليكم جيد أخي مهند .. كلامك صحيح ، أن الطريقة الأولى بعد التعديل عليها بإضافة التوقيت لها هي الأفضل ولكن تبقى مشكلة تحديدك لنوع واحد فقط من الـ Controls ، فماذا لو أن هناك Combo Box أو List Box ؟ تحياتي .
مصلح الحريصي قام بنشر مايو 12, 2004 الكاتب قام بنشر مايو 12, 2004 الأخ / مهند عمل رائع وفعلاً كنت ابحث عنه من فترة وقد استفدت من مثال الكثير وها أنت تتفضل علينا به بارك الله فيك بالنسبة لتعيين لون الخلفية في كل مربعات النص إلى أبيض ثم عين نمط الخلفية إلى شفاف فهي غير عملية لأن اللون يتغير ولكن الخط لون الخط لا يتغير أيضاً العناصر تأخذ لون النموذج بعد فقدان التركيز . طبعاً بعد إذنك أخي مهند لقد عدلت في الكود ليناسب الألوان التي أريد كذلك جعلت مربع نص اسفل النموذج يعرض معلومات عن أي عنصر يمتكل التركيز كتوجيه المستخدم أثناء إدخال البيانات وذلك بواسطة خاصة Tag للعنصر الذي يمتلك التركيز أيضاً اسنتجت من مثالك مديول يقوم بمسح محتويات جميع مربعات النصوص بدلاً من الإشارة إليها باسمائها وهو التالي : Public Sub TxtFa() Dim ctl As Control For Each ctl In Screen.ActiveForm.Controls If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then With ctl ctl = "" End With End If Next End Sub الأخ أبو هادي لا مشكلة عند وجود Combo Box أو List Box كل ما عليك هو تغيير السطر التالي : I f T.ControlType = acTextBox Then بالسطر التالي : If T.ControlType = acTextBox Or T.ControlType = acComboBox Or T.ControlType = acListBox Then مرفق مثال للتعديل الأخ مهند / الرجاء الإطلاع على التعديل فربما أرتكبت بعض الأخطأ لها سلبيات لا أعرفها وذلك لتوجيهي لتجنبها بارك الله فيك Muhannad.rar
مهند عبادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 بإمكانك أضافة إلى شرط التحقق من النوع قبول أنواع أخرى مثل ListBox أو ComboBox .. لا مشكلة ! و كنت قد بدأت محاولة تجريب أسلوب جديد يعتمد على Class .. ولكنني أوقفت المحاولة بسبب انتباهي لآخر أسلوب الذي أفضله والذي هو بدون أي كود
مهند عبادي قام بنشر مايو 12, 2004 قام بنشر مايو 12, 2004 الأخ مصلح .. إن ملفك لا يفتح معي .. الرجاء إعادة إرفاقه
مهند عبادي قام بنشر مايو 27, 2004 قام بنشر مايو 27, 2004 السلام عليكم لقد قمت بعمل صنف اسمه CTextColors ليقوم بهذا العمل .. وهكذا تم الاكتفاء بسطرين فقط في النموذج هما : Dim C As New CTextColors C.SetForm Me وهذا هو المثال : Muhannad.rar
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.