آموزش كار با بخش طراحي گزارش نرم افزار گزارش ساز مديران :

براي دريافت مطلب زير بصورت كامل به آدرس 

 

http://s3.picofile.com/file/8196469884/MGR1017_3T.pdf.html

و 

http://s3.picofile.com/file/8196470292/MGR1017_4T.pdf.html

مراجعه فرماييد

با کلیک روی   Designer  طراحی گزارش منوی اصلی  FASTREPORT ظاهر می گردد.اجزا  بوسيله طراح تهيه مي شوند كه با دو بار كليك كردن روي جزء گزارش Tfrx فراخواني می شود. Designer  ابزارهاي مناسب را در اختيار كاربر قرار مي دهد.

.واسط Designer براي توسعه ظاهر گزارش با قابليت پيش مشاهده UPDATE میگردد و شامل جعبه ابزار متنوعي است كه مي تواند هر جايي كه مي خواهيد قرار داده شود . در فايل ini  اطلاعات مربوط به موقعيت نوارها وتنظيمات Designer در فايلهاي ini ذخيره شده است که با هر بار كه برنامه را آغاز مي كنيد بازيابي مي شود

در زمان طراحي Designer مي تواند به محيط دلفي دستيابي داشته باشد. براي استفاده DESIGNER در يك پروژه بايد جزء Tfrx designer را از الگوي جزء fast report بردارید يا واحد frx designer را به ليست USES اضافه كنید.

 

در شكل :

1- محيط كارDESIGNER                       2- نوار منو                   3- جعبه ابزارها

4- جعبه اشيا                                  5- ابزار حالت DESIGNER       6- صفحات گزارش

7- پنجره گزارشات بصورت درختي    8- پنجره كنترل شيء

9- اطلاعات درختي (كه مي توانيد عناصر يك گزارش را از اين پنجره حركت دهيد)

10- خط كش ها( هنگام حركت دادن يك خط كش به صفحه گزارش ، خط راهنما ظاهر مي شود)

11- خط وضعيت

 

كليدهاي كنترل

 

توضيحات

كليدها

باز كردن

Ctrl+o

ذخيره كردن

Ctrl+s

پس مشاهده

Ctrl+p

رفو كردن

Ctrl+z

تكرار كردن

Ctrl+y

كپي كردن

Ctrl+c

جا گذاري

Ctrl+v

بريدن

Ctrl+x

انتخاب همه

Ctrl+a

حركت بين اشيا

arrows

حذف اشيا انتخاب شده

Del

فراخواني ويرايشگر اشيا انتخاب شده

enter

اصطلاح اندازه اشيا انتخاب شده

Shift+arrows

حركت دادن اشيا انتخاب شده

Ctrl+arrows

شيء انتخاب شده نزديكترين جهت مشخص شده چسبيده مي شود.

Alt+arrows

 

كنترل موس

 

توضيحات

عمليات

انتخاب شيء : جا گذاري شيء جديد، حركت دادن و اندازه گيري مجدد اشيا انتخاب شده، مي توانيد بزرگنمايي يا كوچك نمايي را با حركت دادن مربع قرمز رنگ در سمت چپ پايين اشيا انتخاب شده انجام دهيد.

دكمه سمت چپ

منوي اشيا ضمني انتخاب شده

دكمه سمت راست

فراخواني ويرايشگر اشيا: با دو بار كليك كردن روي فضاي سفيد صفحه "تنظيمات صفحه" فراخواني مي شود.

دو بار كليك

حركت دادن صفحه گزارش

Mouse wheel

تغيير وضع شيء انتخاب شده

Shift +left button

اگر در طول حركت موس دكمه سمت چپ آنرا نگه داريد ، يك فرم ظاهر مي شود. اگر دكمه موس را رها كنيد تمامي اشيا تصرف شده در فريم انتخاب خواهند شد. اين عمل با دوبار كليك روي فضاي خالي صفحه و حركت مكان نماي موس به موضع مورد نياز هم انجام مي شود.

كليد سمت راست+ctrl

اگر شيء" متن " انتخاب شده باشد ، محتويات آن در همانجا ويرايش داده مي شود.

كليد سمت چپ+alt

 

 

ابزارها

نوار حالات DESIGNER

از دكمه هاي زير تشكيل يافته است:

 

توضيح

نام

مكان نماي موس امكان گزينش اشيا و اصلاح اندازه ها و... را دارد.

انتخاب اشيا

با كليك روی اين آيكون امكان حركت دادن صفحه گزارش داده مي شود .

دست

كليك روي دكمه سمت چپ بزرگنمايي را دو برابر مي كند و كليك روي دكمه سمت راست بزرگنمايي را نصف مي كند. بهنگام نگاه داشتن دكمه سمت چپ روي محدوده انتخاب شده بزرگ می شود .

zoom

امكان ويرايش محتويات روي صفحه گزارش مي دهد . اگر هنگام حركت دادن مكان نماي موس دكمه چپ موس را نگه داريد ،شيء متن در جاي منتخب ظاهر مي شود و ويرايشگر آن راه اندازي مي شود.

Text editor

اين دكمه هنگامي كه شيء متن انتخاب شده باشد قادر به كار است.

Format copying

 

ابزارهاي استاندارد

 

توضيحات

نام

ايجاد يك صفحه گزارش

گزارش جديد

باز كردن گزارشات فعال از فايل(كليد ميانبر  ctrl+o )

باز كردن گزارش

ذخيره كردن گزارش در قايل (كليد ميانبر  ctrl+s )

ذخيره گزارش

انجام بازسازي گزارش و پيش مشاهده آن (كليد ميانبر  ctrl+p )

پیش مشاهده

اضافه كردن صفحه جديد درون گزارش

صفحه جديد

اضافه كردن فرم سوال و جواب درون گزارش

فرم DIALOG جديد

حذف صفحه جاري

حذف صفحه

برش اشيا انتخابي درون صفحه كار (كليد ميانبر  ctrl+x  )

برش

فراخواني خواص صفحه

خصوصيات صفحه

فراخواني ويرايشگر متغيرهاي گزارش

متغيرها

كپي كردن اشيا انتخابي درون صفحه كار(كليد ميانبر  ctrl+c )

كپي

جاي گذاري اشيا از صفحه كار(ctrl+v )

جاي گذاري

تنظيم الگوهاي شيء متن . شيء متن را انتخاب روي آن كليك كنيد. اشيا متن قالب مشخص شده الگوي خاص را خواهند داشت . براي راه اندازي مجدد تنظيمات الگو، روي فضاي خالي صفحه كليك كنيد و روي اين دكمه كليك كنيد.

قالبهاي(نمونه)از پيش تعيين شده

خنثي كردن آخرين عمليات (فرمان ميانبر ctrl+z )

لغو كردن

انجام دوباره آخرين عمليات لغو شده(فرمان ميانبر ctrl+y )

تكرار

نشان دادن صفحه بصورت مشبك (فاصله بين چهارخانه ها بوسيله انتخاب هاي DESIGNER تنظيم مي شود.)

نمايش مشبك

در طول حركت تصوير با مكان نما مختصات شيء مطابق تنظيم مشبك اصلاح مي شود.

تنظيم مشبك

اصلاح سايز(موقعيت)اشيا انتخاب شده، بنابراين اشيا در زوج اتصال قرار مي گيرند.

مشخص كردن زوج اتصال در مشبك

تنظيم بزرگنمايي

بزرگنمايي

 

 

نوار ابزار فريم

 

توضيح

نام

فعال/غير فعال ساختن خط بالاي فريم

خط بالا

فعال/غير فعال ساختن خط پايين فريم

خط پايين

فعال/غير فعال ساختن خط چپ فريم

خط چپ

فعال/غير فعال ساختن خط راست فريم

خط راست

فعال كردن تمامي خطوط

تمامي خطوط

غير فعال ساختن تمامي خطوط

حذف خطوط

فعال/غير فعال ساختن سايه

سايه

انتخاب رنگ زمينه از ليست

رنگ زمينه

انتخاب رنگ خط از ليست

رنگ خط

انتخاب سبك خط گذاري از ليست

شيوه خط گذاري

انتخاب پهناي خط از ليست

پهناي خط

 

ابزار رديف كردن

 

توضيح

رديف كردن لبه هاي چپ

وسط از ميان

رديف كردن لبه هاي راست

رديف كردن لبه هاي بالا

تراز كردن عمودي

رديف كردن لبه هاي پايين

تراز كردن پهنا

تراز كردن ارتفاع

وسط در ميان پنجره

وسط عمودي در پنجره

تنظيم پهنا به همان حالت اوليه انتخاب شيء

تنظيم ارتفاع به همان حالت اوليه انتخاب شيء

 

انتخاب هاي طراح

مسیر زیر را طی کنید: OPTIONSگزینه

کادر گفتگوی زیر باز می شود.دربخشGRIDمیتوانید واحد سانتیمترواینچ یا پیکسل را انتخاب نمایید.برای فعال کردن هرواحد روی گزینه رادیویی سمت چپ آن کلیک کنید.می توانید نمایش یا عدم نمایش GRID را با SHOW GRIDتعیین نمائید.با فعال کردن ALIGN TO GRID میتوانید چهارخانه ها را در یک خط قراردهید.

 

