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

كيف اتنقل بين الفورمات ؟

مغلق
بدأه ابو عياد في 26 أكتوبر 2004 · 11 رد · 1,382 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اليوم انا جاي وعندي استفسار وإن شاء الله

انكم تقدرون تجاوبوني عليه

سوالي هو

وانا شغال بالفجول سي ++ وكنت عامل فورم وبهذا الفورم

بوتن المطلوب

هو عندما اضغط على البوتن هذا ينفتح لي فور ثاني

ومن الفور الثاني اقدر اعمل بوتن وارجع للفورم الرئسي

يعني الفكره هي كيف اتنقل بين الفورمات مثل ماابي

يكون بالفورم الاول اكثر من بوتن كل بوتن يظهر فورم بالفورم الجديد

برضو اكثر من بوتن تعمل نفس الشي ويكون هناك طريق للرجعه

هذا هو الشي الذي لم اعرفه الى الان

مع العلم انه لابد ان يكون بسي ++

ولكم كل الشكر والتقدير

وعواتي لكم بالتوفيق والنجاح

#2

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

بالنسبة لإظهار النافذة في السي++ بإستخدام دوال API

دالة إظهار النافذة هي : DialogBox

دالة إغلاق أو إنهاء النافذة هي : EndDialog

شرح الدوال :

/index.php?showtopic=48309

أما إذا كنت تستخدم MFC

لإظهار النافذة حدد إسم الكلاس الخاص بالنافذة ثم إستخدم الدالة DoModal

بهذة الطريقة

CmyDlg mDlg;
mDlg.DoModal ();

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

نعم كما وضح jaas وأعتقد أنك تستخدم ال MFC المهم :

كما وضح jaas في جزئية ال DoModal ,, لكن لاتنسى أن تصرح بال include عن ملف الفئة التي بها النافذة التي تريد أن تفتحها .

تحتاج لكتاب صدقني ,, لايمكن أن تدرس ال Visual C++ الا بكتاب ,, ابحث عن Visual c++ 6 Teach your self in 21 days ممتاز للمبتدئين ,, وباذن الله يساعدك كثيرا .

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#4

السلام عليكم,

أريد أن أضيف لما ذكره الإخوان.

كما ذكرمن قبل فإن DoMOdal تضهر لنا ديالوغ على شكل Modal يعني لا يمكن أن نعمل أي شيء على النافذة الأولى حتى ننتهي من نافذتنا هذه . ولكن إذا كنا نريد نافذتان أو نوافذ تكون حرتين يجب التعامل بشكل مختلف .

نفترض أننا عندنا رسورس لديالوغ رقمه IDD_DIALOG1 وقد أعطينا لهذا الديالوغ اسم Class مثلا CMyDlg فهنا يجب أن نصنع متغير لهذا الكلاس مثلا CMyDlg mdg وعلى هذا المتغير أن يكون في كل القسم الذي نحن فيه يعني نخلي هذا المتغير Protected مثلا بعد هذا حين نريد أن نظهر النافذة ما علينا سوى استعمال الدالة :

mdlg.Create(IDD_DIALOG1,this)

ويمكن أن نغير النافذة الرئيسية this بالمتغير NULL .

وهنا يجب أن نكون قد اخترنا visible في Properties لهذا الديالوغ وإذا لم نختر هذا في الرسورس يجب إضافة السطر :

mdlg.ShowWindow(SW_SHOW)

هذا حتى تظهر النافذة إذا لم نختر visible من قبل.

ولإنهاء الديالوغ نستعمل :

mdlg.DestroyWindow()

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

Button_Func
{
CMyDlg mdlg;
mdlg.Create(IDD_DIALOG1)
}

فهذا الكود سيعمل ويخلق النافذة ولكن سرعان ما تخلق ستموت لأن المتغير mdlg سيموت إن صح القول بعد انتهاء الدالة Button_Func .

إلى اللقاء.

#5

الاخوان الكرام الف شكر على جهدكم معي

ولكن اخواني

يبدو اني لم افهم الشرح على الشكل المطلوب

اخواني انا اريد ان ارجع من الفورم الفرعي الى الفور الرئيسي

انا حالياً اقوم بلانتقال من الفورم الرئيسي الى الفورم الفرعي

بكتابة this->close()

وبهذه الحالة يتم إغلاق الفورم الرئيسسي ولا يمكن الرجوع اليه ثانية

انا اريد دالة غير close يمكن من خلالها الرجوع مره ثانيه

