لدي برنامج :
وأود معالجة النص قبل لصقة على RitchTextbox كيف يمكن ذلك.
:blink:
لدي برنامج :
وأود معالجة النص قبل لصقة على RitchTextbox كيف يمكن ذلك.
:blink:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
ياريت توضحلنا اكثر
VB.NET and C# Comparison
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

لنفرض انك فمت بنسخ نص من برنامج الورد مثلاً وكان هذا النص هوا : Toolbar is a free
ثم ذهبت إلى برنامجي وقمت بعمل لصق .
أنا في هذه الحالة لدي قواعد معينة مثلا إذا وجد كلمة Free يقوم بمسحها ثم يعمل بعد ذلك لصق طبيعي .
يعني أني سوف أقوم بفحص النص في الذاكرة قبل إضافته لبرنامجي لكن كيف ذلك. :rolleyes:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
حط النص الموجود فى متغير نصى واجرى عليه التعديلات وبعدين لصقه فىRichTextBox
Dim Word As String word=clipoard.getdataobject(data.format.text) 'do enything for word . . . RichTextBox.selectedtext=word
والله اعلم
VB.NET and C# Comparison
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

شكرا لك SOLO.NET ولكن :
اين اضع هذا السطر :
يعني ماهوا الحدث الذي سينفذ عندما يتم اللصق مشكلتي اني اريد معالجة البيانات فقط عندما يتم لصقها . ارجوا ان يكون القصد واضح . :wacko:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
^
^
^
سؤال وجيه !!
أنا بانتظار الإجابة كذلك..
يمكنك البحث في قائمة الـEvents فقد تجده هناك..
ضعها فى الاجراء التى تقوم فيه باللصق
يعنى هذا الكود هو بديل كود اللصقRichtextbox.past
تم تعديل هذه المشاركة بواسطة SOLO.NET في 28 أغسطس 2005 في 16:50
VB.NET and C# Comparison
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

اقتباسword=clipoard.getdataobject(data.format.text)
هناك خطاء فى الكود والصحيح
Clipboard.getdataobject.getdata(dataformats.text)
كما يمكنك التعامل مع النص الموجود فى الحافظة مباشرة عن طريق دوال النصوص
VB.NET and C# Comparison
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