مي توانيد خط خاصي  براي پنجره ويرايش كنید و اگر گزينه "use objects font seething" فعال باشد ، خط درون پنجره ويرايش متن با خط شيء ويرايش شده مطابق خواهد بود.

اگر زمينه سفيد DESIGNER ميدان را نمايش دهد و سرويس پنجره براي شما مناسب نباشد، مي توانيد با "workspace " و دكمه هاي "tool window"  آنرا اصلاح كنيد. گزينه "LCDgrid color" وضوح ديد آنها را روي صفحه نمايش بهينه مي سازد. گزينه "show editor after insert " فرآيند پردازش درج اشيا جديد را كنترل مي كند. اگر گزينه فعال باشد، ويرايشگر آن هر زماني كه شيء درج شود ، نمايش داده خواهد شد. هنگام توليد عمده اشيا خالي توصيه مي شود كه اين گزينه غير فعال شود.

با غير فعال كردن گزينه "show band caption " مي توانيد"bands captions " را به منظور ذخيره كردن مقداري از فضا غير فعال كنيد.

گزينه "free hand placement " نوار sapping صفحه را غير فعال مي كند. اين گزينه بصورت پيش فرض غير فعال شده است و نوارها بصورت خودكار وظيفه كاري شان در صفحه گروه بندي شده اند . فاصله بين نوارها در "gap between bands" مي توانند تنظيم شوند.

 

تنظيمات گزارش

از طريق "report->options " منو قابل دسترس است, شامل دو صفحه است:

مي توانيد يك گزارش را به يكي از پرينترهاي تعريف شده در سيستم متصل كنيد . كه عمل چاپ كردن گزارش بوسيله پرينتر معين شده صورت می کیرد. اين در مواردي مفيد خواهد بود كه پرينترهاي گوناگوني در سيستم موجود است. وقتي كه اسناد يك رنگ دارند مي توانند با پرينتر تك فام مهار شوند. گزينه "default printer " در ليست پرينترها وقتي انتخاب شود گزارش بوسيله هيچ پرينتر ديگري صورت نمی کیرد ، بنابراين عمل چاپ بوسيله پرينتري كه بعنوان پيش فرض تعيين شده است اجرا خواهد شد.همچنين مي توانيد تعداد كپي هاي گزارش را تنظيم كنيد كه آيا ضروري است بترتيب اجرا شوند يا نه؟

مقاديري كه كاربر در اين ديالوگ تنظيم مي كند در پنجره "print" نمايش داده مي شود.در صورت انتخاب پرچم"double pass " ساخت گزارش طی دو مرحله انجام مي شود . در اولين گذر يك گزارش ساخته مي شود و در چند صفحه تقسيم مي شود اما نتيجه هيچ جايي ذخيره نمي شود . در دومين گذر يك تشكل استاندارد با ذخيره كردن نتيجه جاري انجام می پذیرد.

چرا دو گذر ضروري است؟ اين گزينه در حالاتي كه دريك گزارش به مجموع تعداد صفحات توجه مي شود استفاده دارد . تعداد صفحات در اولين گذر محاسبه مي شودکه بوسيله "total pages " قابل دسترس است. اشتباه معمول اينست كه اگر اين عمل براي استفاده تك-گذري گزارش صورت گیرد مقدار صفر را باز مي گرداند.

كاربرد ديگر اين فيلد انجام هر گونه محاسبه در گذر اول و نمايش نتيجه ها در گذر دوم مي باشد . براي مثال در حالتي كه نياز به نمايش مجموع سر فصل گروهها مي باشد . محاسبات چنين اقسامي مربوط به استعمال زبان تركيبي FR مي باشد.

پرچم "print if empty" اجازه ساختن يك گزارش را هنگام عدم وجود اطلاعات مي دهد .اگر اين گزينه غير فعال باشد ، گزارشهاي خالي ساخته نخواهند شد.فيلد "password" تنظيم يك رمز را هنگام باز كردن يك گزارش بازجويي و تحقيق مي كند.(در صورتيكه فعال شود)

كنترلهاي درون صفحه دوم تنظيمات توصيفی گزارش را فعال مي كند.

Page options

مسیر زیر را طی کنید: "file->page setting " منو . اين ديالوگ دو صفحه دارد:

 

صفحه اول، مي توان اندازه و هم ترازي برگه را انتخاب كنيد. در ليست "paper source"  مي توانيد tray پرينتر را براي صفحه اول و بقيه صفحه هاي گزارش انتخاب كنيد.

مي توانيد به تعداد ستونها براي چاپ تركيبي- ستوني گزارش اشاره كنيد.

پرچم"print of previous page " اجازه چاپ صفحات را از آغاز فضاي خالي صفحه قبل مي دهد. اين گزينه در مواقعي مفيد واقع می شود كه الگوي گزارش شامل چندين صفحه يا هنگام چاپ گزارشات مركب باشد

گزينه "mirror options " حاشيه هاي چپ و راست صفحه ها را براي صفحات زوج در طول PREVIEWيا چاپ گزارش گزينش مي كند. گزينه"large height indesign mode" ارتفاع صفحه را چندين مرتبه مي افزايد. اين خصيصه اگر نوارهاي زيادي در صفحه مستقر باشد مفيد خواهد بود. ارتفاع يك صفحه به طور همزمان در طول ساخت گزارش تغيير نخواهد كرد.

 

توليد گزارش

در اين فصل خصيصه هایي از اجزا سازنده اصلي fast report واشيا را مشاهده خواهيم كرد . مثلا "tfrxreport" و "tfrxdbdata " و "tfrx use dataset " و "tfr  "    " " وxmemo view"tfr xband    " . ابتدا چگونگي ساخت گزارشی ساده كه شامل داده هايي از جداول DB است را ياد مي گيريم.

Tfrx report component

اجزا سازنده آن پايه هاي هر گزارش را تشكيل مي دهد. چنين تركيبي مي تواند تنها شامل يك گزارش باشد و اين مؤلفه هر چيز ضروري براي بار گذاري گزارش ، طراحيPREVIEWو چاپ را دارد. اجازه بدهيد مهمترين روشها را مشاهده كنيم:

 

بارگذاري يك فرم گزارش از فايل با نام مشخص

ذخيره فرم جاري گزارش درون فايل با نام مشخص

فراخواني گزارشDESIGNER

اجراي گزارش و نمايش آن درPREVIEW مي باشد.

"show report " تنها شيوه اي است كه ما در اين فصل نياز داريم. تنها پارامتر اين متداست که معين مي كند آيا گزارش قديمي بايد قبل از ساخت نوع جديد آن پاك شود يا خير. اين  پارامتر به طور پيش فرض برابر"true " است.

 

Report objects

يك گزارش خالي مانند يك كاغذ ارائه مي شود. در هر قسمت صفحه كاربر قادر است اشيايي كه مي تواند اطلاعات مختلفي (متن يا گرافيك) مانند تعريف كردن ظاهر گزارش را تخصيص دهد. اجازه بدهيد بطور خلاصه اشيا اسنادي گزارش سريع را كه درون يك مجموعه استاندارد جمع شده است توضيح دهيم:

 

شيء "band " امكان ايجاد ناحيه گزارش كه رفتار معيني خواهد داشت را مي دهد.

شيء "text " يك يا چند خط درون محدوده مستطيلي نمايش مي دهد.

شيء "picture" فايلهاي گرافيكي در فرمتهاي " BMP " و " JPEG " و " ICO" و " WMF" را نمايش مي دهد.

شيء " line" خط افقي يا عمودي را نمايش مي دهد .

شيء " system text " اطلاعات سرويس ( تاريخ – زمان – شماره صفحه و...) را بصورت مجموعه نمايش مي دهد.

شيء " subreport" اجازه درج گزارش اضافي را مي دهد.

دسته اشيا" draw " دلالت بر اشكال هندسي مختلف( خط مورب – بيضي – مستطيل – مثلث و لوزي)

را مي دهد. شيء " chart" اطلاعات درون فرم نمودارهاي مختلف(نمودار دايره اي ، نمودار ستوني و ...)

 را مي دهد.

شيء "richtext" متن را در فرمت (RTF ) نمايش مي دهد.

شيء " Check box" بررسی یا عدم آن را بر عهده دارد

شيء " bar code" اطلاعات درون بار كد را نمايش مي دهد

شيء " OLE" قادر به نمايش شيء با تكنولوژي ole مي باشد.

اشيا اصلي كه بيشتر نياز كار شماست " band" و" text" مي باشد که با امكاناتشان در اين فصل آشنا خواهيد شد.

 

گزارش" Hello world"

با انتخاب " file / new" يك گزارش جديد در دلفي ايجاد مي كنيم.

از palette جزءFASTREPORT " Tfrx report" راکه براي ايجاد اولين گزارشمان نياز است در فرم پروژه گذاشتيم.

گزارش تنها شامل يك نوشته است .به منظور بازگشایی دوبار روي جزء " Tfrx report " كليك كنيد. بعد روي " text" در " objects" در صفحه طراح كليك ومكان نماي موس را روي مكان مورد نياز حركت داده و دوباره كليك كنيد و شيء بدين ترتيب درج شده است.

