الانتقال إلى المحتوى

كيف الغي windows من الذاكرة


فواز الشمري

Recommended Posts

الشي الغريب في الدفلوبر كما لاحضت انه يتيح على مستوى Form النوافذ window وهوا في هذا الحالة قائم على فكرة الأب والأبن حيث الأب هو Form والأبن هوا window لكن كما لاحضت ان الأخوان المبرمجون يستخدمون الشاشات Form يعني لو كان لدي شاشة تسجيل دخول فلها Form وشاشة مثلا الحسابات مثلا لها Form وشاشة العملاء لها Form على الرغم من ان فكرة Mdi التي يدعمها الدفلوبر هي كما ذكرت قائمة على Form ثم نستخدم Window لإنشائ هذه النوافذ .
سأذكر مثال برمجي منطفي في لغة فيجول بيسك لتوضيح الفكرة .

عندما نشئ Mdi (اب) فإن الأبنا تكون هي Form اي Window كماهوا الحال في ديفلوبر . فلماذا يستخدم المبرمجون في الدفلوبر Form لكل شاشة على الرغم من ان ذلك قد يسبب بطئ في البرنامج .

السؤال :
في النوافذ عندما اتنقل من نافذة إلى اخر هل يوجد كود معين يستخدم لإلغاء تحميل النافذة في الذاكرة (windows) الكود الي استخدمة هوا اخفاء وبالتالي يكون هنا بطئ شديد لو فتحت اكثر من نافذة لأنها تضل في الذاكره ولا يتم إغلاقها .
انا اريد هذا الكود على مستوى windows واليس Form
شكرا

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

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

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

بالنسبة لكود إغلاق Window هذا كود مجرب سيفى بالغرض إن شاء الله.


PROCEDURE Close_Window( wn_name VARCHAR2,dest_item VARCHAR2 ) IS
rg_id RecordGroup;
gc_parent GroupColumn;
gc_child GroupColumn;
the_Rowcount NUMBER;
PROCEDURE Close_Win_With_Children( parent_win VARCHAR2 ) IS
the_child VARCHAR2(40);
the_parent VARCHAR2(40);
BEGIN
FOR j IN 1..the_Rowcount LOOP
the_parent := Get_Group_Char_Cell(gc_parent,j);
IF UPPER(the_parent) = UPPER(parent_win) THEN

the_child := Get_Group_Char_Cell(gc_child,j);
Close_Win_With_Children( the_child );
END IF;
END LOOP;
Hide_Window( parent_win );
END;

BEGIN
rg_id:= Find_Group('WINDOW_HIERARCHY');
gc_parent:= Find_Column('WINDOW_HIERARCHY.PARENT_WINDOW');
gc_child:= Find_Column('WINDOW_HIERARCHY.CHILD_WINDOW');
the_Rowcount := Get_Group_Row_Count(rg_id);
Close_Win_With_Children( wn_name );
Go_Item( dest_item );

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

الأخ / medo_mam

شكرا لك على عرض الprocedure

هل يمكن لك ارسال form لاستخدام هذا الprocedure كمثال لذلك ؟؟

شكرا لك مقدما

وجزاك الله خيرا ونفع بك المسلمين

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

PROCEDURE Close_Window( wn_name VARCHAR2,dest_item VARCHAR2 ) IS
rg_id RecordGroup;
gc_parent GroupColumn;
gc_child GroupColumn;
the_Rowcount NUMBER;
PROCEDURE Close_Win_With_Children( parent_win VARCHAR2 ) IS
the_child VARCHAR2(40);
the_parent VARCHAR2(40);
BEGIN FOR j IN 1..the_Rowcount LOOP
the_parent := Get_Group_Char_Cell(gc_parent,j);
IF UPPER(the_parent) = UPPER(parent_win) THEN

the_child := Get_Group_Char_Cell(gc_child,j);
Close_Win_With_Children( the_child );
END IF;
END LOOP;
Hide_Window( parent_win );
END;

BEGIN rg_id:= Find_Group('WINDOW_HIERARCHY');
gc_parent:= Find_Column('WINDOW_HIERARCHY.PARENT_WINDOW');
gc_child:= Find_Column('WINDOW_HIERARCHY.CHILD_WINDOW');
the_Rowcount := Get_Group_Row_Count(rg_id);
Close_Win_With_Children( wn_name );
Go_Item( dest_item );

END;




شكرا لك أخي medo_mam سوف أجرب هذا الإجراء .....
رابط هذا التعليق
شارك

ياخي الكريم للأسف لم ينجح معي هذا الإجراء

مع العلم اني اريد إغلاق نافذة غير مربوطة بقاعدة البيانات . كما لاحضت في الإجراء انه يبحث عن جميع السجلات والمجموعات لا ادري هل القصد هوا إغلاقها ام ماذا .

اتمنا منك ان تضع مثال على ذلك .

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

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

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