SOLO.NET كتب:ضعها فى الاجراء التى تقوم فيه باللصقيعنى هذا الكود هو بديل كود اللصقRichtextbox.past
شكرا لك اخي SOLO.NET :
لم افهم القصد يعني هل هناك حدث خاص بـ Richtextbox.past .هل قد جربته بمجرد الصق يعمل الحدث .
وياريت توضح كيف التعامل مع الحافضة بدوال النصوص .
وانا سوف احاول البحث ايضا . :wacko:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
انا حل للمشكلة و هيا ان اول حاجة نشوف هوا النسخ خيتم امتى فى صندوق النص
فى حالة من اتنين
الأولى لو المستخدم ضغط ctrl+v
الحاجة التانية لو انت عامل قائمة و فيها زرار بينسخ
يبقى الحل انك تكتب دالة تقوم بمعالجة النصوص تستدعيها فى الحالتين دول ( فى الحدث keydown تختبر لو كان المستخدم ضغط ctrl+c و لو كان كدا يبقى تستدعى الداله دى او فى الحدث بتاع زر القائمة بتاعتك)
و الداله دى بقى يا باشا فيها تاخد النص اللى فى clipboard و تعالجة براحتك و بعدين ترجع تحطه فيها و تستعمل rtfbox.paste بعد كدا عشان ينسخلك النص فى المكان اللى انت محدده او مش عارف زى ما solo بيقول بس انا مش عارف إزاى تعالج الداتا اللى فى clipboard مباشرة بالطريقة اللى هوا هيقولها
أحمد صلاح
ضع العبارة البرمجية الخاصة بعملية ازالة او تغيير النص الملصوق في حدث richtextbox.textchange بحيث تأخذ النص الملصوق وتضعه في متغير وتحري غليه التعديلات اللازمة وبعدين ترجع تلصقه مرة اخرى بدل النص الموجود ...
اخي dev_a_salah : هذا حل وهوا ان افحص هل قام المستحدم بالضغط على زر Ctrl + v يعني الأن اكيد انه في عملية لصق . كن هذا الحل اريد اكثر دقة منه .
شباب الفكرة هي عندما كيف اعرف ان المستخدم الأن عمل لصق على التكست .
شكرا mbmh ولكن في الحدث الذي ذكرته كيف يتم التعرف على النص الملصوق حاليا هذا شي الشي الثاني انه عند كل تعديل او تغير في الأداه سيتم فحص الكود الخاص باللصق وهذا يخالف فكرة ان يكون الكود به جوة عالية (بطئ) أي انه يجب ان ينفذ فقط عند اللصق ولا يتم الفحص دائما .
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
أخي فواز أعتقد ان الحل الذي قدمه الاخ dev_a_salah يحل مشكلتك
ففي الحالة الاولى اذا كان لديك عنصر في قائمة يقوم بعملية اللصق ( و تكون الخاصية Shortcut key=Ctrl+v) تضع بداخله كود القراءة من ال Clipboard و تحفظه في متغير نصي و تجري عليه العمليات التي تريدها او حتي تتجاهل امر اللصق نهائيا
اما اذا لم يكن لديك قائمة فيمكنك اختبار ضغط المستخد للمفتاحين Ctrl+V و تضع الكود و تقوم بمعالجة النص
و اذا لم يكن في ذلك الاجابة على سؤالك فارجو توضيح وجهة نظرك
و فوق كل ذي علم عليم
مش عارف دقة إيه اللى انت تقصدها ممكن توضح لنا لو سمحت
انت معندكش إلا حالتين هيخصل فيهم نسخ
ctrl+v
او زر انت عامله و بالنسبة لل ctrl+v
لو اصدته فى ال keydown event مش هينسخلك حاجة فى ال rtf مش هيتم النسخ إلا بعد لما تعمل المعالجة بتاعتك اوك
و زى ما قال C# Developer وضحلنا إيه اللى انت عاوز او لو وصلت لحاجة افضل قوانا عليها
أحمد صلاح
شوفو هي الفكرة اني اريد ان اعمل محرر لغة واود ان اقوم بمعالجة الأستطر على سطر سطر
فمثلا لوكنت واقف على السطر الخامس بقوم بمعالجة السطر الخامس فقط من ناحية تلوين الكلمات المحجوزة وبقية العمليات الأخرى , هذا سيعطيني سرعة جيدة بدل ان اقوم بمعالجة النص بالكامل .
لكن المشكلة هي لو قام الستخدم بعمل لصق إلى البرنامج وكان هذا اللصق يحتوي على سطرين مثلا فلن يقوم البرنامج إلا بمعالجة سطر واحد فقط والسطر التالي سيهملة .
وفي هذه الحالة انا اريد عند عمل لصق ان اخذ البيانات قبل لصقها فعلا ومعالجة كافة البيانات في الحافضة ومن ثم بعد ذلك اقوم بوضعها في البرنامج .
ياريت حد يكون فهم :wacko:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخي الكريم لقد قمت بعمل ما تريده على textbox ونفس هذه الاجراء يمكن عمله على richtextbox
وذلك عن طريق عمل هذا الكود حيث اذا قمت بعمل past او ctrl+v يقوم بتنفيذه
وذلك عن طريق عمل class خاص لتستخدمه في برنامجك وهذا هو الكود :
Public Class MyrichTextBox Inherits RichTextBox Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) Const WM_PASTE As Int32 = &H302 ' Const WM_Copy As Int32 = &H301 ' Const Wm_Cut As Int32 = &H300 ' Const Wm_Clear As Int32 = &H303 ' Const Wm_UnDo As Int32 = &H304 Dim st As String = " " If m.Msg <> WM_PASTE Then MyBase.WndProc(m) Else 'فحصها اذا كانت فارغه ام لا If Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) = True Then st = Clipboard.GetText.ToString ' الان قم بعمل اللازم من التغير والفحص ' بعد ذلك ضع المتغير بعد اجراء التعديلات اللازمه في ' clipboard Clipboard.SetText(st) MyBase.WndProc(m) End If End If End Sub End Class
ارجو ان يكون هذا هو طلبك
مع تمنياتي لك بالتوفيق
تم تعديل هذه المشاركة بواسطة jbsa في 6 سبتمبر 2005 في 10:31
اخي jbsa الف مش الف ترليون شكر .
بدون ما اجرب لكن هذه هي الفكره التي كنت ابحث عنها وهي معالجة الرسائل إلى النافذة وبتفيدني كثير في عملي شكرا لك اخي الكريم وإن شاء الله سوف اقوم بالتجريب والتعقيب على ذلك
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
على مبدأ المثل جت الحزينه تفرح ما لقت لها مطرح :wacko:
الكود شغال على textbox بس RichTextBox للأسف لم يستقبل اي رسالة ما ادري ايش المشكلة
اخي العزيز هل جربت الكود على RichTextBox وشتغل معاك .
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اقتباسعلى مبدأ المثل جت الحزينه تفرح ما لقت لها مطرح
اخي فواز لا تحزن فلك مطرح ، واليك الكود مجرب على richtextbox
Imports System.Windows.Forms Public Class MyrichTextBox Inherits RichTextBox Private Sub me_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Dim d As DataFormats.Format If e.KeyCode = Keys.V And e.Control = True Then d = DataFormats.GetFormat(DataFormats.Text) Dim st As String st = d.ToString If st <> "" Then ' عملية الفحص والتغيير st = "jbsa" Clipboard.SetText(st, TextDataFormat.Text) End If DidHandle = True Else DidHandle = False End If End Sub Dim DidHandle As Boolean = False Private Sub me_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress If DidHandle Then e.Handled = True DidHandle = False End If End Sub End Class
جرب واخبرني بالنتيجه
شكرا لك اخي الكريم بس ما فهمت السطر
DataFormats.GetFormat(DataFormats.Text)
هل ياخذ التنسيق من الذاكرة ام كيف .
سوف اجرب ذلك . :rolleyes:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
هذا الموضوع مغلق.