والصوره المرفقه توضح الفكره

مع العلم اني اعمل تحت WindowsFormsApplication

post-14-1099802830_thumb.jpg

#6

السلام عليكم,

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

وإذا كان غرضك هو أن تضهر النافذة الثانية لوحدها دون النافذة الرئيسية يمكن أن تقوم بإخفاء النافذة مثلا :

حين تستدعي النافذة الثانية تقوم بإخفاء الرئيسية ب

ShowWindow(SW_HIDE)

وحين تنتهي من النافذة الثانية تعيد إظهار النافذة الأولى

ShowWindow(hwnd,SW_SHOW)

إلى اللقاء.

#7

الاخ chik

الله يعطيك العافيه وماعليش راح اتعبك معاي شوي

لان بيئة .net جديده علي

المشكله هي ان الدوال التي قمت بكتابتها لا تعمل عندي

وماني عارف اين المشكله بالزبط

دعني اقول لك كيف اعمل انا

اقوم بتعريف متغير من الفورم الفرعي داخل الفورم الرئيسي

واقوم بإعطاءه Visible=true;

والفورم الرئيسي اقوم بإعطاءه close

المشكله هي داخل الفورم الفرعي لا استطيع ان اعرف متغير من الفورم الرئيسي

وانا سااقوم بإرفاق مثال عن العمل الذي اقوم به

ولك مني الف تحيه وشكر وتقدير

ولجميع الاخوان الكرام الذين ساعدوني

multiForms.rar

#8

ا;

تم تعديل هذه المشاركة بواسطة ابو عياد في 10 نوفمبر 2004 في 11:24

#9

السلام عليكم,

لم أستطع قراءة الملف لأنه يعطيني كل مرة خطء عند محاولة فك الملف.

على ما يبدو عندك مشكل في تمرير المتغيرات بين الفورمين. نفترض أنه عندنا فورمين لكل واحة قسمها CForm1 للأولى و CForm2 للثانية ونريد لهذين الفورمين أن تقرأ كل واحدة متغير موجود في الثانية ونفترض أن var1 هو متغير موجود في الفورم الأولى و var2 هو متغير في الفورم الثاني والطريقة يمكن أن تقوم كما يلي :

أولا عرف المتغيرين على أن يكونا عمومين Public إذا كنت قد عرفتهما من قبل إذهب إلى الملف الرأسي لكل فورم وغير حالة المتغير public إذا كانت شيء آخر.

بعد هذا سنقوم بتعريف متغير عن الفورم في كلتاهما مثلا نضع في الفورم الأول

CForm2 ff2 نعرف الفورم الثاني في الفورم الأول وكذلك نكتب في الفورم الثاني تعريف للأول ِCForm1 ff1 بعد هذا في الفورم الأول إذا أردنا الوصول إلى المتغير var2 سنصل إليه كما يلي : ff2.var2 ونفس الشيء ff1.var1 بالنسبة للأخرى.

هذا طبعا يجب زيادة الملفات الرأسية لكل فورم في الفورم الآخر باستعمال مثلا

#include "form2.h" في الفورم الأول إذا كان form2.h هو الملف الرأسي للفورم الثانية

إلى اللقاء.

#10

اخوي فعلاً مشكلتي تكمن في تمرير المتغيرات داخل الفورمات

الفورم الرئيسي استطيع انا اعرف داخله جميع الفورمات الفرعيه

لكن داخل الفورمات الفرعيه لا استطيع ان اقوم بذالك تظهر لي رسالة خطاء

ولا يقبل انا اضيف#include "form1.h

داخل اي فورم فرعي

اتمنا ان اجد الحل سريعا

ولكم مني كل التحياء والتقدير

وكل عام وانتم بالف خير

والمنتدى بتطور تام

#11

السلام عليكم

في الفورم الرئيسي يمكن أن تعلن عن الفورم الفرعي على شكل قسم ليعرف الكمبايلر أن هذا القسم سيخلق مستقبلا . ونفرض أن الفورم الفرعي هو مثلا CForm2 فيمكن أن نعلنه في الفورم الرأسي على شكل class CForm2 .

إلى اللقاء

#12

لم افهمك بالشكل المطلوب

لكن وجدت حل للمشكله التى وجهتك بخصوص

عدم قدرتك على فتح الملف المرفق

وهي ان تقوم اولأً بفك الضغط ثم تفتح الملف المطلوب

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

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