PDA

View Full Version : سوال: نمایش تکست باکس در استیمول ریپورت



hamid_73
شنبه 02 فروردین 1393, 10:16 صبح
سلام دوستان عیدتون مبارک
من یه پروژه دارم که کاربر می تونه هرچی که دلش خواست به صورت ران تایم تکست باکس و لیبل بزاره رو فرم چه جوری میشه همه ی اونا رو در جاهایی که هستند در استیمول ریپورت با مقادیرشون نمایش داد :متفکر:

shahryari
شنبه 02 فروردین 1393, 12:05 عصر
.
.
شما ميتونيد يك عكس از فرمتون بدون بردر استايل بگيريد و بفرستيت به گزارش....
درغير اين صورت بيشتر توضيح بديد

hamid_73
شنبه 02 فروردین 1393, 12:08 عصر
سلام
سيموليت ريپورت؟؟!!!
اين ابزار گزارش گيري جديده؟ عايا؟؟
.
.
اگر منظورتون استيمول ريپورت است ، شما ميتونيد يك عكس از فرمتون بدون بردر استايل بگيريد و بفرستيت به گزارش....
درغير اين صورت بيشتر توضيح بديد

حالا همون :لبخند:
نه نمی خوام عکس ازش بگیرم آخه می خوام یه الگو بزارم رو فرمم یا یه تصویری و طبقه اون تصویر، تکست باکس و اینا رو بچینم و موقع چاپ نمی خوام عکسه پشتشون چاپ بشه چیکار کنم

hamid_73
شنبه 02 فروردین 1393, 16:13 عصر
کسی نمی دونه چه جوری باید اینکارو بکنم ؟

khokhan
شنبه 02 فروردین 1393, 18:33 عصر
کسی نمی دونه چه جوری باید اینکارو بکنم ؟
همانطور که خودتون هم گفتین شما قصد دارین تا کنترل های دینامیک یا به قولی پویا توی فرم تون ایجاد کنین
وبعد مقادیر این کنترلها رو به گزارش ارسال کنین
اگر این فرض درست باشه پس بایستی گزارشتون رو هم دینامیک ایجاد کنین
یعنی کاربر بتونه به هر مقدار که کنترل در فرم وجود داشت ،پارامتر ایجاد کرده و به گزارش ارسال کنه
به این نوع گزارش سازی اصطلاحا گزارش پویا گفته می شه و در اون حتی صفحه گزارش و کنترلهای اون در سمت برنامه ساخته می شه .......
.......

hamid_73
شنبه 02 فروردین 1393, 20:14 عصر
بیشتر توضیح میدین :لبخند:
چه جوری باید درست کنن :لبخند:

aslan
شنبه 02 فروردین 1393, 20:22 عصر
سلام
از نمونه کد زیر میتونین استفاده کنین
فقط در نظر داشته باشین که طول و عرض صفحه نمایش با صفحه چاپ یکی نیست ( تغییرات لازم را در کد اعمال کنید )



StiReport report = new StiReport();
StiPage page = report.Pages[0];
report.ReportUnit = StiReportUnitType.HundredthsOfInch;
report.Dictionary.Synchronize();
foreach (Control cltr in Controls)
if (cltr is TextBox ||cltr is Label)
{
StiText dataText = new StiText(new RectangleD(cltr.Left - 170 , cltr.Top, cltr.Width, cltr.Height));
dataText.Text = cltr.Text;
dataText.Name = cltr.Name;
dataText.HorAlignment = StiTextHorAlignment.Right;
dataText.VertAlignment = StiVertAlignment.Center;
//dataText.Margins = new StiMargins(3, 3, 3, 3);
dataText.Brush = new StiSolidBrush(Color.Pink);
dataText.Border.Side = StiBorderSides.All;

page.Components.Add(dataText);
}

report.Compile();
// report.Design();
report.Show();

hamid_73
شنبه 02 فروردین 1393, 21:12 عصر
هیچی D: D: D:

hamid_73
شنبه 02 فروردین 1393, 21:18 عصر
داداش تکست باکسا رو که نشون نمیده تو گزارش :افسرده:

khokhan
شنبه 02 فروردین 1393, 21:27 عصر
داداش تکست باکسا رو که نشون نمیده تو گزارش :افسرده:
قرار نیست تکست باکسها رو توی گزارش نشون بدین:لبخند:
همینکه مقادیر داخل کنترل ها رو به گزارشتون پاس بدین توی گزارش هم می تونین از هر نوع کنترل که توی فرم دارین ایجاد کنین و مقادیر رو داخلشون بریزین

aslan
شنبه 02 فروردین 1393, 21:35 عصر
داداش تکست باکسا رو که نشون نمیده تو گزارش :افسرده:

مطمئنید ؟؟؟؟!!!!!!!!!!!
تصویر زیر نمونه استفاده شده از کد ارسالی هستش .......... حتما جایی اشتباه کردین که جواب مناسبونگرفتین و........................

hamid_73
شنبه 02 فروردین 1393, 23:38 عصر
نه خیلی ممنون درست شد من چون کنترلامو رو پیکچر باکس گذاشته بودم حواسم نبود که بهش اضاافه کنم :قلب::چشمک:

hamid_73
یک شنبه 03 فروردین 1393, 11:25 صبح
داداش نمیشه کاری کرد که کله فرم رو کوچیک کنه بندازه تو برگه A4? اخه فرم من ماکسیمازه میخوام هرجاش که گذاشتم توa4 نشون بده

aslan
یک شنبه 03 فروردین 1393, 18:06 عصر
سلام
ببینید کد زیر میتونه کمکتون بکنه یا نه ؟




StiReport report = new StiReport();

report.ReportUnit = StiReportUnitType.HundredthsOfInch;
report.Dictionary.Synchronize();

StiPage page = report.Pages[0];

page.Margins = new StiMargins(0, 0, 0, 0);
page.Width = this.Width;
page.Height = this.Height;
page.RightToLeft = true;

foreach (Control cltr in Controls)
if (cltr is TextBox ||cltr is Label)
{
StiText dataText = new StiText(new RectangleD(cltr.Left , cltr.Top, cltr.Width, cltr.Height));
dataText.Text = cltr.Text;
dataText.Name = cltr.Name;
dataText.HorAlignment = StiTextHorAlignment.Right;
dataText.VertAlignment = StiVertAlignment.Center;
// dataText.Margins = new StiMargins(3, 3, 3, 3);
dataText.Brush = new StiSolidBrush(Color.Pink);
dataText.Border.Side = StiBorderSides.All;

page.Components.Add(dataText);
}

report.Compile();
//if(checkBox1.Checked)
// report.Design();
report.Show();


تست کنید ببینید مشکل با کدهای فوق حل میشه یا نه ؟
به احتمال زیاد وقتی سایز (چیدمان) تکست باکس ها تفاوت زیادی با اندازه صفحه A4 داشته باشه
مشکل همچنان وجود خواهد داشت
بنظرم بهترین روش بدست آوردن تفاوت عرض صفحه نمایش و صفحه چاپ ( ضریب .... ) واعمال تاثیر آن در ایجاد تکست باکس گزارش ( RectangleD(cltr.Left * Zarib , cltr.Top, ) میباشد .............