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

كيفية عمل تطبيق MDI

مغلق
بدأه amr15 في 27 نوفمبر 2004 · 14 رد · 2,345 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

اريد ان اعمل في قائمة ملف فتح ملف جديد وعند الضغط عليه يفتح ملف جديد في كل مرة

واذا عملت حفظ يقوم بالحفظ على هذا الملف الجديد المفتوح كما في الورد تماما

#2

أخي amr15،

أرجو أن تكتب عنواناً يدل على محتوى الموضوع حتى تستطيع أن تحصل على أكبر كم من الردود.

بالنسبة لسؤالك، أعتقد أن هذا قد تم طرحه سابقاً هنا:

/index.php?showtopic=50267

رأس الحكمة الإيمان بالله

#3

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

إن كان التطبيق هو MDI فالرابط الذي وضعه الأستاذ محمد كاف، أما إن أردت تطبيق يستخدم TextBox فها هي إجابة صغيرة:

قم بوضع TextBox على الفورم.

قم بوضع الأداة OpenFileDialog (تجدها في صندوق الأدوات بالطبع).

قم بوضع الأداة MainMenu

الأداة MainMenu أصبحت الآن تحت الفورم وأصبح إسمها MainMenu1، قم بإضافة القوائم التالية لها:

File (هذه هي القائمة الرئيسية) وتحتها أضف القوائم التالية:

Open

Save

الآن أفتح المحرر وفي أعلى الملف (أي قبل Public Class Form1 قم بإضافة السطر التالي):

Imports System.IO

هذا السطر يقوم بإستيراد الفئة الخاصة بالتعامل مع الملفات (كما فسر الماء بعد جهد بالماء، أليس كذلك؟).

الآن قم بإضافة متغير على مستوى الفورم (أي بعد الكلمات Windows Form Designer generated code أكتب ما يلي:

Dim myFileName As String

الآن إذهب الى حدث click لقائمة Open وأكتب الكود التالي:

Private Sub menuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuOpen.Click
      
        OpenFileDialog1.Filter = "Text Files (*.txt)|*txt"
       
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            TextBox1.Text = ""
            myFileName = OpenFileDialog1.FileName
            Try
                Dim myReader As New StreamReader(myFileName)
                Do While myReader.Peek <> -1
                    TextBox1.Text &= myReader.ReadLine & ControlChars.CrLf
                Loop
                myReader.Close()
                
              Catch ex As IOException
                MessageBox.Show(ex.Message)
            End Try
        End If
    End Sub

إذهب الى حدث click لقائمة Save واكتب الكود التالي:

Private Sub menuSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuSave.Click

        If myFileName <> "" Then 
            Dim myWriter As New StreamWriter(myFileName)
            myWriter.Write(TextBox1.Text)
            myWriter.Close()
        End If
    End Sub

الآن تستطيع فتح ملف نصي وبعد إجراء أي تغيير عليه تستطيع حفظ التغييرات.

Learn Japanese :>>> http://www.nouben.com/

#4

السلام عليكم :

شكرا جزيلا لكم اخوتي الكرام على هذة المعلومات المفيدة وهذا المنتدى الرائع

شكرا

#5

السلام عليكم :

و لكن انا اريد عندما اضغط على جديد وليس فتح ان يفتح ملف جديد من دون ان يظهر

ال open dialog مثل في الورد عند الضغط على جديد يفتح ملف جديد مباشرة وعند الضغط على حفظ او حفظ باسم يفتح نفس ال dialog box ونكتب اسم للملف الجديد المفتوح ومكان للتخزين

عارفة اني تعبتكم معاية بس سامحوني محتاجة الكود للمشروع ..ز

وشكرا

#6

يا amr15، من الواضح أنك بدأت بتعلم البرمجة فقط قبل يومين؟ :-)

الموضوع سهل يا عزيزي، فقط أشطب أي نص في ال Textbox حتى يصبح عندك ملف جديد، فلو افترضنا بأنه عندك Menu إسمها NEW، فقط في حدث ال click لها ضع الكود التالي:

TextBox1.Clear()

أو

TextBox1.text=""

