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

للمحترفين ... أسئلة لم أجد لها حلاً

مغلق
بدأه عبد الله فتحي في 21 يونيو 2003 · 16 رد · 1,612 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

بعد التحية لجميع الأعضاء الكرام:

لقد بدأت حالياً ببناء برنامج شات، ولكن واجهتني مصاعب كثيرة، أردت أن تشاركوني فيها، علني أجد الحل:

الأولى: لدي في برنامج العميل Rich Textbox يحوي على الرسالة الذي سيرسلها المستخدم، و Rich Textbox آخر يحوي على الرسائل السابقة، والمشكلة تظهر عندما أريد دمج هذين النصين في Rich Textbox ثالث، بشرط أن لا تذهب التنسيقات الخاصة بهما.

باختصار لدي 3 مربعات نص من نوع Rich Textbox ، أريد جعل مربع النص الثالث يحتوي على الأول والثاني بنفس تنسيقاتهم (اللون - نوع الخط - حجم الخط .... الخ)

الثانية: كيف يمكنني إدراج صورة ( مثلاً مثل هذه الوردة (f) ) داخل مربع نص، أو حتى إذا لم يمكن كيف لي إدراجاها داخل List Box مثل برامج الشات.

الثالثة: كيف يمكنني إدراج أكثر من نص في List Box مع إمكانية تغيير حجم خط كل سطر ولونه ... الخ الخ مثل برامج الشات ،، وهل سأحتاج إلى أداة أخرى غير المرفقة مع الفيجول؟

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

ani.gif
#2

بسم الله الرحمن الرحيم

الأخ العزيز (عبد الله فتحي) وفّقك الله ورعاك...

بالنسبة لسؤالك الأول فأرجو التوضيح أكثل فهل تريد دمج نصين أو أكثر؟؟ أو تريد ماذا؟؟

جواب السؤال الثاني:

لا يمكن إدراج صورة (حسب خبرتي) في أداة النص العادية TextBox المرفقة مع الفيجوال بيسك في المكتبة، ولكن يمكنك استخدام أداة RichTextBox والتي تأتي كـ ActiveX مرفق، فما عليك سوى نسخ الصورة ثم لصقها في الأداة

بالنسبة إلى سؤالك الثالث:

نعم تحتاج إلى أداة أخرى غير الأداة المرفقة مع الفيجوال بيسك فللأسف الشديد فالفيجوال بيسك إمكاناته محدودة ولا توجد به أدوات كالدلفي Componet.. ولكن لا داعي للقلق فإن أردت فهناك أداة قد قام بها أحد الأشخاص ألا وهي ListBox محسّن...

كلمة أخيرة:

برامج الشات لم تكن بتلك الصعوبة!! يمكنك استخدام أكواد البرامج الجاهزة (ويوجد لديّ كود جاهز لبرنامج شات متكامل بالعربي)..

مع تحيّاتي ;);)

#3

أخي العزيز Basrah .. أولاً أشكرك على الرد ،،،

بالنسبة للسؤال الأول فأنا كما ذكرت لدي ثلاث مربعات نصوص من نوع Rich Text ،، ولدي على سبيل المثال في المربع الأول "أهلاً بك" وفي المربع الثاني "Basrah" وأريد أن أجعل مربع النص الثالث يدمج مربع النص الأول مع مربع النص الثاني، دون أن يغير من تنسيقات أيهما، بحيث يظهر مربع النص الثالث هكذا "أهلاً بك Basrah" ... هذا هو ملخص السؤال الذي لا أجد حلاً له حتى الآن، وربما ليس له حل.

وبالنسبة للسؤال الثاني فأنا أعرف أنه يمكنك إدراج صورة بواسطة النسخ واللصق، ولكن ذلك لا يهمني، وإنما المهم بالنسبة لي هو كيف أدرج صورة بواسطة الكود ،،، وبالنسبة لهذا السؤال فقد وجدت إجابته من الأخ العزيز Visitor_OM في منتدى الإبداع الإسلامي ... ويمكنك المرور عليه.

أما بالنسبة للسؤال الثالث فأنا لم أجد الأداة التي ذكرتها عندي،، فهل أجدها عندك أو عند أي من الأعضاء ؟؟؟

