ورود

View Full Version : بار گذاري يک تصوير در زمان اجراي برنامه در يک PictureObject



alireza_tavakol
چهارشنبه 30 بهمن 1387, 10:59 صبح
با سلام

من در هنگام اجراي برنامه ام نياز دارم يک تصوير با آدرس ثابت را در فرم گزارش Crystal Report نمايش دهم براي اين کار از کنترول PictureObject استفاده کرده ام .

ولي مشکل من اينجاست که نمي دانم چگونه در هنگام اجراي برنامه فايل عکس را در PictureObject بارگذاري نمايم

با تشکر از راهنماي شما دوست عزيز

hasan_esfahan
چهارشنبه 07 اسفند 1387, 23:05 عصر
این یک راه پیشنهادی است اگر دوست داشتی استفاده کن

ابتدا یک data set ایجاد می کنید داخل فرم data set راست کلیک add و datatable را ایجاد می کنی(dt1) سپس روی dt1 راست کلیک کنید و add=> column کلیک کنید (img1) و date type ان را از نوع System.Byte[] قرار دهید سپس به کریستال ریپورت رفته و دیتاست را فراخوانی و فیلد img1 را در قسمت details قرار دهید بعد به محیط کد نویسی بازگشته و کد زیر را درج کنید



DataSet1 ds1 = newDataSet1();
CrystalReport1 cr1 = newCrystalReport1();
DataSet1.dt1Row img = ds1.dt1.Newdt1Row();
img["img1"] = convert("d:\1.bmp");
ds1.dt1.Rows.Add(img);
cr1.SetDataSource(ds1);
crystalReportViewer1.ReportSource = cr1;


}byte[] convert(string path1)
{
System.IO.FileStream filein = new System.IO.FileStream(path1, FileMode.Open, FileAccess.Read);
BinaryReader bineryimg = newBinaryReader(filein);
return (bineryimg.ReadBytes(Convert.ToInt32(bineryimg.Bas eStream.Length)));
}

tto_baran
شنبه 09 خرداد 1388, 08:24 صبح
این یک راه پیشنهادی است اگر دوست داشتی استفاده کن

ابتدا یک data set ایجاد می کنید داخل فرم data set راست کلیک add و datatable را ایجاد می کنی(dt1) سپس روی dt1 راست کلیک کنید و add=> column کلیک کنید (img1) و date type ان را از نوع System.Byte[] قرار دهید سپس به کریستال ریپورت رفته و دیتاست را فراخوانی و فیلد img1 را در قسمت details قرار دهید بعد به محیط کد نویسی بازگشته و کد زیر را درج کنید

[/code]


لطفا در مورد هر كدام از مرا حل فوق كه فرمودي به زباني ساده و در سطح مپتدي توضيحاتي مرقوم فرماييد.

seven7777777
شنبه 09 خرداد 1388, 12:17 عصر
دوست عزیز یک فیلد از نوع تصویر در کریستال نیاز به هیچ عملی برای نمایش ندارد . فقط کافیست تا در محیط Design آنرا از بخش فیلد های بانک کشیده و رهاکنید . در این حالت Object ای از نوع blob ایجاد میشود که در زمان اجرا تصویر دلخواه را نشان می دهد .

در کد دوست بسیار عزیزم hassan_esfahan از انجا که ما آدرس تصویر را داریم ، موقتا یک دیتاست ایجاد و تصویر را از آدرس مورد نظر واکشی و در فیلدی از نوع Varbinary در جدول مربوطه وارد می کنیم و سپس این فیلد ساخته شده را براحتی در گزارش Drag کرده و استفاده می کنید .

tto_baran
شنبه 09 خرداد 1388, 14:37 عصر
من سه جدول را از ديتا بيس مربوط به برنامه ام به قسمت ديتابيس اكسپرت كريستال ريپورت اضافه كرده ام و فيلد هاي مورد نياز را هم دراگ نموده ام ولي متاسفانه در هنگام نمايش هر ركورد را پنج بار تكرارميكند شايد روش من درست نباشد خواهش ميكنم راهنمايي كنيد

sokotn2008
چهارشنبه 13 خرداد 1388, 22:53 عصر
با سلام من هم همین مشکل رو دارم اما با این تفاوت که یک عکسی به دلخواه کاربر باید بالای صفحه قرار گیرد در واقع من برنامه نویس از مسیر عکس خبر ندارم و اینکه با پر کردن dataset هم مشکل من حل نمی شو د زیرا این عکس ربطی به بانک ندارد در واقع بهتر بگم دیتا ست قبلا پر شده حالا دوباره نمی تونم آن را new کنم زیرا اطلاعات قبلی از بین می رود
آیا می شود با کد نویس شی با نوع blob را ساخت مثل parameterfeild ها که با کد نویسی میتوان آن ها را ساخت و مقدار دهی کرد
یا همان pictureobject را کاربر بتواند مسیر عکس را عوض کند

pazahr
دوشنبه 02 شهریور 1388, 12:00 عصر
سلام
من هم مشكل آقا عليرضا رو دارم.
اما فكر نمي كنم اصلا نيازي به استفاده از بانك اطلاعاتي باشه. چرا كار رو سختش مي كنيد؟!
كافيه مثلا با يك openfiledialog يك فايل تصوير انتخاب كنيم و خاصيت تصوير كنترل picture در گزارش روي اون ست بشه. فرض بر اين هست كه همون موقع اجرا عكس رو نشون بده كافيه.
مشكل اصلي من دسترسي مستقيم به تصوير موجود در فايل گزارش در بخش details هست.
اگر بتونيد كمك كنيد ممنون ميشم.