وقم بإستخدام الأداة SaveFileDialog (ونعاملها تقريباً نفس معاملة OpenFileDialog)، قم بوضع تلك الأداة وقم بإستدعائها من خلال زر الحفظ.

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

Learn Japanese :>>> http://www.nouben.com/

#7

لم يهن عليّ أن أتركك تصارع هذه المشكلة العويصة بنفسك، لذلك ها هو مثال بسيط، تستطيع عن طريقه القيام بالعمليات التالية:

New

Open

Save

Save As

وفيه أيضاً جواب على سؤال آخر طرحته حضرتك في المنتدى عن كيفية تعطيل Copy و Cut إن لم يكن هناك نص مختار في ال TextBox.

مع ملاحظة بأن المثال غير محكم الصنعة، فمثلاً لربما قمت بفتح ملف جديد وكان عندك ملف قديم لم تقم بحفظه، ففي مثالي لم أراع أن يقوم البرنامج بإخبارك بذلك وأخبارك بأن تحفظ التغييرات على الملف الأول (هذه وظيفة بيتية لك :-)... وأيضاً وظيفة بيتيه أخرى وهي أن تقوم بتعطيل Save و Save As إن لم يكن عندنا ملف جديد أو قمنا بفتح ملف من الجهاز.

تفضل ولا تنسانا من دعواتك وفي المرات القادمة لا تزعل الأستاذ محمد بعدم كتابة عنوان مليح لسؤالك، فهو مش ملحق تغيير في العناوين ونقل لها :-)

notepad.zip

Learn Japanese :>>> http://www.nouben.com/

#8

السلام عليكم :

شكرا على هذة الردود والمشاركات ولكن ياجماعة ليش ما حدا فاهم قصدي كل الي كتبتوة صح وعملتة من اول

سواء ال حفظ , فتح , حفظ باسم بس المشكلة في ال جديد بدي اعمل لها كود بحيث انة في كل مرة

Fileopendialog اضغط على جديد يقوم بانشاء ملف جديد بدون اظهار

ويفتحة في التكس بوكس الموجود

ويكون القديم قد اغلق ولا أريدة ان ينشئ ملف وخلاص لا بل يكون الملف المفتوح امامي هو المنشا واذا كتبت

علية وعملت حفظ يحفظ على الملف الجديد وبعدين خلو بالكم اني في كل مرة اضغط جديد

ينشا ملف جديد غير عن الذي انشاة قبل عند الضغط على جديد وليس مرة واحدة فقط .

مش عارفة فاهمين قصدي ولا لاء واسفة جدا على الازعاج .

ملاحظة :

اريدة ان ينشئ الملف وليس ان اختار ملف موجود اصلا .. وان ينشأ الملف ويفتح في التكس

بوكس الموجود ويحفظ كل التغيرات علية ...

#9
اقتباس
مش عارفة

أختي الكريمة (واعتذر عن مناداتك بصيغة المذكر من قبل) أقسم بالله بأنني لم أفهم تماماً :-) ، وحتى أفهم قمت فتحت برنامج ال WORD عندي لأفهم تماماً ماذا تريدين، ولاحظت بأنه برنامج الورد يفتح نسخة أخرى من البرنامج (وليس Child Form) عندما يكون عندك Child Form قديم، أما إذا لم يكن عندي Child Form فإنه يقوم بإنشاء Child Form داخل النسخة الأولى من البرنامج (أي لا يكون هناك نسخة جديدة من برنامج ال Word ) هل هذا ما تقصدين؟؟؟؟؟؟؟

2) أم تريدين أن تنشيء تطبيق مثل برنامج WordPad وبرنامج NotePad بحيث يقوم بإخبار المستخدم بحفظ التغييرات التي جرت على الملف الأولى قبل فتح ملف جديد.

3) أم تريدين برنامج MDI بحيث يفتح البرنامج Child Form في كل مرة يضغط فيه المستخدم على New تاركاً النسخة الأولى ظاهرة (مثل نسخ ال Word القديمة).

أرجو أن تخبريني أي الثلاث خيارت تريدين، أم أنه يوجد عندك خيار رابع (وفي هذه الحالة يرجى الشرح بشكل جيد)، حتى أستطيع عمل ما تريدين.

Learn Japanese :>>> http://www.nouben.com/

#10