أخيراً أنا شاكر جداً لك اهتمامك بالموضوع، وبالنسبة لما ذكرته من أن برمجة الشات ليست صعبة، وأنه يوجد برامج جاهزة، فأنا لم أضع هذا في حسباني، ولو كان الأمر كذلك فما فائدة تعلم البرمجة من الأساس إذ أنني سأجد البرامج الجاهزة في كل مكان، ولكنني أقوم بعمل هذا البرنامج بنفسي لأتعلم وأزداد خبرة ...

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

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

ani.gif
#4

بسم الله الرحمن الرحيم

الأخ العزيز (عبد الله فتحي):

لقد فهمت سؤالك بهذه الصيغة:

يمكنك لصق نصيت معاً من خلال المعامل & أو من خلال +، مثلاً:

Dim s1 as string

Dim s2 as sring

Dim sMerge as string

s1="Love"

s2="IRAQ"

sMerge=s1 & s2

MsgBox(sMerge)

تقوم الشفرة المذكورة بدمج النصيت Love وIRAQ معاً وبإمكانك استخدام ما تريد فمثلاً لديك نص اسمه RichTextBox1 والثاني RichTextBox2 وأردت دمج هذي النصين في RichTextBox3 فما عليك سوى أن تكتب الشفرة التالية:

Dim s1 as string

Dim s2 as sring

Dim sMerge as string

s1=RichTextBox1.Text

s2=RichTextBox2.Text

sMerge= RichTextBox1.Text + RichTextBox2.Text

RichTextBox3.Text = sMerge

بالنسبة إلى الأداة فابحث في منتدى vb4arab.com عن الاسم: (رغيد الطيّب) وسوف تجد الأداة مرفقة.

أما قولك عن البرامج الجاهزة فأنا أقصد فهم الشفرة المذكور بها فقط ولا أقصد أخذ هذه البرامج.

مع تحيّاتي ;);););)

#5
اقتباس
يمكنك لصق نصيت معاً من خلال المعامل & أو من خلال +
:confused::confused::confused:

لو كان الأمر بهذه البساطة لما احتجت إلى السؤال ،،، ويبدو أنك لم تقرأ سؤالي جيداً ...

وما زلت في انتظار إجابة السؤال الأول والثالث وأرجو أن لا يطول الانتظار ...

ani.gif
#6

أخ عبدالله فتحى، محاولة أى كلام للرد على التساؤل الأول، فى 10 دقايق، عشان حقيقى مش مركز و فايق للحل المظبوط. الملف مرفق.

بالنسبة للتساؤل الثالث، الحل هو باستخدام تقنية SubClassing ، و توجد أمثلة لاستخدام هذه التقنية مع أدوات مختلفة ، و لكن تفهمك الطريقة. و يمكنك تطبيقها مع هذه الأداة، و تقنية OwnerDrawn controls و هى تقنيات قد تجد صعوبة فى تعلمها، فاستعد لبذل المجهود. و قم بالبحث و شاركنى بما تجد لو تحب.

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

#7

الملف المرفق لا أستطيع تحميله حاليا، يظهر عيب بالمنتدى،

عموما الكود

Private Sub Form_Load()

    rtbSource1.LoadFile App.Path + "Document1.rtf"

    rtbSource2.LoadFile App.Path + "Document2.rtf"

End Sub



