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

سؤال لمن تعامل مع ادوات Devexpress ؟ او هل من طرق اخرى ؟

مغلقمُجاب
بدأه red_scorpion1 في 16 فبراير 2013 · 10 رد · 2,448 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

لدى شاشة يتم منها عرض الصور الخاصة بكل مريض والمخزنة بقاعدة البيانات بطريقة ( Binary ) ويتم عرض الصور داخل Slider Image واستخدم هذا الكود فى عرض الصور

 

            var cn = new SqlConnection(SQL_Con.con_str);
            var cmd = new SqlCommand("SELECT *from pt_img WHERE pt_id=@pt_id;");

            cmd.Parameters.AddWithValue("pt_id", txt_pt_id.Text);
            cmd.Connection = cn;
            var ad = new SqlDataAdapter(cmd);
            ad.Fill(dt);
            dataGridView1.DataSource = dt;
            dataGridView1.Visible = false;
            foreach (DataRow row in dt.Rows)
            {
                if (!Convert.IsDBNull(row["img_path"]))
                {
                    var data = (Byte[])(row["img_path"]);
                    var mem = new MemoryStream(data);
                    imageSlider1.Images.Add(Image.FromStream(mem));
                    imageSlider1.AnimationTime = 1200;

                    imageSlider1.LayoutMode = DevExpress.Utils.Drawing.ImageLayoutMode.MiddleCenter;
                }
            }

 

 

والجدول الذى يخزن به الصور بقاعدة البيانات به الأعمدة التالية:

1. عامود pt_id وهو كود المريض ومن نوع int.

2. عامود img_pat وبه قيمة الصورة على هيئة Binary وهو من نوع varbinary(MAX).

3. عامود img_code وبه رقم مميز لصورة لألغاء أو تحديث الصورة عن طريقة فى حالة وجود أكثر من صورة للمريض والرغبة فى إلغاء أو تحديث صورة معينة ونوعه int وهو Auto number.

اريد ان استدعى هذا الرقم img_code والخاص بالصورة المعروضة حاليا فى Slider image كذلك عند الانتقال بين الصور اريد ان يتم اظهار الرقم الخاص بالصورة المعروضة

 

جربت الكود التالى فى حدث GetImage ولكن دون جدوى 

 

        private void imageSlider1_GetImage(object sender, DevExpress.XtraEditors.Controls.GetImageEventArgs e)
        {
            int rec = imageSlider1.Images.IndexOf(e.Image);
            textBox2.Text = dt.Rows[rec]["img_code"].ToString();
        }

 

فكيف يمكن عمل ذلك ؟ او هل من حلول اخرى مع توضيحها جزاكم الله خيرا ؟

#2

أخي الكريم

عندما كنت تراقب سير التنفيذ هل تجد أن قيمة rec صحيحة ؟

ومن ثم مالذي يوضع في التكست بوكس 2 هل قيمة خطأ أم لا يوجد قيمة أم ماذا ؟

يعني بين ما هو الخطأ الحاصل لنحصر أسبابه

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3
أبو أحمد المبرمج كتب:

أخي الكريم

عندما كنت تراقب سير التنفيذ هل تجد أن قيمة rec صحيحة ؟

ومن ثم مالذي يوضع في التكست بوكس 2 هل قيمة خطأ أم لا يوجد قيمة أم ماذا ؟

يعني بين ما هو الخطأ الحاصل لنحصر أسبابه

 

السلام عليكم

 

التسكت بوكس 2 المفترض ان يظهر به code_image ولكن عند وضع الحدث فى getImage لا يظهر به اى شيء حتى تننىاستبدلك الجزء الخاص ب تكست بوكس 2 واستبدلته برسالة نصية تعرض قيمة rec ولكن ايضا لم تظهر الرسالة

 

عند وضع الكود التالى ضمن كود عرض الصورة وهو الكود الأول فى المشاركة

 

textBox2.Text = dt.Rows[rec]["img_code"].ToString();

 

يتم تعبئة تكست بوكس 2 ب code_image الخاص بأول صورة فقط ومهما اغير الصورة من slider لا يتغير هذا الرقم ؟؟؟؟

#4

السلام عليكم ...

سأطرح المشكلة بشكل آخر للأعضاء حتى نحصل على المساعدة ..

لدينا imageSilder  من ادوات devExpress  و قمنا بإضافة مجموعة من الــ Images  إليه  .. ما هو الــ Event  الذي يتم تفعيله عندما ينتقل المستخدم من صورة لاخرى باستخدام الأزرار Next  و Prev  و كيف نحصل على الـــ Index  للــ Image  الحالية المعروضة في الــ Slider  ..  (يعني الــ Image  الأولى هي المعروضة الآن أو الثالثة أو .... الخ) .

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

السلام عليكم

 

ارسلت مشكلتى إلى شركة Devexpress وكان الرد التالى

 

 

 

اقتباس
When you add an Image to the collection, try setting its Tag property to the ID [img_code] of current record.

In the imageSlider1_GetImage event handler, you'll be able to find the [img_code] using (int)e.Image.Tag.

 

هل من توضيح وكيف ذلك وانا اقوم بتعبئة الصور من DataSet ؟؟؟

#6