ولا تنسين أن تخبريني هل تريدين أن تستخدمي RichTextBox أم Regular TextBox.

Learn Japanese :>>> http://www.nouben.com/

#11

السلام عليكم :

سوري على عدم الشرح بوضوح .اريد ان انشئ تطبيق

مثل ال notepad بحيث يحفظ الملف القديم وينشئ ملف جديد

في كل مرة اضغط على جديد (من دون اظهار مربع الحوار

لاختار منة ملف لفتحة) وعندما اكتب علية واحفظة يحفظ على الملف الجديد

وليس الملف المفتوح من اول مثل ال notepad when you choose file

new

thanks ......

#12

أختي الكريمة،

إذاً أنت تريدين أن تنشيء Notepad، أي تريدين أن تستخدمي TextBox وليس RichTextBox، وقد قمت بكل شيء ما عدا كيفية كتابة كود New، حيث أنك لا تعرفين كيفية برمجة هذا الكود بحيث أنه إذا كان عندنا فايل في ال TextBox في السابق فإنه يجب أن يقوم البرنامج بحفظ الفايل قبل أن يقوم بشطب محتويات ال TextBox، هل هذا هو قصدك؟ إن كان الأمر كذلك فدعيني أشرح لك كيفية القيام بذلك:

1) قومي بالإعلان عن متغير من نوع String على مستوى الفورم، وعندما تفتحين أي فايل وتضعين محتوياته في ال TextBox فقومي بوضع إسم الفايل الذي فتحتيه في ذلك المتغير، فلو مثلاً أسميت ذلك المتغير بإسم FileName وقمت بفتح فايل عن طريق OpenFileDialog1 فقومي بكتابة الكود التالي بعد أن تقومي بوضع نص الفايل في صندوق النص:

FileName=OpenFileDialoge1.FileName

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

If TextBox1.modified=True then

ويوجد قضية أخرى، لربما قام المستخدم بعد أن شغّل برنامجك بالكتابة في مربع النص (أي لم يقم بفتح فايل)، فإن قام بالضغط على زر New فيجب على برنامجك قبل شطب محتويات صندوق النص أن يقوم بالتأكد بأن نص الصندوق ليس فارغاً ويتم ذلك عن طريق

If TextBox1.TextLenght<>0 then

فإن البرنامج في هذه الحالة سيظهر رسالة تطلب من المستخدم أن يحفظ التغييرات أو أن لا يحفظها، وفي هذه الحالة يجب أن تعلني عن متغير آخر على مستوى الفورم (مثلاً SaveFile من نوع Boolean)....

لقد كتبت لك كود الزر New وراعيت فيه الأمور أعلاه جميعها، ولكن عليك ملاحظة أمراً، في العادة نحن لا نكتب الكود في البرامج الكبيرة بهذه الطريقة، يجب أن نكتب الكود ونقوم بإختصاره قدر الإمكان وتنظيمه ويتم ذلك عن طريق ال Functions و Subs، فإن لم ترغبين بالإستعانة بهذه الأمور فالكود التالي لا بأس به لزر ال New ولكن ستلاحظين بأنك ستكررين الكثير منه أيضاً في زر Open. ويجب أيضاً أن تقومي عندما تفتحين ملفاً جديداً أن تضعي إسم الملف في المتغير FileName الذي شرحت وظيفته أعلاه.

ها هو الكود مرفقاً (كود الزر New فقط)، برعاية الله.

Amr15_NotePad.rar

Learn Japanese :>>> http://www.nouben.com/

#13

هاهو تطبيق MDI يستخدم فيه كاتبه TextBox وفيه ميزات جميلة جداً مثل ال ToolBar، قمت بإنزاله من الإنترنت لأتفاجأ بأن كاتبه أخ عربي.

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

تفضلي

MDINotepad.rar

Learn Japanese :>>> http://www.nouben.com/

#14

السلام عليكم :

يا أخي الكريم لو تكرمت وعملت الملفات بامتداد غير ال .rar لانة

لا يوجد عندي البرنامج الذي يشغلها

مع تحياتي

#15

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

http://www.moon15.com/vb/showthread.php?t=...ighlight=winrar

two_files.zip

Learn Japanese :>>> http://www.nouben.com/

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

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