Private Sub Command1_Click()

    rtbDest.Enabled = False

    For x = 1 To Len(rtbSource1.Text)

        rtbSource1.SelStart = x

        rtbSource1.SelLength = 1

        rtbDest.SelColor = rtbSource1.SelColor

        rtbDest.SelFontName = rtbSource1.SelFontName

        rtbDest.SelFontSize = rtbSource1.SelFontSize

        'rtbDest.SelAlignment = rtbSource1.SelAlignment

        rtbDest.SelBold = rtbSource1.SelBold

        'rtbDest.SelBullet = rtbSource1.SelBullet

        'rtbDest.SelCharOffset = rtbSource1.SelCharOffset

        'rtbDest.SelHangingIndent = rtbSource1.SelHangingIndent

        'rtbDest.SelIndent = rtbSource1.SelIndent

        rtbDest.SelItalic = rtbSource1.SelItalic

        rtbDest.SelUnderline = rtbSource1.SelUnderline

        rtbDest.SelText = Mid(rtbSource1.Text, x, 1)

    Next

    rtbSource1.SelStart = 1

    

    'Note: AbdullahFatehy, I removed some properties, so the example run faster.

    For x = 1 To Len(rtbSource2.Text)

        rtbSource2.SelStart = x

        rtbSource2.SelLength = 1

        rtbDest.SelColor = rtbSource2.SelColor

        rtbDest.SelFontName = rtbSource2.SelFontName

        rtbDest.SelFontSize = rtbSource2.SelFontSize

        rtbDest.SelBold = rtbSource2.SelBold

        rtbDest.SelItalic = rtbSource2.SelItalic

        rtbDest.SelUnderline = rtbSource2.SelUnderline

        rtbDest.SelText = Mid(rtbSource2.Text, x, 1)

    Next

    rtbSource2.SelStart = 1

    rtbDest.SelStart = 1

    

    rtbDest.Enabled = True

End Sub
#8

بالنسبة لؤال الثانى ، لفائدة من يطالعون المشاركة

Option Explicit



Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_PASTE = &H302

Private Sub Form_Load()

    ' نسخ الصورة لحافظة النظام

    Clipboard.Clear 'تأكد من عدم وجود محتويات قبل نسخ المحتو ى الجديد

    'لأن لو وجد نص مثلا بالحافظة فقد يلصق النص بدل الصورة، حيث

    'تسمح الحافظة بوجود أكثر من تنسيق بها

    Clipboard.SetData Picture1.Picture

    

    ' لصق الصورة بالأداة

    SendMessage RichTextBox1.hwnd, WM_PASTE, 0, 0

End Sub
#9

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

محتويات ملفات rtf اتى كنت أود نقلها للمنتدى بتنسيقها.

document1.rtf

بسم الله الرحمن الرحيم

هذه هى محتويات الأداة الأولى، مكتوبة ببرنامج Wordpad التقليدى، ليتم تحميلها بمجرد أمر LoadFile حتى لا أضطر لتوفير طريقة بالمثال لتنسيق النص الموجود بالأدوات.

عرض، محمد فاروق.

document2.rtf

هذه هى محتويات الأداة الثانية، و بالمناسبة يمكن إستخدام طريقة أفضل و لكن تتطلب تحليل للنص الموجود بخاصية TextRTF و لكن حاليا، هذه هى الطريقة السخيفة ، و لكن السهلة لحل المشكل.

أرجو أن تقوم أنت بتحليل نص TextRTF و تفصل الـ Header عن الـ Footer و عن الـ Data، و تبلغنى بالنتيجة

بالمناسبة لا تنسى أن تحدد محتوى الأداة الثالثة، و تضغط Ctrl+Right Shift و طبعا، كل دة محاولة مبدئية. و كمان معنديش الـ MSDN على الجهاز دلوقت، يعنى كل دة مع نفسى كدة، و فى ظرف 10 دقايق.

حاول انت من ناحيتك، و انا كمان حاجرب بعدين.

#10

أخي العزيز روقا ... أشكرك على حسن الرد..

وبالنسبة لما ذكرته بشأن دمج النصين معاً فهو صحيح، وكنت استخدمه كحل يدوي بديل ، لكنه لا يعجبني ، ولكن للأسف كما قلت هذه هي الطريقة المتاحة حالياً ،، أما عن تحليل نص الـ RTF فقد حاولت ذلك مسبقاً .. وفي البداية يبدو الأمر سهلاً ولكنني واجهت مشاكل بالنسبة لتعدد الألوان حيث يقوم بترتيبها بطريقة غريبة ومعقدة وهو ما لا أحتاجه في برنامجي ...

أما عن إدراج الصورة فقد جربت الكود الذي كتبته، وقد اشتغل معي بشكل جيد (أشكرك):

وللإفادة هذا هو الكود الآخرالذي ذكره لي الأخ Visitor_OM:

Private Sub Command1_Click()



   Dim lpobj      As OLEObject

   Dim szfilename As String



    szfilename = "مسار الصورة"

     Set lpobj = RichTextBox1.OLEObjects.Add(, , szfilename)

         lpobj.DisplayType = rtfDisplayContent



         SendKeys "{END}"

         SendKeys "{ENTER}"