پنجره ويرايش متن نمايش داده خواهد شد( اگر ظاهر نشد روي شيء دوبار كليك كنيد متن "hello world" را وارد كنيد و سپس دكمه "ok" را كليك كنيد).

گزارش ساخته شده است . براي پيش مشاهده آن "file preview" را از منو انتخاب كنيد يا در "toolbar" دكمه مشابه "preview " را كليك كنيد. پنجره preview با عبارت "Hello,world" ظاهر مي شود .اين گزارش قادر به  چاپ، ذخيره  يا تبديل به يكي از فرمتهاي پشتيباني شده است.

تمامی اين اعمال را در delphi IDE بدون نوشتن خط كد انجام داديم. كاربری که بخواهد يك پروژه شروع كند ، نيازمند افزودن بعضي چيزهاست.

دكمه ای روي فرم پروژه ايجاد کرده و كد روبرو را بنويسد:

  frxReport1.showreport

بدين ترتيب هنگامي كه روي اين دكمه كليك كنيد گزارش ساخته و نمايش داده خواهد شد.

اجازه بدهيد گزارشمان را كمي پيچيده كنيم مثلا متن"Hello,world" با حالت برجسته و پس زمينه زرد و يك چهار چوب نمايش دهيم وتاريخ جاري بعد از متن نمايش داده شود .

بار ديگرFast report را باز كرده و شيء با يك متن به كمك موس انتخاب کنيد . در نوار ابزار "Text" دكمه "Bold"را پيدا كنيد و روي آن كليك كنيد. براي فعال سازي فريم روي "All frame lines" كليك كنيد . با استفاده از دكمه هاي    بعضي خطوط فريم مي تواند نمايش داده شود.كاربر مي تواند رنگ خط، پهنا و شكل آنرا تنظيم كند. دكمه fill color" " را پيدا و رنگ زرد را از ليست انتخاب مي كنيم.

آسان ترين راه نمايش تاريخ ، استفاده از شيء "System variable"است . سپس "system text"  را در پنجره ويرايش انتخاب و "DATE" را از ليست انتخاب مي كنيم.

دكمه "OK" را کلیک کنید و نتيجه را ببينيد.

 

The"text" object

حال مي دانيم چطور يك متن ، يك چهار چوب و پر كردن را نمايش دهيم . يك متن مي تواند بوسيله هر نوع خطي ، هر اندازه و هر شكلي نمايش داده شود . تمام پارامترها به كمك نوار ابزار زير قابل تنظيم هستند:

در اينجا مثالهايي از طرح متن مي باشد:

به عنوان مثال يك شيء متني جديد ايجاد مي كنيم و دو خط درون آنها قرار مي دهيم:

شيء چهارچوب را فعال مي كنيم و تا 9 در 3 سانتيمتر به كمك موس اندازه مي دهيم. مي بينيم كه شيء تنها بصورت خط منفرد نمي تواند نمايش داده شود ، اما به صورت چند خطي امكان دارد. حال پهناي شيء را تا 5 ساتتيمتر كاهش مي دهيم. واضح است كه خطوط طولاني فضايي درون شيء پيدا نمي كنند و بنابراين پيچيده مي شوند. اين رخدادها بخاطر خاصيت شيء "word wrap"مي باشد که در صورت غير فعال بودن خطوط طولاني به سادگي چند تكه مي شوند.

اكنون اجازه دهيد بررسي كنيم چطور هم ترازي متن درون شيء كار مي كند . دكمه هاي تراز كردن در نوار ابزار "Text" مستقر شده اند و اجازه تنظيم عمودي يا افقي هم ترازي متن را مي دهد.

دكمه"Block Align" امكان هم ترازي پاراگراف روي لبه شيء مي دهد. هنگام اجراي اين عمليات گزينه "world wrap" بايد فعال باشد.

تمام متن مي تواند در محدوده 0 تا 360 درجه بچرخد. دكمه  در نوار ابزار "Text" امكان چرخش سريع متن را در 45 ، 90 ، 180 ، 270 درجه مي دهد.اگر بخواهيد متن را با زواياي ديگر بچرخانيد از كنترلر شيء استفاده كنيد. خاصيت Rotation" " زاويه را تنظيم مي كند. هنگاميكه يك شيء را مي چرخانيد، مقادیر بجز 90، 180 و 270 باعث تجاوز كردن از مرزها مي شود( مانند شكل زير) . ارتفاع شيء را افزايش مي دهيم تا متن متناسب با شيء شود.

 

روي خواص "Text" دقت كنید:

Brush style پر كردن شيء

Char spacing فاصله گذاري بين نمادها در مقياس پيكسل

Gapx,Gapy مختصات شروع متن از بالا گوشه چپ

Linespacing فاصله گذاري بين خطوط

Paragraph Gap مختصات شروع اولين خط پاراگراف

HTML tags in the "Text" object

برچسب ها مي توانند درون متن شيء مستقر شوند. برچسب ها بطور پيش فرض غير فعال اند ، براي فعال سازي گزينه "Allow HTML Tags" را درون شيء context منو انتخاب كنيد يا. در اينجا ليستي از برچسب هاي پشتيباني شده آمده است:

 

مثالهاي زير چگونگي استفاده از اين برچسب ها را شرح مي دهد:

Displaying expression with the help of the "text" object

از مهمترين اجزا جامع اين شيء اينست كه تنها يك متن استاتيك را به خوبي عبارات نمايش نمي دهد بلکه همزمان عبارات ميتوانند به همراه يك متن درون شيء مستقر شوند. مثالي ارائه می دهيم تا چگونگي انجام آنرا ببينيم.

 

قبلا، گزارشی ساخته بوديم كه خط "Hello world" چاپ شده و تاريخ جاري را نمايش مي داد. براي اجراي آن می بایست دو چیز را در گزارش تخصيص دهيم . يكي از آنها يك متن خوشامدگويي را شامل مي شودو ديگري شامل متغير سيستم "DATE" است .

مشابه زير برای اجرا نياز به گزاردن يك خط درون شيء داريم:

بدين ترتيب هنگام اجرا مشابه زير را خواهيم داشت:

