PDA

View Full Version : تعیین مقدایر top ,left از طریق برنامه نویسی



jjsaeed
یک شنبه 08 مهر 1386, 09:43 صبح
با سلام خدمت دوستان می خواستم بدونم چطوری میشه به یک object که تو کریستال ریپورته مقدار top , left داد .
ولی ما خوام این مقدار رو هر بار خود کاربر تنظیم کنه .

sm
یک شنبه 08 مهر 1386, 12:40 عصر
خوش اومدین
نماز روزه هاتون قبول ... التماس دعا
--------------------------------------------
شما ابتدا یه متغیر از گزارشتون تعریف کنین :


Public Report As New Report6

از این به بعد باید با این متغیر کار کنین و دیگه با آدرس فیزیکی گزارش کاری ندارین!
یه مزیت خیلی عمده این روش اینه که نیازی نیست مسیر فیزیکی گزارش رو به برنامه معرفی کنین و همراه برنامه نصب کنین بلکه با این روش گزارتون میشه جزوی از فایل EXE برنامه.
توی مرحله بعد با این کد می تونین مختصات رو عوض کنین :


Report.DetailSection1.ReportObjects(3).Height = 200
Report.DetailSection1.ReportObjects(3).Top = 100
Report.DetailSection1.ReportObjects(3).Left = 300
Report.DetailSection1.ReportObjects(3).Width = 400

البته میتونین بجای استفاده از اندیش فیلد گزارشتون که فرضا اینجا 3 درنظر گرفتم، از نام فیلد نیز استفاده کنین.
بعد از Report هم بستگی به این داره که فیلدتون توی چه قسمتی باشه، فرق میکنه .
اینجا فرض بر این است که میخواین فیلد سوم Detail Section رو تغییر بدین.

موفق باشید

jjsaeed
یک شنبه 08 مهر 1386, 13:04 عصر
متشکرم از جوابتون ولی توی برنامه من نه DetailSection1 رو میشناسه نه Report6 رو میشه یه خورده بیشتر توضیح بدین
راستی ببخشید نماز و روزه های شما هم مورد قبول حق ومحتاجیم به دعا

abolfazl585
یک شنبه 08 مهر 1386, 13:37 عصر
می تونید از
Report.ReportDefinition.ReportObjects["name or index"].Left = 200 استفاده کنید

jjsaeed
یک شنبه 08 مهر 1386, 13:46 عصر
میشه به صورت کامل تعریف report و ReportDefinition و طریقه استفادشو برام بگید . چون من اصلا کریستال ریپورت بلد نیستم.

abolfazl585
یک شنبه 08 مهر 1386, 14:05 عصر
ببین عزیز من فرض رو به این میگیرم که شما گزارشتان را با کریستال ریپورت تهیه کرده اید
ابتدا باید این ریپورت رو در کدهاتون تعریف کنید. من کدهاش رو با C# 2005 براتون میگم انشاالله بدردتون بخوره.
برای تعریف یک شیی گزارشی :


CrystalDecisions.CrystalReports.Engine.ReportDocum ent
report = new
CrystalDecisions.CrystalReports.Engine.ReportDocum ent
();
حالا باید گزارش خودتون رو با این شی لود کنید:

report
.Load(Server.MapPath("reportname.rpt"));

حالا ما فرض میکنیم که شما در داخل گزارشتون یک فیلد دارین با نام "field1".

report.ReportDefinition.ReportObjects["field1"].Left = 200;
و حالا باید جدول داده ها رو به این گزارش ست کنیم:

DataTable dt = new DataTable();
dt = "select * from mytable";
report.SetDataSource(dt);
حالا می تونی این ریپورت رو در صفحه خودت نشون بدی که بهترین روش استفاده از pdf است.
یک راه حل این است که فایل pdf رو در هارد خودت ذخیره و سپس برای کاربر نشون بدی و راه حل بهتر اینه که فایل pdf رو با استفاده از Stream به کاربر نشون بدی که اصطلاحا میگن on the fly.

jjsaeed
یک شنبه 08 مهر 1386, 14:16 عصر
آقایabolfazl585 واقعا متشکرم چون من c# نویسم کد شما خیلی به من کمک کرد خدا توی کد گیرت نندازه