End Sub
ani.gif
#11

العفو، و لكن موضوع دمج محتويات النصين أصبح يمثل تحدى تقنى شخصى مع هذه المشكلة و فعلا مسألة جدول الألوان و الخطوط الموجود فى الـ Header، و لما نحن مبرمجين إذاً، ليس المبرمجين أصحاب علم و حسب، بل الأهم و الأولى هم مبتكرون مبدعون قادرون على تحليل المشكلة وصولا لحلها، و هو ما أنوى أن أفعله، اليوم أقوم بإعداد VS6 مع الـ MSDN و أعتقد أن ذلك سيساعد على سرعة انجاز المهمة.

أنت بدأت طرح هذا الموضوع ، فلا تتركنى فيه، و أرجو أن تتوحد جهودنا لانجاز هذا الموضوع بالذات.

سأطرح قريبا، محاولاتى، و أرجو أن تكون على البريد Justhuman@softhome.net حتى إذا ما توصلنا بإذن الله لحل، طرحناه فى هذه المشاركة لفائدة الاخوان، دون ربكهم بالمحاولات المبدئية.

لذا أنتظر عنوانك البريدى ____¯¯¯ لو تحب ¯¯¯____

ملحوظة، كود Visitor_OM أفضل فعلا، و ان كنت أعرفه قبلا، الا أنى كنت نسيته و لا أذكر منه إلا أن الأمر له علاقة بالـ OleObjects فشكرا لتذكيرى به، و لفائدة باقة الأخوان.

أخبرنى ما هى تطورات الموضوع الثالث، هل تظن حقا أن الـ Subclassing و الـ OwnerDrawing Tech تصلح لحل المسألة؟ و هل توصلت لشئ يؤدى لطريق للحل؟

#12

Weil Sie mich früh fragten, wohne ich in ؤgypten. Ich war gerades Scherzen mit Ihnen

Ich hoffe, daك wir eine Lِsung bald erreichen.

#13

أخي العزيزي روقا شكراً لك، سأبدأ البحث، وبالنسبة لإيميلي فهو:

Herr_Abdu_Fathy@hotmail.com

أما عن ال الـ Subclassing و الـ OwnerDrawing Tech فليس لدي أي فرة سابقة عنها ... للأسف.

Vielen Dank Roka!

(f)(f)(f)(f)

ani.gif
#14

أخي العزيزي روقا شكراً لك، سأبدأ البحث، وبالنسبة لإيميلي فهو:

Herr_Abdu_Fathy@hotmail.com

أما عن ال الـ Subclassing و الـ OwnerDrawing Tech فليس لدي أي فرة سابقة عنها ... للأسف.

Vielen Dank Roka!

(f)(f)(f)(f)

ani.gif
#16

لا Dank على واجب، و المشكلة فى تأخرى عليك بالرد راجعه لمشكلة بالمنتدى، حيث انى كلما طالعت المنتدى وجدت مشاركتى فى ترتيب متاخر و اسمى أنا كآخر من قام بالرد فى المشاركة، فلم أدخل للاطلاع عليها، و لكن آخر مرة دخلت للمشاركة و وجدتك قد كتبت ردين، و مع ذلك يظهر اسمى أنا كآخر من قام بالرد فى المشاركة:P!!!

عموما حصل خير.

بالنسبة للمنتدى الآخر فلم أستطع أن أتابع الوصلة التى كتبتها و المؤدية له، لأن لى موقف شخصى من هذا المنتدى و بالخصوص مُشْرِفْ غير مُشَرِّفْ. و لذا لا أستطيع كمبدأ أن أقرأ أى مشاركات هناك، فأنا متضايق جدا من مجرد تذكر اسم هذا المنتدى:confused:

و عموما وافنى بالجديد فى الموضوع دوما كما أنوى أن أفعل.

و السلام ختام.

#17

فترة انقطاع عن المنتدى لعدم دخول النت لحوالى اسبوع او اقل.

لكن يمكن للاعضاء ان يشاركوا ، فهذه ليست مشاركة مغلقة على شخصين.

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

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