چه چيزي منجر به چنين نتيجه اي شد ؟ در طول ساخت گزارش fast Report ، با يك عبارت قرار گرفته شده بين براكت روبرو شدید ، محاسبه را انجام داده و مقادير دريافتني درون متن باز گردانده شد . شيء "Text" مي تواند شامل هر تعداد عبارت به همراه يك متن معمولي باشد:مثال] (4+3)*2+1[ . تمامي متغيرها ، توابع و فيلدهاي DB مي توانند در عبارات استفاده شوند که در بخشهاي بعدي خواهيم ديد.

از اين رو fast report بطور خودكار عبارتهاي قرار گرفته بين دو براكت در متن را مورد توجه قرار داده و مي شناسد. اما اگر اشيا خود شامل براكت باشد چه بايد بكنيم؟ براي مثال اگر نياز به نمايش متن مانند زير باشد:

A[1]:=10;                                                                                                              

كه fast report [1] را يك عبارت ديده و مانند زير نمايش مي دهد:

a1:=10;                                                                                                                   

يكي از راههاي جلوگيري  چنين وضعيتي غير فعال كردن عبارت است. تنها در منوي context خاصيت "Allow Expriessions" را غير فعال كنيد بنابراين تمام عبارات درون متن ناديده پنداشته مي شوند.fast report درست چيزي را كه ما نياز داريم نشان مي دهد:

A[1]:=10                                                                                                                   

بعضي اوقات نياز به همراهي عبارت و متن درون براكت مي شود ، براي مثال                                                       ar] a[1]:=[myv

                                                   

غير فعال كردن عبارت امكان نمايش براكت ها در جاي مورد نظر را مي دهد، اما دستكاري عبارت را هم غير فعال مي كند . در اين حالت  fast report امكان ايجاد علائم ديگر و designating عبارت را مي دهد.خاصيت شيء "Expression Delimiters" كه متناسب با "[, ]" است جوابگوي اين نياز است.در اين حالت كاربر مي تواند از <> براي عبارات بجاي [ ] استفاده كند .

A[1]:=<myvar%>                                                                                                    

ارزش "<,>"  بايد در خاصيت "Expression Del تنظيم شود همانطور كه مي بينيد علامت (, ) بين علامت باز و بسته جدايي انداخته است . محدوديتي كه وجود دارد اينست كه علامت باز و بسته نمي توانند يكسان باشند پس "% و % " كار نخواهد كرد . براي نمونه "<%,%>" مثال ما اينگونه نشان داده مي شود :

a[1]:=<%myvar%>

bands in fast report

نوارها براي گروه بندي منطقي هنگام جاي گذاري شيء بكار مي روند مانند "page header" كه شيء داده شده در بالاي هر صفحه گزارش نمايش داده مي شود . به همين طريق  نوار "page footer" در پايين هر صفحه با تمام اشيا تخصيص داده شده در آن نمايش داده مي شود.

اين موضوع را با مثالی نشان داديم.گزارشی ايجاد مي كنيم كه شامل جمله "hello"د در بالا ، تاريخ روز سمت راست و يك شماره صفحه قسمت پايين سمت راست باشد.

طراح fast report را باز كنيد و روي "New report"نوار ابزار كليك كنيد. يك الگوي گزارش خواهيد ديد كه شامل سه نوار است : "report title" , "master data" , " page footer" . اجازه بدهيد كه نوار دوم را با كليد delete حذف كنيم و يك  نوار "page header"با زدن دكمه "Add band" , "page header " را از ليست انتخاب مي كنيم . مي بينيم كه يك نوار جديد به صفحه اضافه شده است. طراح fast reportبطور خودكار نوارها را در صفحه مستقر كرده ، در نتيجه header band بالاي صفحه data band در وسط و footer band پايين صفحه است.

حال به تخصيص اشيا مي پردازيم . شيء "system text" را در نوار "page header" جاي گذاري و "system variable" را در ويرايشگر  شيء text را كه شامل متن "hello" است ، در نوار "Report title" جاي گذاري مي كنيم  ( بخاطر داريد كه تاريخ به كمك شيءtext  با تايپ "[DATE]" در ويرايشگر نمايش داده مي شود ). بعلاوه شيء مورد نيازي كه شماره صفحه را نمايش مي دهددر نوار " page footer" قرار گرفته است .

اگر گزارش اجرا شود مي بينيد كه اشيا گزارش پايان يافته در مكان هاي موردنظر جاي گرفته اند.

بسته به نوع نوار مي توان اشيا را در بالا يا پايين صفحه ، در اول يا آخرين صفحه قرار داد.

نوارهاي پايه كه در اكثر گزارشات مورد نيازند به قرار زيرمی باشند:

نوار "page header" كه در بالاترين قسمت هر صفحه نمايش داده مي شود.

نوار "page footer" كه در پايين ترين قسمت هر صفحه نمايش داده مي شود.

نوار "Report title" كه در بالاي صفحه اما زير نوار "page header"قرار مي گيرد.

نوار "Report summary" در فضاي سفيد پايان يك گزارش نمايش داده مي شود.

                                                                        Data bands

قصد داریم امکان چاپ data از جداول db را بررسی کنیم.در این حالت به مجموعه ای از خطوط(رکوردها)که هر کدام دارای تعداد ستون مشخص است(فیلدها) جدول گوئیم.برای چاپ این نوع اطلاعات fastreport از نوع خاص از باندها بهره می گیرد(databands).

برای چاپ تمام یا بخشی از جدول لازم است تا باندها به گزارش افزوده شده ,متصل به جدول گشته واشیا بهمراه فیلدهایی که کاربرقصد چاپ شان را دارد,جای داده شوند.

هنگام ساخت باندهای گزارش عملیات چاپ مکررا باید صورت پذیرد.در صورت عدم وجودفضا صفحه جدیدی بوجود می آید.

TfrxDBDataSet component

اتصال دهنده جزء TfrxDBDataSetدرجهت اتصال جدول(یا هر منبع داده ای دیگری)بکارگرفته می شود.این جزء نقش میانجی وهدایت گر بین منبع داده وهستهء fastreport را ایفا می کند,واین امکان به هستهء fastreport داده میشود تا مستقل از هر منبعی کار کند.fastreportقادر به کار همزبان با اشیاء "BDE","IB"وهر منبع دیگری بدون اتصال با DB می باشد مثلا یک آرایه یا یک فایل.

 

جزء TfrxDBDataSet برای کار با منبع dataوTDataSet(که شاملBDE,ADO,IBX هستند)آماده شده است. جزء TfrxIBODataSetبه منظور کار با دیگر منابع Data (فایلهاوآرایه ها)منظور گردیده است.

برای اتصال "TfrxDBDataSET"با منبع data باید خاصیت "DAtaSet" که بطور مستقیم با جدول در ارتباط است یا خاصیت "DataSource" که با جزء"TdataSOurce" متصل است,تنظیم شود(این دو روش معادلند).حال باید منابع "Data" بوضوح در گزارش مشخص شوند.برای این کار از منو Report->Data… را برگزینیدو منابعی که نیاز دارید را از پنجره باز شده انتخاب کنید.

 

"CustomerList"Report   

گزارش بعدی را که شامل جدول دیتای DBو لیستی از مشتری های یک شرکت است در محیط دلفی آغاز می کنیم.

TTableرا با بهره گیری از DBDEMOS database روی فرم قرار داده وخواص آنرا تنظیم کنید:

بمنظور کار با جدول در fastreport جزء "TfrxDBDataSet" رااضافه و تنظیم کنید:

DataSet=Table1

حال "TfrxReport" را بفرم افزوده وdesigner را باز کرده,روی"New report" کلیک می کنیم تا صفحه ای خالی با 3 باند "Reprot title","Master data","page footer" ایجاد شود.

برای مشاهده جدولمان در fastreportمسیر "Report->Data…" را طی کنیدوجدول را برگزینید.پس از بستن پنجره,جدول و فیلدهای آن درون پنجره "Data" قابل رویت اند.

شیء  "Text" را با" list of clients"در باند "Report title" قرار داده و باند "Master data" رابه منبعمان با دوبارکلیک روی باند

 متصل می کنیم.

حال 4شیءدال بر شماره مشتری ونام وتلفن و فاکس است را روی باند جای می دهیم.شیء"Text" را روی باند گذاشته و به آن "[frxDBDataSet1."CustNo"]" ,وارد کنید.این راه بدترین حالت است چراکه بطور دستی وارد می گردد.روش دیگر بکارگیری editorشیء Text است ,برای قراردادن فیلد روی عنصری که مایلید درج شود در پنجره بازشده دوبارکلیک کرده و ok را بزنید.حال فیلد درج شده در متن قابل مشاهده است.

روش 2 در درج فیلد DBدر گزارش مشابه آنچه در محیط دلفی صورت گرفت می باشد:

دومین شی ء را بدون اضافه کردن چیزی دیگردر editorقرار دهیدو مانند زیر تنظیم کنید:

از آنجايي كه هر دو خواص بعنوان يك ليست وجود دارند ما تنها نياز به انتخاب مقادير مورد نياز به كمك موس هستيم.

سومين راه كشيدن و ول كردن فيلد مورد نياز با موس از سرويس پنجره "Data" درون گزارش است. اين راحتترين راه است . فيلد " phone" را به كمك موس بردارد و درون نوار بگذارد. تنها چيزي كه بايد در اين حالت صورت گيرد غيرفعال كردن پرچم "create header" از پايين پنجره "Data" است ( وگرنه ما يك شيء كه شامل عنوان فيلد بعلاوه فيلد مورد نياز است ايجاد خواهيم كرد)

چهارمين راه از قرار زير است:

يك شيء متن خالي روي نوار قرار دهيد و مكان نما را به طرف شيء حركت دهيد. در سمت راست شيء عكسي از دكمه با بردار به سمت پايين مي بينيد. اين ليست باز فيلدهاي DB است دكمه را كليك كنيد و فيلد"FAX" را در ليست انتخاب كنيد. از اين جزء وقتي كه نوار متصل به داده (Data) باشد مي توانيد استفاده كنيد.

بدين ترتيب گزارش ما پايان يافته است:

 

روي دكمه "Preview" كليك كنيد و ببينيد چه داريم:

Displaying DB fields with the help of the "Text" object

همانطور كه مي بينيد text object  علاوه بز نمايش گزاردن متن و عبارت ها قادر به نمايش اطلاعات از DB است. از اين گذشته اين كار را به دو روش مي توان انجام داد: چه قرار دادن يك پيوند (Link) به فيلدDB درون متن شيء يا اتصال يك شيء به فيلد مورد نياز با كمك خواص "Data field","Data set" . اولين راه برای  مواقعي است كه امكان نمايش (هردوي) محتويات فيلدها و هر عبارت توضيحي    و شيء مشابه باشد. مثال:

 

همانطور كه مي بينيد دستور خاصي براي ارتباط با فيلد DB بكار رفته است:

Data-set-name."field-name".                                                                                  

نام فيلد مي تواند شامل فاصله باشد . فاصله بين نمادهاي "quote","point" مجاز نمي باشد.نه تنها يك پيوند (link) به فيلد ميتواند درون متن object  قرار گيرد بلكه مي توانيم عملكردهاي محاسباتي مختلفي را به فيلد اضافه كرد:

توجه كنيد كه چطور انواع براكتها استفاده شده اند. بخاطر داشته باشيد كه براكت هاي مربعي بطور پيش فرض براي محدود كردن عبارات استفاده شده اند كه درون object text را شامل مي شوند. در صورت نياز براكت هاي مربعي مي توانند براي يك جفت باز / بسته جانشين شوند. براكت هاي زاويه (<) درون عبارات براي متغيرهاي fast report و فيلدهاي DB مورد استفاده قرار مي گيرند. بصورت منطقي بايد بنويسيم:

Never theless تا زماني كه fast report امكان عدم براكتهاي زاويه اي را بدهد هر دو اين نشان گذاري ها صحيح اند ، در مواقعي كه يك عبارت شامل يك متغير يا يك فيلد DB باشد. هر چند اگر يك عبارت شامل اعضاي بسياري باشد براكتها لازمند:

اين يكي از تمايزات مهم نسخه هاي اوليه Fast report است، جايي كه براكتهاي مربعي بيشترين استفاده را داشته اند.( بجاي نوع زاويه اي ) . این حقيقت ساخته شد تا تمامي عبارات بوسيله زبان اسكريپت مورد استفاده قرار گيرند جايي كه براكتهاي مربعي براي تنظيم يا باز نمودن آرايه ها استفاده شده اند.

 

Aliases                                                                                                                       

در گزارش قبلي از منبع Data با نام "frx DB Data Set1" و فيلدهاي "casNO","company","Fax","phone" استفاده كرديم. بر طبق آن بايد چيزي مشابه "[frxDBDataset1."casNO"]" را درون گزارش قرار دهيم . آيا اين بطور كامل واضح بنظر مي رسد؟ نه، اينطور نيست. كسي مي خواهد منبع Data و فيلد را تغيير نام دهد و آنرا محترمانه "Number", " Our dients" بنامد. هر چند که"frxDBDataset1" يك نام جزء است كه هرگز فاصله ها را پشتيباني نمي كند و "CustNO" يك نام فيلد است كه بطور مستقيم ( بدون بازسازي پايگاه داده ها ) نمي تواند تغيير كند.

كاربرمي تواند از نامهاي مستعار در چنين وضعيتي بهره بگيرد. منابع Data و فيلد نامهاي مستعار و ثانويه كه براحتي اصلاح شده اند را متصرف مي شوند (البته نامهاي اصلي تغيير نكرده اند) . اگر يك نام مستعار داشت ، اين نام جانشين در fast report استفاده مي شود.

در نرم افزار fast report تغيير نام منبع داده ها و زير شاخه هاي آن خيلي آسان است ، كه اين از محيط نرم افزار Delphi برگرفته شده است. براي باز كردن ويرايشگرAliase بر روي "TfrxDBDataset" دوبار كليك كنيد . مي توانيد نام منبع داده و همچنين نام زير شاخه هاي آنرا تغيير دهيد و انتخاب زير شاخه اي كه ممكن است براي گزارش به آن نياز داشته باشيد.در شكل اين تغيير نام انجام شده است.

 توجه كنيد كه تغيير نام داده ها را مي توان بدون استفاده از ويرايشگرAliase انجام داد. براي اين كار خاصيت "Username" را از جزء "TfrxDBDataset" را تغيير دهيد.حال نياز به تغيير گزارش داريم. پس از تغيير نام زير شاخه ها براي اصلاح كردن نام زير شاخه ها   ساده ترين راه استفاده از راه چهارم است كه در بخش "list of client report" شرح داده شد. موس را بر روي شيء text قرار داده تا دكمه اي در سمت راست اين شيء ظاهر شود. بر روي دكمه كليك كنيد و از ليست موجود زير شاخه ي مورد نظر خود را انتخاب كنيد.

بهتر است تغيير نام داده ها در همان ابتدا يعني قبل از ساختن يك گزارش انجام شود. اين عمل به اجتناب از تاخير در تغيير نام داده ها در گزارش كمك مي كند.

 

متغير ها:

علاوه بر استفاده هاي تغيير نامها ، راه ديگري نيز وجود دارد كه اجازه مي دهد نامهاي قابل فهم تري براي DBfields گذاشت.هر كس مي تواند نام يك DBfields را به خوبي مختصات آن با متغيرها مقايسه كند. براي كار كردن با متغيرها درFast reportاز منوReport/variable را انتخاب و سپس در نوار ابزار بر روي متغيرها كليك كنيد.

ليست متغيرها در Fast Report داراي ساخت دو مرحله اي است . مرحله اول شامل طبقات و مرحله دوم شامل خود متغيرهاست. دسته بندي متغيرها براي راحتی هنگاميكه ليست متغيرها طولاني است طراحي شده است. هر ليست حداقل بايد شامل يك طبقه باشد به اين معني كه متغيرها نمي توانند در مرحله بالاتر قرار گيرند. از اين گذشته ، طبقات براي دسته بندي متغيرهاي منطقي مورد نياز هستند. به اين دليل هنگامي كه براي يك متغير نام گذاري مي كنيد فراموش نكنيد كه آن نام يكتا باشد. اين غير ممكن است كه در طبقات مختلف دو متغير يكسان را ساخت.

بگذاريد با طرح يك مثال استفاده متغير ها را توضيح دهيم. فرض كنيد دو منبع داده داريم اولي "frxDBDataset7" با زير شاخه هاي "castNo","Name" و دومي "frxDBDataset2" با زير شاخه هاي "orderNo","Data" مي باشند. ما مي توانيم متغير هاي ذيل را با زير شاخه ها مقايسه كنيم.

 

جايي كه "clients","order" دو طبقه هستند ويرايشگر متغيرها را باز كرده و يك ساختار به كمك دكمه هاي "New category" (طبقه جديد) و "New varable" (متغير جديد) و "edit" (ويرايش) بسازيم. براي مقايسه متغيرها با DBfield بگذاريد كه يك متغير را انتخاب كرده و بر روي DBfield مورد نياز در قسمت راست پنجره دو بار كليك كنيد . پيوند DBfield به قسمت زير پنجره حركت مي كند . نوشته هاي در قسمت زير پنجره ممكن است مقدار متغيرها باشد . مي توان بصورت دستي آنها را ويرايش كرد. طبقه ها نبايد با هيچ چيزي مقايسه شوند.

بعد از اينكه ليست متغيرها ساخته شد، ويرايشگر متغيرها راببنديد. حال به وارد كردن متغيرها در گزارشمان نياز داريم . در مقابل وارد كردن "DBfield" اينجا تعداد كمتري متغير وجود دارد . مي توانيم يا كشيدن يك متغير از پنجره سرويس داده به مكان مورد نياز در گزارش, يك متغير را در شيء متني بصورت دستي وارد كنيم.

شيء بعدي براي بررسي كردن شيء تصوير است . اين شيء معمولا در گزارشها مورد استفاده قرار مي گيرد. با كمك اين شيء مي توانيد مارك شركت، يك تصوير از كاركنان و يا اطلاعات گرافيكي ديگر را وارد نمائيد . شيء تصوير توانايي اين را دارد كه تصاوير گرافيكي به فرمتهاي :"EMF","BMP","JPEG","JCO","WMF" را نمايش دهد.

يك صفحه خالي گزارش بسازيد و شيء تصوير را بر روي ليست گزارش قرار دهيد . شما مي توانيد يك تصوير را به ويرايشگر اشيا اضافه كنيد و يا تصوير موجود در آنرا پاك كنيد.( اگربصورت اتوماتيك باز نشد ، بر روي شيء دو بار كليك كنيد) . تصوير مورد نياز خود را روي گزارش قرار دهيد و كليد OK را بزنيد.

 

در منوي وابسته اشيا موارد انتخابي وجود دارد:

 سايز اتوماتيك

- كشيده

- مركز

- نگهداشتن نسبت چهره

 

اگر حالت سايز اتوماتيك فعال است  مي توانيم ببينيم شيء دچار تغيير اندازه مي شود.

حالت انتخابي "Disable b default" درست و در واقع در بيشتر موارد حالت نسبتا راحتي است . حالت انتخابي كشيده "enabled b default" : اين حالت تصاوير داخل يك شيء را مي كشد. با موس مي توان در اندازه ي اشياتغییر ایجاد كرد. اگر اين حالت غير فعال شود، تصوير در اندازه واقعي خود نمايش داده مي شود. اين حالت با سايز اتوماتيك فرق مي كند. زيرا ابعاد شيء با اندازه تصوير تطبيق نمي كند. به اين معني كه شيء مي تواند بزرگتر يا كوچكتر از تصوير باشد. حالت انتخابي مركز اجازه مي دهد يك تصوير را داخل شيء رديف كرد. حالت انتخابي نگه داشتن نسبت چهره پيش فرض فعال ما است و اجازه نمي دهد نسبت تصوير از شيء بيافتد ، وقتي كه اندازه هاي شيء تغيير مي كند. اين حالت انتخابي فقط به همراه حالت كشيده عمل مي كند.

گزارش به همراه تصاويرشيء تصوير به خوبي بسياري از اشيا در fast report مي تواند داده ها را از DB نمايش دهد. ارتباط ميان يك شيء با يك "DBfield" مورد نياز با كمك خصوصيات "قرار دادن داده" و " زير شاخه هاي داده" در بازرسي شيء فهميده مي شود. در مقابل شيء "text" تنها راه ارتباط  يك شيء با داده ميباشد. بگذاريد با يك گزارش اين را ثابت كنيم .براي انجام اين كار ما دو باره به پايگاه داده شرح داده شده ي "DBDEMOS" نيازمنديم كه در نرم افزار دلفي می باشد. پروژه جدید در نرم افزار دلفي درست كرده و سپس جزء TTable" را بر روي نرم افزار قرار دهيم وتنظيم كنيد:

براي كاربا جدول از fast report  ، يك جزء "TTfrxDBDataset" اضافه کرده و تنظيم كنيد:

 در نهايت ، جزء "TfrxReport" را روي فرم قرارمی دهيم طراح را باز كنيد و روي دكمه " گزارش بدهيد" با موس كليك كنيد بنابراين نرم افزار fast report يك الگوي خالي ايجاد مي كتد . جدول را در پنجره داده گزارش به گزارش مرتبط می كنيم. شروع به ساختن يك فرم گزارش كنيد.يك شيء متن را با متن fish روي نوار عنوان گزارش قرار دهيد. نوار داده هاي درجه يك را به منبع داده ها وصل كنيد. ( روي نوار دو بار كليك كرده و گزينه Bio را از ليست انتخاب كنيد) ارتفاع نوار را تا 3 سانتي متر افزايش داده تا تصوير بتواند فضايي را در آن پيدا كند. شيء text  را در نوار قرار داده و آنرا با استفاده از يكي از روشهاي مشروح بالا به زير شاخه ي common named وصل كنيد. براي انجام اينكار مشخصات را در قسمت بازرس شيء تنظيم كنيد.

 در نظر داشته باشيد كه هر دوي اين مشخصات از نوع ليست هستند و به همين دليل است كه شخص مي تواند متغير هاي مورد نياز را به كمك موس انتخاب كند. براي پيدا كردن جايي براي تصوير شيء را تا 4*5/2 سانتي متر بكشيد.

 

نمايش متنهاي چند خطي

به مثال قبل كه در مورد ماهي ها بود برگرديم. در جدول "biolife.db" شاخه ي note وجود دارد كه جزئيات مشخصات هر ماهي را شامل مي شود. گزارشمان را با اضافه كردن اين شاخه به روزمی كنيم . در نگاه اول همه چيز ساده بنظر مي رسد.شيء text را بوسيله داده ها به نوار اضافه كنيد، آنرا به شاخه ي note وصل كرده و اندازه شيء را بصورت 5/2*8 سانتي متر تنظيم كنيد. اگر گزارش را اجرا كنيم خواهيم ديد آنچه را كه دقيقا توقع داريم دريافت نمي كنيم.

اما برنامه ي fast report چيزي را انجام داده كه از آن خواسته شده است . شاخه note متن چند خطي را در بر گرفته كه اندازه هر كدام ممكن است فرق كند. در همين زمان شيء متن كه اطلاعاتي را از همين شاخه نشان مي دهد اندازه ها را ثابت كرده, به همين دليل بعضي از خطها نتوانستند اشيا را جاگذاري كنند و قطع شدند . چه بايد كرد؟

بطور قطع اندازه هاي ديگر پنجره مي توانند معين شوند (in reserve) يا اندازه كلمات متن مي تواند كاهش پيدا كند .اين امر ممكن است به استفاده غيراقتصادي فضاي صفحه منجر شود. به اين علت كه بعضي از ماهيها داراي توصيفات بلند هستند در صورتيكه برخي ديگر داراي توصيفات كوتاه هستند. در برنامه ي fast report منابعي وجود دارد كه اين مشكل را حل مي كند. اين عمل توانايي نوار را به حالت اتوماتيكي ربط مي دهد كه مي توان براي پيدا كردن فضايي براي اشيا مشمول, ارتفاعش را تنظيم كند. براي انجام ابن عمل فقط مشخصه "كشيده " را فعال كنيم. اگر چه اين تمام امر نيست براي اينكه شيء كه مشخصات طولاني تري دارد بايد بتواند به خودي خود كشيده شود. شيء متن توانايي سازماندهي اش را دارد. اين شيء مي تواند به منظور پيدا كردن فضايي براي تمام متني كه شامل مي شود به طور اتوماتيك ارتفاع و پهنايش را تنظيم كند. نيز مي توان با استفاده از مشخصه هاي " پهناي اتوماتيك" و " حالت كشيده" اين كار را انجام داد. مشخصه ي پهناي اتوماتيك پهناي شيء را به طريقي انتخاب مي كند كه به تمام خطها اين امكان را بدهد تا فضايي در اختيار داشته باشند بدون اينكه كلمات از هم جدا شوند. اين حالت وقتي مناسب است كه شيء بصورت متني تك خطي است. مشخصه ي " كشيده" اين امكان را فراهم مي كند تا ارتفاع شيء را به طريقي كه براي تمام متن فضايي وجود داشته باشد انتخاب كند . پهناي شيء در اين هنگام تغييري نمي كند. اين مشخصه امكان ليست كردن را بوجود مي آورد و شما مي توانيد يكي از حالات را در بازرس شيء انتخاب كنيد.

Smdontstvetch : با كوتاه كردن و با غفلت يك شيء را نكشيد.

Smat………… : شيء را تا جايي امتداد دهيد كه پايين آن با پايين نوار خطي منطبق شود( جايي كه شيء قرار دارد)

در حال حاضر ما به مشخصه ي امتداد دادن شيء متني علاقه مند يم.

مشخصه ي نوار كشيده را فعال كنيد . گزارش را شروع كرده و مطمئن شويد كه هر چيزي بطور صحيح در حال اجرا است.

همانطور كه مشاهده مي كنيد وقتي گزارش ساخته مي شود برنامه ي fast report اشيا را با داده ها پر مي كند ، آنها را با گزينه ي نوار كشيدن امتداد مي دهد . اگر گزينه ي نوار كشيدن غير فعال باشد، تنظيم ارتفاع انجام نمي شود و نوار با توجه به ارتفاع تعيين شده در طرح نمايش داده مي شود.

اگرسعي كنيم كه اين گزينه را غير فعال كنيم ديده خواهد شد كه اين اشيا با متنهاي بلندترامتداد داده شده اند با اينكه نوارها اينطور نيستند. وقتي كه نوار بعدي درست بلافاصله بعد از نوار قبلي نمايش داده مي شود متن ها روي هم قرار مي گيرند.

جدا كردن داده ها

بياييد به حالت شگفت انگيز گزارش ماهيها توجه كنيم : فضاهاي خالي زيادي در پايين صفحه وجود دارد . اين اتفاق چرا رخ داده است؟ وقتي كه گزارش ساخته مي شود برنامه ي fast report فضاهاي سفيد صفحه را با نوارها پر مي كند . بعد از نمايش هر نوار موقعيت اخير بطرف پايين انتقال داده مي شود . وقتي كه برنامه ي fast report متوجه مي شود كه ديگر فضاي كافي براي نمايش نوار بعدي وجود ندارد (وقتي كه ارتفاع آن از فضاي سفيد باقيمانده در صفحه بيشتر است) در اين هنگام صفحه ي جديدي شكل گرفته و نمايش بقيه نوار در آنجا ادامه پيدا مي كند. ادامه اين عمل تا جايي كه هنوز نوشته هايي در تنظيم داده ها وجود دارند انجام مي شود.

گزارش ما شيء را با متني طولاني شامل مي شود و به همين دليل است كه ارتفاع نوار تا حدودي زياد است . از اين گذشته اگر يك نوار بلند جاي خالي در صفحه پيدا نكند به صفحه بعدي انتقال پيدا كرده و فضاي خالي زياد بلااستفاده اي در انتهاي صفحه اول باقي مي ماند. اين امر در شكل زير نمايش داده شده است.

براي استفاده معقولانه از صفحه تنها كاري كه ما بايد انجام دهيم اين است كه گزينه ي "Allow sprit…" (اجازه دهنده ي جدا كردن) نوار داده هاي درجه 1 را فعال كنيد. در اين صورت مشاهده مي كنيد كه فضاي خالي كمتري در انتهاي صفحه ي گزارش شده وجود خواهد داشت

 

نوار جدا كننده چطور كار مي كند؟

اشيايي در برنامه fast report وجود دارند كه اين الگو را پشتيباني ميكنند. اين اشيا عبارتند از: "text", line","richedit"  اين اشيا مي توانند جدا شوند در صورتيكه اشيا ديگر اين توانايي را ندارند وقتي كه برنامه ي fast report در راستاي اجراي برنامه ي جدا كننده قرار مي گيرد اين كار را به روش زير انجام مي دهد. اشيا جدا نشدني را براي پيدا كردن فضايي در صفحه خالي نمايش مي دهد. بخشي از آنها بصورت اشيا جدا شده نمايش داده مي شوند ( اشيا متني) به طريقي نمايش داده مي شوند كه تمام خطوط فضايي را در شيء پيدا كنند.

يك صفحه جديد پيدا كرده و نمايش اشيا را ادامه مي دهد. اگر يك شيء جدا نشدني براي خود فضايي در صفحه پيدا نكند به صفحه بعد منتقل مي شود. در همين زمان تمام اشيایی كه زير آن قرار گرفته اند با توجه به جابجايي انتقال پيدا مي كنند. اين فرايند تا زماني كه تمام اشيا نواري نمايش داده شوند ادامه دارد. مراحل انجام فرايند جدا كننده با نكاهي بر تصاوير زير روشن تر مي گردد.

يادآوري شود كه مراحل فرايند جدا شونده به طور 100% چگونگي گزارش دريافتي را ميسر نمي كند به همين دليل شما بايد اين گزينه را هنگامي كه اشيا در نوار جدا كننده به صورت پيچيده گروه بندي شده اند و به علاوه سايز اندازه ي كلمات آنها متفاوت است با دقت به كار ببريد:

 

Text wrap of objects

براي طراحي گزارش در بعضي موارد اين امر ضرورت پيدا مي كند كه يك text wrap را بسازيد ( اغلب هنگامي كه مي خواهيم تصاويري را ايجاد كنيم. بياييد اين طرح fast report با مثال ماهيها را نشان دهيم. بياييد ابتدا يك شيء متني ديگر به گزارشمان اضافه كرده و سپس اشيا را همانگونه كه در تصوير زير نشان داده شده اند مرتب كنيد.

نشان داده در تصوير زير :

ما كشيدن اشياbio","notes"غير فعال خواهيم كرد . در عوض اين خاصيت را براي شيء زير فعال مي كنيم. براي ايجاد متن blend از اشيا notes  bio خاصيت flowto در شي notes  "bio"را ظيم كنيد . اين خاصيت تنظيم شده در بازرس شيء و از نوع "dropping list" است. نام شيء زير بايستي از اين ليست انتخاب شود. نتيجه در تصوير زير نشان داده مي شود:

توجه: شيء اصلي بايستي قبل از اضافه كردن چيزي كه به آن لينك مي شود به گزارش اضافه شود. در غير اين صورت مخفي سازي متن ممكن است نادرست صورت گيرد. اگر گزارش شما صحيح عمل نكند، شيء لينك شده را انتخاب كنيد و سپس آن را به جلو با مسير edite-> bbring to forefrowt انتقال دهيد

نمايش داده در شكل جدول

گاهي اوقات ضروري است كه يك گزارش را در يك جدول با قاب آن نمايش دهيم. يك مثال اين نوع گزارش مي تواند يك ليست قيمت باشد. براي ساخت چنين گزارشي در fast report ، كاربر تنها لازم است كه توابع قاب گذاري براي اشيايي كه در نوار data قرار دارند, فعال كند حال بياييد انواع مختلف قاب ها را با يك نمونه آزمايشي گزارش نمايش دهيم. يك پروژه جدیدلفي ايجاد نماييد. جزء Ttable را در فرم قرار دهيد و سپس خواص آن را اينطور تغيير دهيد:

DatabaseName=DBDEMOE

TableName=Biolife.db

 

جزء TfrxDBDataset را براي اينكه قادر باشيم با جدول fast report كار كنيم اضافه كنيد و سپس خواص آنرا تنظيم كنيد:

  Data set=Table1

UserName=Bio                                  

 

اشيا را روي نوار خط به خط قرار دهيد و سپس ارتفاع نوار را حداقل كنيد. اولين و آسان ترين نوع جدول ، جدولي با قاب كامل است. براي

انجام آن بايستي تمام خطوط قاب را در تمام اشيا فعال كرد.

نوع ديگر قاب گذاري مي تواند خطوط تنها افقي يا خطوط تنها عمودي را نمايش دهد اين نوع قاب گذاري دقيقا به همان روش انجام مي گيرد. قابهاي افقي يا عمودي مي تواند در اشيا فعال شوند.

در نهايت براي ساختن تنها قاب خارجي ، گزارش لازم است كمي تغيير كند:

خطوط قاب را براي اشيا در طول كناره هاي نوار داده فعال كرديم در نتيجه گزارش بصورت زير به نظر مي رسد:

تمام مثالهاي مذكور شامل نوارها بوده و اندازه هاي ثابتي را شامل مي شد. اما چگونه مي توان يك جدول را در موقعيتي كه نوارها كشيده شده اند نمايش داد ؟ آنرا با مثال زير توضيح می دهیم:

به گزارش يك فيبر جديد اضافه كنيد ( يك متن چند خطي از Bio notes ) همان طور كه مي دانيد هم براي اين شيء هم براي نوار ، همانجا كه شيء قرار گرفته خاصيت "stretch" بايستي فعال شود. در اين مثال ارتفاع نوار بسته به اندازه متن درون شيء "text" انتخاب شده است. بنابراين يك گزارش بصورت زير دريافت خواهيم كرد:

از آنچه ما نياز داريم ين كمي متفاوت است. يكي بايد قابهاي اشيا همسايه را بر گزيند تا بتواند آنرا بخوبي بكشد. Fast report  اجازه مي دهد كه مشكل براحتي حل شود.كافي است گزارش strech down word را براي تمام اشيايي كه بايد كشيده شوند فعال كنيد. بنابراين fast report  ابتدا حداكثر ارتفاع نوار را اندازه مي گيرد. سپس اشيا را تا پايين لبه ي نوار با گزينه ي فعال شده مي كشد . با توجه به اين امر كه قابهاي شيء با يكديگر به همراه شيء كشيده مي شوند، در ظاهر گزارش تغييرات ايجاد مي شود.

 

برچسب هاي پرينت

در مقابل گزارش هاي جدولي ، داده ها در گزارش ها مانند label يكي پشت ديگري قرار دارند. بياييد امتحان كنيم مثالي از اين گزارش ها را كه داده اي درباره ماهيها نمايش مي دهد. گزارش ارائه شده در شكل يك برچسب و ساختار زير را دارد:

با اجراي اين گزارش مطالب زير را دريافت مي كنيم:

همانطور كه مي ينيد، فضاي خالي زيادي در قسمت راست صفحه قرار دارد . براي پركردن تمام صفحه ، تعداد ستونها ، جايي كه داده ها نمايش داده مي شوند، ميتواند در گزارش تنظيم شود.

 

تنظيمات صفحه

بايستي روي فضاي سفيد صفحه دابل كليك كرده يا آيتم منو file page/parameters را فعال كرد.

در اين ميانبر مي توان پارامترهاي ستون مانند تعداد ستون ، عرض آن و محل آنها را تنظيم كرد. در نمونه ها كافي است مشخص كنيد :

number=2

fast report تمام پارامترهاي باقيمانده را بطور اتوماتيك تنظيم مي كند. قاب ستون در طراح خط باريك عمودي نمايش داده مي شود.

 در آن صورت چاپ به صورت زير انجام خواهد گرفت. Fast report   نوار first level data  را به بلندي فضاي سفيد صفحه نشان خواهد داد . بعد از آن يك ستون جديد در يك صفحه متفاوت شكل مي گيرد ( در مقابل گزارشهاي ساده كه در آن يك صفحه جديد ايجاد مي شود در نمونه ها) و نمايش نوار در بالا ادامه خواهد داشت.

تمام اشيا مطابق عرض ستون.يكي به راست جابجا شده اند,اين ادامه خواهد داشت تا زماني كه تمام ستونها نمايش داده شوند. بعد از آن fast reportيك صفحه جديد ايجاد مي كند و نمايش داده ها را از اولين ستون ادامه مي دهد.

 

گزارش ما با دو ستون به صورت زير به نظر مي رسد:

خاصيت "columns" و قابل دسترس در تمام نوار داده ها ، راه ديگر تنظيم تعداد ستونهاست. اين خاصيت اجازه مي دهد تعداد ستونها را براي يك نوار بخصوص و نه براي تمام صفحه ( آنگونه كه در مثال قبلي بود) بنابراين قوانين نمايش داده نخواهد بود " از بالا به پايين، سپس از چپ به راست" بلكه "از چپ به راست ، سپس از بالا به پايين" بياييد ستونها را در صفحه نمايش دهيم ( تنظيم كنيدcolumns number=1  ) و سپس "2" در گزارش نوار "columns" وارد كنيد. fast report قابهاي ستون را به صورت خطوط نقطه چين نمايش مي دهد. ابعاد ستون را با تغيير خاصيت "columns width" بدست می آوریم:

گزارش ساخته شده به اين روش از قبلي متفاوت خواهد بود. فقط با دستور از چپ به راست ، سپس از بالا به پايين نمايش داده مي شود.

 

نوارهايchild

اين نمونه را امتحان كنيم وقتي كه يكي از خطوط در گزارش نوع label ممكن است اندازه متفاوتي داشته باشد. با استفاده از مثال براي شبيه سازي اين موقعيت بياييد عرض شيء "Bio","common name" را به 5/2 سانتيمتر كاهش دهيم و گزينه "stretch"را براي آن فعال سازيم. همچنين در نوار "first level data" كشيدن را فعال سازيم. كليه خطوط قابها را در تمام اشيا به صورتي كه قوانين عمل كشيدن واضح تر شود فعال سازيد. ما گزارشي به صورت زير دريافت خواهيم كرد:

مي بينيد اولين نمونه شيء شامل يك متن بلندتر است ، به اين علت است كه به دو خط كشيده شده بود. بنابراين شيء ( در زير آن واقع شده و متصل شده به Bio يكي به پايين جابجا شده . اين اتفاق افتاده زيرا تمام اشيا خاصيت فعال شده ي انتقال دارند.)

چنين اشيايي وقتي كه يك شيء قابل امتداد در بالاي آنها وجود دارد به سمت پايين جابجا مي شوند ، شيء متن "text" همراه مشخصه ي "stretch" فعال شده اند. نمودار ارتفاع با توجه به جابجايي شيء كه شيء بالايي چگونه امتداد پيدا مي كند بستگي دارد .

براي انجام اين عمل يك نوع نوار مخصوص در برنامه ي fast report وجود دارد به نام "child band" كه به نوار پايه متصل شده است :

بياييد مشخصه ي child را براي اتصال اجزا پايه به اجزا زير مجموعه ي آن در بازرس شيء object inspector قرار دهيم. حال هر زماني كه شما از نوار پايه پرينت بگيريد زير مجموعه آن نيز ديده خواهد شد.

 همانطور كه مي بينيد عنوان دقيقا در جايي كه انتظار مي رفت تايپ شده است . براي جلوگيري از انتقال نوار زير مجموعه به صفحه ي بعد  مشخصه ي "keep child" را براي نوار پايه فعال كنيد .

 

اشيا تغيير كننده:

مشاهده كرديد كه چطور مشخصه ي انتقال كار مي كند. بياييد حالت بعدي انتقال را امتحان كنيم: انتقال مشترك در بازرس شيء مقدار خاصيت shift mode=…… با اين حالت مشابه است . بنابراين انتقال شيء در اين مورد انجام خواهد شد . هنگامي كه شيء از بالا در هنگام كشيده شدن بر روي شيء داده شده مي افتد. سه مورد در تصوير زير نشان داده شده است. همانطور كه مي بينيد شيء زيري با خاصيت فعال شده ي " انتقال هنگام روي هم افتادن " انتقال پيدا مي كند ، فقط در مورد آخر به طور مثال هنگامي كه مقدار زيادي متن در شيء بالايي وجود دارد و اين مورد زيري را مي پوشاند.

اگر حالت انتقال فعال باشد شيء زيري به هر صورت ممكن جابجا مي شود

 . در برخي موارد اين اجازه را مي دهد كه نسبتا منطق پيچيده ي طراح شيء را بفهميد. مخصوصا اگر يك شيء بر روي گزارشهاي متعدد ديگري در يك زمان افتاده باشد. بنابراين در مثال گفته شده هر دوي اشيا بالا داراي متون كشيده شده هستند و شيء زيري داراي خاصيت " انتقال هنگام مسدود شدن " فعال باشد. شيء زيري هميشه به شيء نزديك تر نمايش داده خواهد شد كه محتوي متن بيشتر بدون مراعات اندازه ي متن در اشيا بالاتر است.

در اين مثال ، اگر حالت انتقال براي اين شيء فعال باشد ، شيء زيري دو بار انتقال پيدا خواهد كرد .وقتی شيء در زير دو تا از اشيا واقع شده باشد يك فضاي غير ضروري ايجاد مي شود.

 

گزارش با دو سطح داده

قبلا ما گزارشهايي را امتحان كرديم كه فقط يك نوار داده وجود داشت ( داده هاي يك سطحي)

Fast report اين اجازه را مي دهد كه گزارشهاي محتوي 6 سطح داده را بوجود آوريم.( همچنين اين امكان وجود دارد كه تعداد سطح بيشتري را بوجود آورد . با استفاده از شيء "subreport" اين شيء بعدا امتحان خواهد شد.درخواستهاي واقعي ، گزارشهايي با درخواستهاي داده اي زياد وجود دارند. به عنوان قانون آنها بين سطوح 1 تا 3 محدود شده اند.

بياييد رويه ساخت يك گزارش دو سطحي را انتخاب كنيم. اين گزارش شامل داده ها از جدول DBDEmos خواهد بود: "orders.db" , "customer.db" جدول اول ليست مشتري ها است و جدول دوم ليست سفارشات توسط مشتريها مي باشد. جدولها شامل داده هايي از نوع زير هستند:

همانطور كه مي بينيد جدول دوم محتوي ليست تمامي سفارشات بوسيله همه ي شركتها مي باشد.

براي دريافت ليست سفارشات يك شركت خاص، نوشته اي كه در شاخه ي custNo محتوي شماره شركت انتخابي است، بايد در جدول به حالت انتخاب در بيايد. گزارش داده شده روي چنين داده هايي به شكل زير ديده مي شوند

بياييد گزارش ساخته شده را پياده سازي كنيم. يك پروژه ي جديد در نرم افزار Delphi درست كنيد و از اجزاي آن دو TTable و يك TDatasourcel و دو TfrxDBDataset و يك TfrxReport روي فرم قرار دهيد. اجزا را مطابق زير تنظيم كنيد:

داده هايمان را در پنجره ي Report/Data در طراح گزارش بياييد به هم وصل كنيم. نوارهاي Master Data , Detail Data را روي صفحه قرار دهيد.

 توجه كنيد كه نوار Master data بايد بالاي نوار Detail data واقع شود. اگر در زير قرار گيرد fast report شما را از يك خطا به هنگام اجراي گزارش مطلع مي سازد.

Data linkage

اگر گزارش را آغاز كنيد می بینید كه ليست مشابهي براي هر مشتري باقي مي ماند و تمام يادداشتها از جدول "Orders.db" را شامل مي شود. چنين رخدادي به این خاطر است كه ما قادر به فيلترينگ يادداشتها در جدول "Orders" نيستيم.به منابع data خودمان برمی گرديم. خاصيت "master ssource=data source1" در جزء "table2" را ببينيد. بدين ترتيب ارتباط يك "master-detail" را تنظيم كرده ايم. پس از آن يك شرط براي فيلتر منابع تابع يادداشتها بايد برقرار كنيم ، كه براي اجراي آن ويرايشگر خاصيت "master fields" از جزء "table2" را فراخواني مي كنيم:

ما نياز به پيوند دو فيلد "CustNO" در دو منبع داريم. براي اجراي آن فيلدهاي مطلوب را انتخاب كنيد و روي دكمه Add كليك كنيد. پيوتد فيلدها به پنجره پايين تغيير مكان خواهد داد. پس از آنeditor را بسته و كليد "OK" را بزنيد. موقع شروع يك گزارش Fast Report شرح ذيل را دنبال مي كند: پس از تخصيص يادداشت بعدي از جدول اصلي ( مشتري) ، تنظيم فيلتر روي جدول وابسته را انجام مي دهد. تنها يادداشتهايي كه شرط "orders.custno=customer.custno" را متقاعد مي كنند در جدول باقي خواهند ماند. اين بدين معني است كه براي هر مشتري تنها سفارشاتش در جدول نمايش داده مي شود:

 

گزارشات مي تواند طي 6 مرحله Data به روش مشابه ساخته شوند.

Headers and footers of a daka banel

هر نوار data ممكن است داراي  header (سر صفحه) و footer (پا صفحه) باشد. سر صفحه قبل از چاپ يك نوار data و پا صفحه بعد از تمامي ركوردهاي data نمايش داده مي شود. در اينجا با يك مثال چگونگي كاركرد اين دو را در يك گزارش ساده مي بينيد:

 

اجازه دهيد به مثال مركبي كه از دو لايه ديتا ( اصلي- جزيي) استفاده كرده نگاهي بيندازيم:

همانطور كه مي بينيد سر صفحه قبل از تمامي ركوردهاي نوار data چاپ شده است. از اين رو سر صفحه اصلي يكبار در شروع گزارش چاپ شده ، پا صفحه بعد از تمامي ركوردها چاپ شده است.

استفاده از پا صفحه بعد از خاصيت نوار data را بايد باطل كنيم. تبديل اين خاصيت به True ( اين خاصيت را از گزينهfter eachrow        "footer  a روي منوي ضمني نوار data جستجو كنيد)موجب مي شود تا پا صفحه بعد از هر رديف data چاپ شود و در مواقع طراحي گزارشات master-detail مفيد خواهد بود.

مثال قبلي که با پا صفحه اي بعد از هر خاصيت master data به حالت true تنظيم شد ، مانند زير خواهد بود:

 

Report with Groups

گزارشی دو مرحله اي بر پايه data از دو جدول در مثال فوق ساختيم. Fast report امكان ساخت گزارشهاي آنالوگي را بر پايه يك مجموعه data و تشكيل يافته در راه يگانه را مي دهد.

براي اجراي آن نياز به استفاده از زبان SQL است كه data را باز مي گرداندو منظم بر اساس يك شرط معين از جداول مي شود. در اين حالت يك شرط مطابقت فيلدهاي cust NO در هر دوي جداول است.

خط "order by" براي منظم كردن ركوردها در فيلد "cust no" ضروري است:

 

چطور يك گزارش چند مرحله اي مي تواند بر پايه اين data ساخته شود؟

در fast report يك نوار خاص به نام "Group header" موجود است . يك شرط خاص براي نوار مورد نظر برقرار شده است. ( يك عبارت يا مقدار فيلد DB )  ، اين نوار در زماني كه مقدار فيلد تغيير يافته است نشان داده مي شود. مثال ذيل اين قضيه را شرح مي دهد.

اجازه بدهيد يك پروژه جديد در دلفي ايجاد كنيم. اجزا "TQuery" , "TfrxReport" , "TfrxDBDetaset" روي فرم قرار دهيد و به صورت زير تنظيم كنيد:

 

جهت مشاهده كليه اخبار شركت مديران به سايت modirangroup.ir و  modiran8.ir و m888.ir  مراجعه نماييد.