السلام عليكم ..

  1. هو يفترض أن الحدث GetImage  يتم قدحه (تفعيله) .. و بالتالي يكون :
    foreach (DataRow row in datatable.Rows)
                {
                    if (!Convert.IsDBNull(row["img_path"]))
                    {
                        Byte[] data = (Byte[])(row["img_path"]);
                        MemoryStream mem = new MemoryStream(data);
    					Image image = Image.FromStream(mem);
    					image.Tag = row["img_code"] ;
    					
                        imageSlider1.Images.Add(image);
    
                     }
                    
                }
    			
          //Increase image sliding animation duration (default is 700 ms)
          imageSlider1.AnimationTime = 1200;
    
    	  //Display images at the center of ImageSlider in their original size
          imageSlider1.LayoutMode = DevExpress.Utils.Drawing.ImageLayoutMode.MiddleCenter;

      (لاحظ الاكواد التي اصبحت خارج الحلقة) .

  2. و في الحدث GetImage  يكون : 

    			int i = (int)e.Image.Tag ;	TextBox2.Text = i.ToString();

     على فرض ان حقل الكود هو رقمي .

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7
houssam11350_11350 كتب:

السلام عليكم ..

  1. هو يفترض أن الحدث GetImage  يتم قدحه (تفعيله) .. و بالتالي يكون :
    foreach (DataRow row in datatable.Rows)
                {
                    if (!Convert.IsDBNull(row["img_path"]))
                    {
                        Byte[] data = (Byte[])(row["img_path"]);
                        MemoryStream mem = new MemoryStream(data);
    					Image image = Image.FromStream(mem);
    					image.Tag = row["img_code"] ;
    					
                        imageSlider1.Images.Add(image);
    
                     }
                    
                }
    			
          //Increase image sliding animation duration (default is 700 ms)
          imageSlider1.AnimationTime = 1200;
    
    	  //Display images at the center of ImageSlider in their original size
          imageSlider1.LayoutMode = DevExpress.Utils.Drawing.ImageLayoutMode.MiddleCenter;

      (لاحظ الاكواد التي اصبحت خارج الحلقة) .

  2. و في الحدث GetImage  يكون : 

    			int i = (int)e.Image.Tag ;	TextBox2.Text = i.ToString();

     على فرض ان حقل الكود هو رقمي .

 

حقل الكود رقمى بالفعل

 

تم تجربة الكود ولكن لم تظهر اى نتيجة ب textbox2.text ؟؟؟؟

#8
red_scorpion1 كتب:

حقل الكود رقمى بالفعل

 

تم تجربة الكود ولكن لم تظهر اى نتيجة ب textbox2.text ؟؟؟؟

 هل قمت بالتنقل بين الصور ؟ باستخدام الازرار ؟

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#9

نعم قمت بالتنقل بالأزرار

 

وعند وضع الكود التالى اسفل كود تعبئة sliderimage وليس فى حدث getimage

 

	int i = (int)e.Image.Tag ;	TextBox2.Text = i.ToString();

 

لاحظت انه يقوم بجلب img_code الخاص بأخر صورة فقط ؟؟؟

#10

طيب انا دلقوتنى جاتلى فكرة بس واقف فى نقطة واحدة

 

لو استبدلت sliderimage ب pictucerbox ازاى اعرض فيه الصورة من MemoryStream وحعمل زر تنقل للتالى والسابق لعرض الصور

 

           var cn = new SqlConnection(SQL_Con.con_str);
            var cmd = new SqlCommand("SELECT *from pt_img WHERE pt_id=@pt_id;");

            cmd.Parameters.AddWithValue("pt_id", txt_pt_id.Text);
            cmd.Connection = cn;
            var ad = new SqlDataAdapter(cmd);
            ad.Fill(dt);
            dataGridView1.DataSource = dt;
            dataGridView1.Visible = false;
            foreach (DataRow row in dt.Rows)
            {
                if (!Convert.IsDBNull(row["img_path"]))
                {
                    var data = (Byte[])(row["img_path"]);
                    var mem = new MemoryStream(data);
                    imageSlider1.Images.Add(Image.FromStream(mem));
                    imageSlider1.AnimationTime = 1200;

                    imageSlider1.LayoutMode = DevExpress.Utils.Drawing.ImageLayoutMode.MiddleCenter;
                }
            }
#11 أفضل إجابة

السلام عليكم ...

  1. يوجد عنصر جاهز للتنقل هو BindingNavigator  .. نسحبه و نحذف أزرار الجديد و الحذف و نضع الخاصية Dock = None  كي نضعه في أي مكان على الفورم ثم ..
  2. نسحب عنصر BindingSource  .
  3. نضع الخاصية Bindingnavigator1.BindingSource = bindingSource1  من نافذة الخصائص .
  4. نضع الحدث bindingSource1_CurrentChanged كمايلي :
    private void bindingSource1_CurrentChanged(object sender, EventArgs e)
            {
                if(bindingSource1.Current == null)
    			return;
    			DataRowView rv = bindingSource1.Current as DataRowView;
                DataRow row = rv.Row ;
                if (!Convert.IsDBNull(row["ImagePath"]))
                {
                    
                    Byte[] data = (Byte[])(row["ImagePath"]);
                    MemoryStream mem = new MemoryStream(data);
                    Image image = Image.FromStream(mem);
                    pictureBox1.Image = image;
                    
    
                }
                textBox1.Text = row["ImageCode"].ToString();
                
    
            }

     

  5. و جلب البيانات بالشكل :

    SqlConnection connection = new SqlConnection(@"Server=.\sqlexpress;Database=DB02;Trusted_Connection=Yes;");
    SqlCommand command = new SqlCommand("SELECT PatientID , ImagePath , ImageCode FROM PatentPhoto WHERE PatientID=@PatientID;");
    command.Parameters.AddWithValue("@PatientID", 1);
    command.Connection = connection;
    SqlDataAdapter adapter = new SqlDataAdapter(command);
    DataTable datatable = new DataTable();
    adapter.Fill(datatable);
    bindingSource1.DataSource = datatable;

     

  6. الآن يمكننا التنقل بين الصور باستخدام الــ navigator  .

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 16 فبراير 2013 في 21:07

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…