• نرم افزار SQLServer مایکروسافت ورژن 2012 یا ورژن های بالاتر (می توان از نسخه اکسپرس نیز استفاده کرد).  SQLServerحتما در حالتmixed mode  نصب شود یعنی برای کاربر SA پسورد گذاشته شود.
    • نرم افزار توسعه جاوا JDK (java development kit) ورژن 8 و یا نسخه های بالاتر

  • نرم افزار محیط توسعه برنامه های جاوا NetBeans نسخه 8.1 و یا بالاتر (حتما زمان نصب وب سرور، Glassfish نیز نصب گردد)
 
پیکربندی پایگاه داده

زی فریم برای عملکرد صحیح نیاز به سه بانک اطلاعاتی مجزا دارد:      

    • بانک اطلاعاتی مدیریت تیم توسعه (ZIDEDB به عنوان یک نام برای این بانک اطلاعاتی پیشنهاد می شود)
    • بانک اطلاعاتی موتور زی فریم (به عنوان مثال Accounting_MD که MD مخفف Metadata است)
    • بانک اطلاعاتی پروژه مورد نظر (به عنوان مثال Accounting برای یک نرم افزار حسابداری )

برای اتصال و ساخت بانک اطلاعاتی از نرم افزار SQL Server Management Studio استفاده نمایید.

برای ساختن یک دیتابیس جدید ابتدا پنجره نوشتن کوئری در دیتابیس را با استفاده از گزینه New Query باز کنید.

سپس دستورات زیر را درون آن نوشته و بر روی دکمه Execute کلیک کنید تا دستور ساخت دیتابیس اجرا شود:

 
create database ZIDEDB
create database Accounting
create database Accounting_MD

با اجرای این فرمان، سه بانک اطلاعاتی در نرم افزار SQLServer با نام های ZIDEDB، Accounting و Accounting_MD ساخته خواهد شد.

نصب
  • پس از دانلود پوشه مورد نظر و خارج کردن آن از حالت فشرده، با کلیک بر روی فایل ZIDEEE نرم افزار اجرا می شود.
این برنامه در اولین اجرا نیاز به ریجستر کردن دارد (به دلیل رایگان بودن این نرم افزار، رجیستر کردن آن نیز رایگان است.)
  • زمان مواجهه با پنجره ای تصویر زیر، پس از وارد کردن اطلاعات اولیه بر روی دکمه Online Registration Key کلیک نماید.
زی فریم

با کلیک بر روی دکمه OK (در صورتی که اطلاعات مربوط به فعال سازی درست باشد)، گزینه ی جدیدی با نام Define Database (ZIDE) نمایان می شود.

  • کلیک دکمه Define Database (ZIDE) تا بتوانید بانک اطلاعاتی ZIDEDB را به IDE معرفی کنید. در پنجره جدید باز شده، در صورتی که بانک اطلاعاتی پروژه SQL Server است، بر روی Microsoft SQL Server کلیک کنید.
  • پس از انتخاب گزینهMicrosoft SQL Server ، پنجره ای با نام Connection Properties باز می شود که در آن نحوه ی ارتباط با بانک اطلاعاتی را تعریف خواهیم کرد.
 
  • User name و password تعریف شده هنگام نصب SQLServer و دیگر اقلام اطلاعاتی را وارد نمایید.
 
  • برای بررسی صحت اتصال به بانک اطلاعاتی بر روی دکمهTest Connection کلیک نمایید.

با کلیک بر روی دکمهOK ، پنجره ای دیگر باز می شود، که در این پنجره نیز باید بر روی دکمهOK کلیک شود. حال گزینه Create Database ZIDE در پنجره ZIDE Licence Management ظاهر می شود.

نکته بسیار مهم: ضروری است تا اولین برنامه نویسی که در تیم توسعه اقدام به نصب زی فریم می کند، حتما بر روی دکمه Create Database ZIDE کلیک نماید تا جداول مورد نیاز برای کار با زی فریم ساخته شود.

پس از ساخته شدن این جداول، نیازی نیست تا دیگر برنامه نویسان از این دکمه استفاده کنند و تنها کافی است بر روی دکمهOK کلیک نمایند.

  •  فرم لاگین در این مرحله باز خواهد شد. در زی فریم یک کاربر پیش فرض با نام کاربریAdmin و کلمه عبور 123456 برای ورود به سامانه تعریف شده است

پس از وارد کردن این اطلاعات و کلیک بر روی دکمه Login، برنامه ZIDE با موفقیت اجرا خواهد شد.

زی فریم
 
ساخت پروژه
  •  ساخت یک بانک اطلاعاتی برای موتور اجرای سیستم. از ترکیب یک نام دلخواه و پسوند “_MD”
  • از منوی File و زیر منوی New گزینه Project را انتخاب کنید.

File > New > Project

با کلیک بر روی این گزینه، فرم نمایان می گردد، که در این فرم می توانید پروژه را تعریف نمایید.

زی فریم
 
 

1. در قسمت Project Name نام پروژه خود را حتما به لاتین وارد کنید.
2. در قسمت Project Title عنوان فارسی و یا نام عمومی پروژه را به زبان دلخواه (به عنوان مثال فارسی) وارد کنید.
3. در قسمت Create Date تاریخ ایجاد پروژه ثبت می شود، که به صورت پیش فرض تاریخ روز جاری در آن نوشته شده است.
4. در قسمت Percent Work میزان پیشرفت پروژه نمایش داده می شود. توسعه دهنده مسئول بروزرسانی این قسمت است.
5. قسمت Database Type نوع بانک اطلاعاتی برای تعریف پروژه را مشخص می کند که همان بانک اطلاعاتی موتور زی فریم است، که این بانک اطلاعاتی متا دیتا (Metadata) نامیده می شود. زی فریم در حال حاضر از پنج نوع بانک اطلاعاتی پشتیبانی می کند که در این قسمت برای سهولت آموزش تنها بانک اطلاعاتی Microsoft SQL Server مد نظر قرار می گیرد. درنتیجه از این لیست گزینه MSSQL Server را انتخاب کنید.

زی فریم
 
 

6. در قسمت ADO.NET Database Connection String باید آدرس بانک اطلاعاتی متا دیتا نوشته شود. با استفاده از دکمه ی علامت سوال که کار کمک رسانی برای نوشتن قالب این رشته را بر عهده دارد، می توان قالب مربوط به بانک اطلاعاتی مورد نظر را انتخاب نمود.

زی فریم
 
 

همچنین دکمه Connection نیز ابزاری برای معرفی ساده تر بانک اطلاعاتی است که توسعه دهنده می تواند از آن استفاده کند.

زی فریم

در پنجره باز شده در فیلد Server Name مقدار دات یا “.” را وارد کنید. هر یک از گزینه های Use Windows Authentication و Use SQL Server Authentication را می توانید انتخاب کنید. در صورت انتخاب گزینه دوم، نام کاربری و رمز عبوری که برای SQL Server خود تعیین کرده اید را وارد کنید. در قسمت Select Or Enter a Database Name نام پایگاه داده متادیتا (با پسوند _MD) که برای این پروژه تعریف کرده اید را انتخاب کنید. برای بررسی برقراری اتصال به پایگاه داده بر روی گزینه Test Connection کلیک کنید.

زی فریم
 

اگر اتصال به درستی صورت گیرد با پیغام زیر مواجه می شوید. آن را OK کنید.

زی فریم
 

در نهایت دکمه OK را بزنید تا کد مربوط به اتصال با پایگاه داده در قسمت ADO.NET Database Connection (Metadata Database) به صورت خودکار درج شود.

زی فریم
 

7. پس از تکمیل اطلاعات مریوط به آدرس بانک اطلاعاتی، بر روی دکمه Check Database کلیک کنید تا بررسی شود که آیا جداول مربوط به متا دیتا در این بانک وجود دارد یا خیر. در صورت وجود نداشتن این جداول، سیستم پیام می دهد که چنین جداولی را پیدا نکرده است. بر روی Yes کلیک کنید تا سیستم به صورت خودکار این جداول را برای شما بسازد.

زی فریم
 

زمانی که ساخت این جداول و اتصال به دیتابیس به خوبی انجام شود، متن داخل باکس ADO.NET Connection سبز رنگ شده و دکمه Save فعال می شود.

8. بر روی دکمه Save کلیک کنید تا فرایند تعریف پروژه با موفقیت به اتمام برسد.

ساخت اپلیکیشن

 برای تعریف اپلیکیشن از طریق مسیر File >> New >> Application اقدام کنید.

فرم را تکمیل کنید:

1) وارد کردن نام دلخواه لاتین برای سیستم مورد نظر در قسمت Application Name.

2) وارد کردن نام فارسی و یا لاتین دلخواه جهت نمایش در خروجی نهایی در قسمت Application Title.

3) تیک زدن گزینه Active Application In System.

4) عدد قرار داده شده درون گزینه Application Sort Order بیانگر اولویت نمایش این اپلیکیشن است. اگر اولین اپلیکیشنی است که می سازید این عدد را برابر با صفر قرار دهید.

5) عدد قرار داده شده درون گزینه Connection Pool Count بیانگر تعداد مسیرهای ارتباطی با بانک اطلاعاتی است که توسط این اپلیکیشن باید رزرو شود. برای شروع کار می توان از عدد 5 برای این گزینه استفاده نمایید.

6) فیلدهای اجباری DB Username و DB Password نام کاربری و رمز عبور همان پایگاه داده است که کسب و کار در آن ایجاد شده است (در این مثال نام کاربری و رمز عبوری که برای MSSQL Server تعریف کردیم). برای دسترسی به بانک اطلاعاتی الزاما باید از نام کاربری و کلمه عبور استفاده شود، در غیر این صورت نرم افزار به درستی اجرا نخواهد شد (به دلیل مسائل امنیتی، زی فریم اینگونه طراحی شده است.) به همین دلیل در هنگام نصب SQL Server ضروری است که حالت Mixed Mode انتخاب شود تا بتوان نام کاربری و رمز عبور برای بانک اطلاعاتی تعریف نمود.

7) در حال حاضر می توانید بدون دادن ورودی از گزینه Database Schema Name عبور کنید.

8) انتخاب کردن گزینه MSSQL Server در فیلد Database Type.

9) معرفی آدرس بانک اطلاعاتی با قالب JDBC در فیلد JDBC Connection String با زدن دکمه علامت سوال که در بالای این فیلد قرار گرفته است، فرمت پیش فرض آدرس بانک اطلاعاتی ایجاد می شود تا توسعه دهنده بر اساس بانک اطلاعاتی خود آن را تغییر دهد. بر روی دکمه علامت سوال کلیک کنید و چنانچه از SQL Server استفاده می کنید، گزینه MSSQL Connection String JDBC Template را انتخاب نمایید تا متن jdbc:sqlserver://localhost:1433;databaseName=DBNAME; ظاهر شود. در این متن به جای واژه DBNAME نام بانک اطلاعاتی پروژه خود را بنویسید.

در فیلد ADO.NET Connection String علاوه بر استفاده از دکمه علامت سوال برای نوشتن حالت پیش فرض، می توان از دکمهADO.NET Connection نیز برای معرفی بانک اطلاعاتی کسب و کار به سامانه زی فریم بهره برد. استفاده از این دکمه در قسمت تعریف پروژه در زی فریم به طور کامل آموزش داده شد. تنها تفاوت آن است که در قسمت Select Or Enter A Database Name نام پایگاه داده بیزینس (بدون پسوند _MD) که برای این پروژه تعریف کرده اید را انتخاب کنید (در این مثال Accounting)

10) فیلد Application URL محل وارد کردن آدرس پنل نرم افزار خروجی بوده، بنابراین پر کردن آن بسیار مهم است. اما از آنجایی که در هنگام ساخت اپلیکیشن آدرس پنل برای شما مشخص نیست، در نتیجه در این مرحله به آن ورودی داده نمی شود تا زمانی که پیکره بندی نرم افزار خروجی و محیط اجرایی صورت گیرد. با استفاده از گزینه Edit Application، هر زمانی می¬توان برای تکمیل این فیلد به این مرحله بازگشته و آدرس دقیق را وارد نمود.

در نهایت پس از آنکه فرم ساخت اپلیکیشن به شکل زیر آماده شد، بر روی دکمه Save کلیک کرده تا اپلیکیشن ساخته شود.

زی فریم
انتخاب سیستم برای شروع کار

 از طریق مسیر File >> Open >> Application اقدام کنید. در پنجره باز شده لیست تمامی اپلیکیشن های تعریف شده درون این پروژه نمایش داده شده است. بر روی اپلیکیشن مورد نظرتان کلیک کنید. سپس بر روی دکمه Open موجود در پایین فرم کلیک کنید تا اپلیکیشنی که انتخاب کردید باز شود.

 

اکنون محیط نرم افزار ZIDE برای آماده ساختن و مدیریت کردن یک برنامه آماده است.

پیش از نصب NetBeans ابتدا باید JDK بر روی سیستم نصب شده باشد. سپس NetBeans ترجیحا نسخه 8.2 نصب شود.

باز کردن پروژه Workspace

پس از اجرا شدن NetBeans، باید پروژه Workspace  از طریق مسیر File >> Open Project باز شود. در این قسمت ابتدا باید وارد پوشه Workspace شده و سپس از میان دو پوشه ای که مشاهده می شود، پوشه ZFAPP انتخاب و Open شود.

پس از باز کردن این پروژه، می توان محتویات داخل این پروژه را در پنجره Projects مشاهده نمود.

فایل zf.configdata برای اجرای پروژه بسیار حیاتی است.

برای دسترسی به zf.configdata و اعمال اصلاحات لازم، ابتدا این فایل باید درون درختواره از طریق مسیر ZFAPP >> Web Pages >> zf.configdata باز شود.

این فایل از تعدادی کلید واژه تشکیل شده که به هر کدام مقدار ویژه ای اختصاص یافته است.

Project = zframeapplication1

در این قسمت نام پروژه باید نوشته شود.

DataBaseTypeID = 1

در زی فریم برای هر نوع بانک اطلاعاتی یک عدد به عنوان ID در نظر گرفته شده است. در این قسمت باید عدد متناسب با بانک اطلاعاتی مورد نظر که موتور اجرایی زی فریم باید به آن وصل شود قرار می گیرد .

DBUserName = sa

نام کاربری بانک اطلاعاتی در این قسمت نوشته می شود.

DBPassword = password

کلمه عبور برای دسترسی به بانک اطلاعاتی مربوط به کاربر ثبت شده باید در این قسمت نوشته شود

ProjectConnectionString= jdbc:sqlserver://127.0.0.1:1433;databaseName=ZF_MD

در این قسمت، آدرس بانک اطلاعاتی موتور اجرایی زی فریم با استاندارد JDBC نوشته می شود.

System_ID = 1

در این قسمت باید کدApplicationID وارد شود که می توان مقدار آن را در قسمت مدیریتApplication در ZIDE مشاهده نمود.

SetupUserName = admin

در حال حاضر تغییر این گزینه ضرورتی ندارد و به همین شکل مناسب است.

SetupPassword = admin

در حال حاضر تغییر این گزینه ضرورتی ندارد و به همین شکل مناسب است.

Debug = 1

در فرایند توسعه نرم افزار هنگامی که نرم افزار نهایی نشده و در محیط اجرایی استقرار پیدا نکرده است، توسعه دهنده باید قادر باشد که سیستم خود را Debug کند. Jar = D:\WorkSpace\REF_LIB ;

TraceLevel = -1

اولویت لاگ گرفتن رویدادها در زی فریم در این قسمت تعیین می شود.

ConnectionPool = 5

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

MaxQueryTimeoutSecond = 0

این عدد (بر حسب ثانیه) بیانگر میزان زمان لازم برای دریافت داده ها از بانک اطلاعاتی است. عدد صفر بیانگر آن است که صرف نظر از مقدار زمان لازم برای پردازش بانک اطلاعاتی، سیستم باید صبر کند تا جواب را از بانک دریافت نماید (پیشنهاد می شود تغییری در این مقدار صورت نگیرد.)

PageLoadTimeout = 0

مقدار زمان مجاز (بر حسب ثانیه) برای ساخت صفحات وب توسط موتور اجرایی با این مقدار مشخص می شود. مقدار صفر بیانگر آن است که سیستم هیچ محدودیتی نداشته و اگر بارگذاری یک فرم حتی ساعتها به طول بیانجامد، سیستم به عملیات خود ادامه داده تا صفحه بارگذاری شود. اما اگر این مقدار به عنوان مثال برابر با 20 قرار داده شود، بیانگر آن است که تمامی فرم ها باید حداکثر طی 20 ثانیه در اختیار کاربر قرار گیرند. در غیر این صورت، سیستم بدون آنکه خروجی مورد نظر را نمایش دهد، تنها پیامTimeout را به کاربر نشان خواهد داد. (پیشنهاد می شود تغییری در این مقدار صورت نگیرد.)

MetaDataConnectionPoolCount = 5

این عدد نمایانگر تعداد اتصالات رزرو شده برای موتور اجرایی زی فریم و بانک اطلاعاتی است که مقدار آن به میزان درخواست، تعداد کاربر و همچنین منابع سخت افزاری بستگی دارد.
(پیشنهاد می شود تغییری در این مقدار صورت نگیرد)

گرفتن لاگ در DB

در زی فریم از بسیاری از فرایندها به صورت پیشفرض لاگ گرفته شده و در داخل بانک اطلاعاتی مربوط به لاگ ذخیره می شود. با قرار دادن مقدار LogDisable برابر با عدد یک، می توان این قسمت را به طور کل غیر فعال نمود.موارد ذیل بیانگر خصوصیات مربوط به اتصال بانک اطلاعاتی برای لاگ گرفتن است.

LogDisable = 0

LogConnectionPoolCount = 3

LogDataBaseTypeID = 1

LogDBUserName = sa

LogDBPassword = password

LogProjectConnectionString = jdbc:sqlserver://127.0.0.1:1433;databaseName=ZF_MD

LogMaxStatements = 100

LogMaxStatementsPerConnection = 0

تعداد اتصالات رزرو شده برای موتور اجرایی زی فریم و بانک اطلاعاتی جهت گرفتن لاگ در این قسمت تعریف می گردد. این مقدار به میزان درخواست، تعداد کاربر و همچنین منابع سخت افزاری بستگی دارد.
(پیشنهاد می شود تغییری در این مقدار صورت نگیرد)

FileDatabasePath =D:\myDBFile\

در زی فریم برای سهولت ذخیره فایل ها، یک مکانیزم ذخیره سازی اطلاعات در خارج از بانک اطلاعاتی ایجاد شده است. در این قسمت می توان به مدیریت و تعیین آدرس پوشه سرشاخه برای ذخیره فایل های ارسالی توسط کاربران (که در نرم افزار به آن نیاز است) پرداخت. لازم به ذکر است که می توان فایل ها را داخل بانک اطلاعاتی نیز ذخیره نمود.

zframeotp = 1

csrfservertokenname = XCSRFTOKEN

csrfclienttokenname = CCSRFTOKEN

موارد فوق برای پیکره بندی موارد امنیتی زی فریم استفاده می شود که پیشنهاد می شود تغییری در این مقادیر صورت نگیرد. زیرا برای توصیف هرکدام نیاز به دانش امنیت نرم افزار و موارد دیگر است (در قسمت آموزش پیشرفته به آنها بیشتر پرداخته خواهد شد.)

برای آنکه بتوان داده های یک فرم را در جداول دیتابیس ذخیره نمود، می بایست نوع داده های هر کنترل به درستی مشخص گردد. چنانچه فرم مورد نظر بر اساس یک جدول موجود در دیتابیس ساخته شده باشد، نوع داده های هر کنترل یا فیلد هنگام ساخت جدول تعیین خواهد شد. اما اگر فرم به صورت Create Form by Design ساخته شده باشد دیگر جدول در دیتابیس ساخته نشده است که نوع داده فیلدهای آن مشخص باشد. در چنین فرمهایی برای تعیین نوع داده هر یک از کنترلها باید بر روی هر کنترل کلیک راست کرده و گزینه Data Type را انتخاب نمود تا فهرستی از انواع داده در زی فریم را مشاهده و از بین آنها نوع داده مورد نظر برای آن فیلد یا کنترل را انتخاب کرد. این نوع داده ها برگرفته از انواع داده موجود در SQL Server هستند، که هنگام ایجاد یک کنترل بصورت پیش فرض نوع داده برای تمامی کنترل ها برابر با String در نظر گرفته شده است. در شکل زیر می توان انواع مختلف داده را مشاهده نمود.

زی فریم

انواع داده در زی فریم

T_String

داده T_String معادل با نوع داده VARCHAR در SQL Server است. در این نوع از داده که به آن داده “رشته ای” گفته می شود، می توان متون مختلف را قرار داد. یک رشته در این حالت می تواند با طولی متغیر از یک تا 8000 کاراکتر یا حرف تعریف شود. حتی اعدادی که در این فیلد قرار داده می شوند نیز از نوع عددی نبوده و به صورت رشته در نظر گرفته می شوند. در نتیجه از قواعد ریاضی پیروی نمی کنند و نمی توان اعمال ریاضی همچون چهار عمل اصلی را بر روی آنها اعمال کرد. به همین دلیل اگر درون یک فیلد با نوع داده String عددی مانند 05 قرار گیرد، عدد صفر حذف نخواهد شد و با هر دوی آنها همچون یک حرف از حروف الفبا رفتار می شود نه یک عدد. اما اگر نوع داده int بود، عدد صفر حذف شده و تنها عدد 5 ثبت می شد.

T_boolean

نام این نوع داده برگرفته از جورج بول ریاضیدان انگلیسی است. از این نوع داده می توان برای تعیین ارزش عبارات منطقی و جبر بولی استفاده کرد و به عبارتی می توان از این نوع داده در مواردی استفاده نمود که برای آن فیلد صرفاً دو مقدار مد نظر باشد (صفر یا یک، درست یا غلط، زن یا مرد و …) به طور کلی در زبان های برنامه نویسی از این نوع داده در دستورات شرطی استفاده می شود، اما در SQL Server برای داده هایی با دو مقدار هم می توان از آن استفاده نمود.

T_BigDecimal

این نوع داده ای برای اعداد اعشاری با طول زیاد کاربرد دارد و نمی تواند بدون علامت باشد (هر اعشار معادل یک بایت است.) این نوع داده در SQL Qerver محدود به 16 رقم در دو طرف اعشار است.

T_Byte

این نوع داده یکی از انواع داده ی مناسب برای اعداد است که برای نگهداری اعداد مثبت و کوچک به کار می رود. این نوع از داده ها توانایی نگهداری اعداد مثبت و کوچک از 0 تا 255 را در خود دارند. همچنین فضایی که یک متغیر از نوع Byte در حافظه اشغال می کند برابر با 1 بایت است که می توان برای داده های عددی کوچک مانند سن افراد از آن استفاده نمود.

T_short

یکی دیگر از انواع داده برای اعداد نوع دادهshort است. فضای مورد نیاز برای این نوع داده برابر با 2 بایت است، که در این نوع داده می توان اعدادی بین منفی 32,768 تا مثبت 32,767 را ذخیره نمود.

T_int

یکی از مهمترین و پر کاربردترین نوع داده برای اعداد صحیح، داده int است که هر داده از این نوع فضایی به میزان 4 بایت را اشغال می کند. از ویژگی های این نوع از داده آن است کهint قادر به نگهداری بازه ی وسیعی از اعداد از منفی 2,147,483,648 تا مثبت 2,147,483,647 در درون خود است. در نتیجه به دلیل آنکه این نوع داده گسترده ی وسیعی از اعداد را در خود جای می دهد، به عنوان یکی از انواع بسیار پر کاربرد داده در نظر گرفته شده است.
اما باید توجه داشت که به منظور استفاده بهینه از حافظه، بهتر است در فیلدهای مختلف از نوع داده¬ی عددی مناسب همان فیلد استفاده شود.

T_Long

از این نوع داده برای نگهداری اعداد بسیار بزرگ استفاده می شود. متغیرهایی که از نوع long در نظر گرفته می شوند، توانایی نگهداری اعدادی بین منفی 9,223,372,036,854,775,808 تا مثبت 9,223,372,036,854,775,807 را در خود دارند. همچنین فضای مورد نیاز برای نگهداری یک متغیر long در حافظه برابر با 8 بایت می باشد.

به دلیل تنوع در داده های عددی می توان برحسب میزان حافظه، نوع داده اعداد را از حافظه بیشتر به حافظه کمتر مرتب نمود. به این ترتیب بیشترین حافظه در نظر گرفته شده متعلق به داده T_Long بوده و سپس انواع داده ی T_Int و T_short و T_Byte به ترتیب قرار می گیرند.

T_Float

یکی از پرکاربردترین نوع داده برای اعداد اعشاری، نوع داده ی T_Float است. در این نوع داده می توان عددی تا 24 رقم اعشار را ذخیره نمود.

T_Double

این نوع از داده همانند داده T_Float برای نگهداری از اعداد اعشاری کاربرد دارد؛ با این تفاوت که حافظه اشغال شده برای داده های T_Float چهار بایت و برای داده های double هشت بایت است. همچنین دقت اعشار برای داده های T_Double می تواند تا 54 رقم باشد. به عبارت دیگر، یک داده T_Double می تواند تا 54 رقم اعشار را در خود جای دهد.

T_ByteA

این نوع داده که تحت عنوان bytearray هم شناخته می شود، در اصل آرایه ای از یک سری بایت است، که می توان به جای آن از نوع داده آرایه نیز استفاده نمود.

T_Date

از این نوع داده برای نمایش تاریخ استفاده می شود. قالب این نوع داده به صورت YYYY-MM-DD بوده که در آن، بخش YYYY معرف سال و رقمی بین 0000 تا 9999 است. همچنین، بخش MM معرف ماه های سال بوده و رقمی بین 0 تا 12 در آن قرار می گیرد. در نهایت، بخش DD به عنوان معرف روزهای سال بوده که رقمی بین 1 تا 31 را در خود جای می دهد. برای مثال مقدار 1973-12-30 معرف آخرین روز از آخرین ماه سال 1973 است.

T_Time

از این نوع داده برای ذخیره کردن زمان به صورت ساعت، دقیقه و ثانیه استفاده می شود، که دارای قالبی به صورت HH:MM:SS است. در این قالب، مقدار HH معرف ساعت، MM معرف دقیقه و SS معرف ثانیه است. به عنوان مثال 12:54:20 به معنای ساعت 12 و 54 دقیقه و 20 ثانیه است.

T_TimeStamp

این نوع داده برای نمایش یک زمان مشخص است که به صورت ترکیبی از تاریخ و زمان و با فرمت YYYY-MM-DD HH:MM:SS نمایش داده می شود. اما نحوه ذخیره این اعداد در حافظه متفاوت است. به این صورت که آنچه در حافظه ذخیره می شود، مجموعه ای از اعداد پشت سر هم بوده که درک آن برای افراد نامفهوم خواهد بود.

T_Clob

این نوع داده مناسب برای پایگاه های داده ORACLE بوده و متناظر آن در SQL Serverهمان VARCHAR است که در بالا به معرفی آن پرداخته شد.

T_Blob

این نوع داده نیز مناسب برای پایگاه های داده ORACLE بوده و متناظر آن در SQL Serverهمان VARBINARY است. نام این نوع داده برگرفته از مخفف عبارت Binary Large Object است که، با داشتن ظرفیتی بین 1 تا 8000 بایت،برای ذخیره سازی مقادیر بزرگ داده های باینری از قبیل تصویر یا انواع مختلف فایل ها به کار می رود.
توجه شود که برای ذخیره مقادیر بزرگ داده ای از فیلدهای نوع متنی نیز می توان استفاده نمود. با این تفاوت که در نوع داده ی T_Blob، هنگام مرتب سازی و مقایسه داده ها، شاهد تفاوت قائل شدن بین حروف بزرگ و کوچک خواهیم بود، اما این تفاوت در نوع داده ی متنی مشاهده نمی شود.

T_Array

از این نوع داده برای ذخیره مقادیر آرایه ها استفاده می شود. یک آرایه شامل مجموعه‌ای از عناصر هم نوع بوده که هر کدام از این عناصر با یک یا تعداد بیشتری اندیس ذخیره می‌شوند. نحوه ذخیره سازی این عناصر نیز در حافظه به صورت ترتیبی است. یعنی به اولین عنصر، آدرس اول از حافظه اختصاص می یابد و آخرین آدرس مربوط به عنصر آخر است. به عنوان مثال فهرست اسامی زیر که به صورت یک آرایه است را در نظر بگیرید. در این مثال، ابتدا Ali سپس mohammad، hasan، kaveh و در نهایت majid ذخیره می شود.List = [ ‘Ali’ , ‘mohammad’ , ‘hassan’ , ‘kaveh’ , ‘majid’ ]

T_Ref

از این نوع داده برای به دست آوردن محل ذخیره شدن یک متغیر استفاده می گردد. زمانی از این نوع داده استفاده می شود که بخواهیم محل ذخیره شدن متغیری که پیشتر تعریف شده است را به دست آوریم تا در ارجاعات بعدی به آن اشاره کنیم. به عنوان مثال عددی مانند 125467 می تواند خروجی show باشد که بیانگر محل ذخیره شدن متغیر X با مقدار 10 درون حافظه است.

T_Struct

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

جدول مقایسه داده
 
 
نوع دادهورودیویژگیمیزان اشغال حافظهکاربرد
T_Stringرشته1 تا 8000 کاراکتر100   بایتدرج متون
T_booleanبولیندارای دو مقدار4 الی 8 بایتعبارات شرطی
T_BigDecimalعدد اعشاریمحدود به 16 رقم در دو طرف اعشار20 بایت به بالااعداد اعشاری
T_Byteعدد صحیح مثبتنگهداری اعداد مثبت و کوچک از  0 تا 2551 بایتاعداد کم مقدار مثل سن افراد
T_shortعدد صحیحنگهداری اعدادی بین منفی 32,768 تا مثبت 32,7672 بایتاعداد با مقادیر متوسط
T_intعدد صحیحنگهداری اعدادی از منفی 2,147,483,648 تا مثبت 2,147,483,6474 بایتاعداد با مقادیر بالا
T_Longعدد صحیح

نگهداری اعدادی از منفی 9,223,372,036,854,775,808

تا مثبت 9,223,372,036,854,775,807

8 بایتاعداد با مقادیر بسیار بالا
T-Floatعدد اعشاریتا 24 رقم اعشار4 بایتاعداد اعشاری متوسط
T-Doubleعدد اعشاریتا 54 رقم اعشار8 بایتاعداد اعشاری بزرگ
T_ByteAمقادیر همنوعآرایه ای از یک سری بایتاز 1 بایت به بالاآرایه ها
T_Dateتاریخنمایش تاریخ با فرمت معین8 بایتنمایش تاریخ
T_Timeزماننمایش زمان با فرمت معین8 بایتنمایش زمان
T_TimeStampتاریخ و زماننمایش تاریخ  و زمان با فرمت معین8 بایتنمایش تاریخ و زمان
T_Clobرشتهمناسب برای پایگاه داده ORACLE136 بایتدرج متون
T_Blobفایل و متنمناسب برای ذخیره تصاویر و فایل ها و متون بزرگبین 1 تا 8000 بایتذخیره فایل و متن
T_Arrayمقادیر همنوعآرایه ای از مقادیر همنوع4 الی 8 بایتآرایه ها
T_Refآدرس متغیراشاره گر0 به بالاآدرس متغیر
T_Structمقادیر غیرهمنوعشباهت هایی هم به آرایه ها و هم به کلاس ها  دارد4 الی 8 بایتداده های ناهمنوع

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

1) با استفاده از جدول دیتابیس (New Form by Table)

2) بدون استفاده از جدول دیتابیس(New Form by Design).

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

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

 

در زی فریم همواره ستون یا فیلد اول جداول به عنوان ID داده های هر رکود در نظر گرفته می شود. بنابراین کنترل ساخته شده بر اساس ستون اول جدول، یک کنترل پنهان (Hidden) در نظر گرفته می شود. به همین دلیل هنگام تعریف یک جدول درون دیتابیس، ستون اول را به عنوان ID در نظر گرفته و علاوه بر آن که آن ستون را به عنوان کلید اصلی معرفی می کنیم، خصوصیت Auto Increment را نیز برای آن فعال می کنیم. برای آشنایی با نحوه ساخت جدول، تعریف کلید اصلی و خصوصیت Auto Increment به مقاله ساخت جدول در SQL Server مراجعه شود.

برای این منظور و برای دسترسی به جداول موجود در دیتابیس بر روی گزینه DataBase Explorer از قسمت نوار ابزار نرم افزار کلیک کنید.

 
زی فریم

با این کار پنجره DataBase Explorer باز خواهد شد.

زی فریم

حال برای نمایش جداول (Table) و Views در این پنجره کلیک راست کرده و بر روی Reload DataBase Schema کلیک کنید تا این پنجره بروزرسانی شود.

زی فریم

با این کار جداول (Table) و Views دیتابیس نمایش داده خواهد شد.

زی فریم

همانطور که مشاهده می شود، در این مثال یک جدول با نام Person در دیتابیس ساخته شده است.
حال برای ایجاد یک فرم در زی فریم با استفاده از این جدول از نوار ابزار بالا بر روی گزینه New Form By Table کلیک کنید تا پنجره Create Form With Table نمایش داده شود.

زی فریم

جدول (Table) مورد نظر خود را از پنجره DataBase Explorer انتخاب کنید. مشاهده می کنید که اطلاعات این جدول در پنجره Create Form With Table نمایش داده شده است.

زی فریم

اکنون بر روی گزینه Create Form در پنجره Create Form With Table کلیک کنید. پس از کلیک بر روی این دکمه پیغامی نمایش داده می شود که نشان می دهد فرم با موفقیت ساخته شده است.

زی فریم

برای مشاهده تمام فرم های ساخته شده از قسمت نوار ابزار نرم افزار، بر روی دکمه Form List کلیک کنید تا پنجره Forms باز شود. مشاهده خواهید کرد که فرم frmPerson در این پنجره با موفقیت ایجاد شده است.

زی فریم

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

با استفاده از جدول

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

 

در زی فریم همواره ستون یا فیلد اول جداول به عنوان ID داده های هر رکود در نظر گرفته می شود. بنابراین کنترل ساخته شده بر اساس ستون اول جدول، یک کنترل پنهان (Hidden) در نظر گرفته می شود. به همین دلیل هنگام تعریف یک جدول درون دیتابیس، ستون اول را به عنوان ID در نظر گرفته و علاوه بر آن که آن ستون را به عنوان کلید اصلی معرفی می کنیم، خصوصیت Auto Increment را نیز برای آن فعال می کنیم. برای آشنایی با نحوه ساخت جدول، تعریف کلید اصلی و خصوصیت Auto Increment به مقاله ساخت جدول در SQL Server مراجعه شود.

برای این منظور و برای دسترسی به جداول موجود در دیتابیس بر روی گزینه DataBase Explorer از قسمت نوار ابزار نرم افزار کلیک کنید.

 
زی فریم

با این کار پنجره DataBase Explorer باز خواهد شد.

زی فریم

حال برای نمایش جداول (Table) و Views در این پنجره کلیک راست کرده و بر روی Reload DataBase Schema کلیک کنید تا این پنجره بروزرسانی شود.

زی فریم

با این کار جداول (Table) و Views دیتابیس نمایش داده خواهد شد.

زی فریم

همانطور که مشاهده می شود، در این مثال یک جدول با نام Person در دیتابیس ساخته شده است.
حال برای ایجاد یک فرم در زی فریم با استفاده از این جدول از نوار ابزار بالا بر روی گزینه New Form By Table کلیک کنید تا پنجره Create Form With Table نمایش داده شود.

زی فریم

جدول (Table) مورد نظر خود را از پنجره DataBase Explorer انتخاب کنید. مشاهده می کنید که اطلاعات این جدول در پنجره Create Form With Table نمایش داده شده است.

زی فریم

اکنون بر روی گزینه Create Form در پنجره Create Form With Table کلیک کنید. پس از کلیک بر روی این دکمه پیغامی نمایش داده می شود که نشان می دهد فرم با موفقیت ساخته شده است.

زی فریم

برای مشاهده تمام فرم های ساخته شده از قسمت نوار ابزار نرم افزار، بر روی دکمه Form List کلیک کنید تا پنجره Forms باز شود. مشاهده خواهید کرد که فرم frmPerson در این پنجره با موفقیت ایجاد شده است.

زی فریم

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

با استفاده از جدول

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

 

در زی فریم همواره ستون یا فیلد اول جداول به عنوان ID داده های هر رکود در نظر گرفته می شود. بنابراین کنترل ساخته شده بر اساس ستون اول جدول، یک کنترل پنهان (Hidden) در نظر گرفته می شود. به همین دلیل هنگام تعریف یک جدول درون دیتابیس، ستون اول را به عنوان ID در نظر گرفته و علاوه بر آن که آن ستون را به عنوان کلید اصلی معرفی می کنیم، خصوصیت Auto Increment را نیز برای آن فعال می کنیم. برای آشنایی با نحوه ساخت جدول، تعریف کلید اصلی و خصوصیت Auto Increment به مقاله ساخت جدول در SQL Server مراجعه شود.

برای این منظور و برای دسترسی به جداول موجود در دیتابیس بر روی گزینه DataBase Explorer از قسمت نوار ابزار نرم افزار کلیک کنید.

 
زی فریم

با این کار پنجره DataBase Explorer باز خواهد شد.

زی فریم

حال برای نمایش جداول (Table) و Views در این پنجره کلیک راست کرده و بر روی Reload DataBase Schema کلیک کنید تا این پنجره بروزرسانی شود.

زی فریم

با این کار جداول (Table) و Views دیتابیس نمایش داده خواهد شد.

زی فریم

همانطور که مشاهده می شود، در این مثال یک جدول با نام Person در دیتابیس ساخته شده است.
حال برای ایجاد یک فرم در زی فریم با استفاده از این جدول از نوار ابزار بالا بر روی گزینه New Form By Table کلیک کنید تا پنجره Create Form With Table نمایش داده شود.

زی فریم

جدول (Table) مورد نظر خود را از پنجره DataBase Explorer انتخاب کنید. مشاهده می کنید که اطلاعات این جدول در پنجره Create Form With Table نمایش داده شده است.

زی فریم

اکنون بر روی گزینه Create Form در پنجره Create Form With Table کلیک کنید. پس از کلیک بر روی این دکمه پیغامی نمایش داده می شود که نشان می دهد فرم با موفقیت ساخته شده است.

زی فریم

برای مشاهده تمام فرم های ساخته شده از قسمت نوار ابزار نرم افزار، بر روی دکمه Form List کلیک کنید تا پنجره Forms باز شود. مشاهده خواهید کرد که فرم frmPerson در این پنجره با موفقیت ایجاد شده است.

زی فریم

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

بدون استفاده از جدول
 

برای ساخت فرم بدون استفاده از جدول دیتابیس کافیست بر روی دکمه New Form By Design کلیک کنید.

صفحه دانلود زی

در پنجره Create New Form یک نام دلخواه برای فرم خود در نظر بگیرید (در این مثال نام فرم را برابر با User قرار داده ایم).

صفحه دانلود زی
حال اگر بر روی گزینه OK کلیک کنید، پیغام زیر نمایش داده خواهد شد که به معنای آن است که عملیات ساخت فرم با موفقیت انجام شده است.

صفحه دانلود زی
برای مشاهده تمام فرم های ساخته شده از قسمت نوار ابزار نرم افزار، بر روی دکمه Form List کلیک کنید تا پنجره Forms باز شود.
مشاهده خواهید کرد که فرم شما در این پنجره با موفقیت ایجاد شده است. از آنجایی که این فرم بر اساس یک جدول ساخته نشده است، هیچ گونه کنترلی نیز درون آن وجود ندارد، به عبارت دیگر یک فرم خالی است.

صفحه دانلود زی
حال می توان علاوه بر افزودن کنترل های مورد نیاز، ویژگی ها و خصوصیت های فرم را نیز در این قسمت مدیریت کرد. برای آموزش نحوه مدیریت ویژگی ها و خصوصیات فرم به مقاله ویژگی ها و خصوصیت های فرم مراجعه شود.

 

در قسمت کنترل فرم های ساخته شده بدون استفاده از جدول، حتما باید یک کنترل پنهان (Hidden control) ایجاد شود. زیرا زی فریم برای مدیریت فرم ها و ایجاد روابط لازم میان آنها، در هر فرم به یک Hidden Control نیاز دارد. برای آشنایی بیشتر با این نوع از کنترل مقاله کنترل های پنهان (Hidden control) را مطالعه کنید.

 
انواع فرم
فرم Grid

از این فرم به عنوان فرم پیش فرض در زی فریم استفاده شده است. به این صورت که هر زمان یک فرم ساخته شود، زی فریم به صورت خودکار مدل Gridform را برای آن در نظر گرفته که بر اساس نیاز می توان نوع آن را تغییر داد. به عبارت دیگر، زمانی که فرم هایGrid بارگذاری می شوند، سطرهای اطلاعاتی موجود در جدول مربوط به فرم (که اطلاعات آن قابل ویرایش هستند) به حالت Grid نشان داده خواهند شد؛ مانند فرم لیست دانش آموزان. در زی فریم، هر فرم Grid دارای یک نوار ابزار است که برای آشنایی با ابزارهای موجود در آن می توانید به آموزش نوار ابزار فرم مراجعه نمایید.

زی فریم
زی فریم
Searchform

برخی فرم ها (مانند فرم جستجوی دانش آموزان) به منظور جستجوی اطلاعات ساخته می شوند. به همین منظور مدل Searchform در زی فریم طراحی شده است تا از آن برای ساخت چنین فرمهایی استفاده شود.

 
Report

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

Binding

در بعضی موارد نیاز است تا کاربر اطلاعات اولیه را وارد نموده و سپس به ازای این اطلاعات، چندین رکورد دیگر ثبت کند. به عنوان مثال، کاربر هنگام پرکردن فرم استخدام، مشخصات اولیه را وارد می کند و بعد به هر تعداد که لازم دارد مشخصات تحصیلی را می تواند وارد کند. در این مثال فرض کنید کاربر اول ۳ رکورد برای مشخصات تحصیلی خود ثبت کند، کاربر دوم ۵ رکورد، کاربر سوم ۲ رکورد و …، در نتیجه تعداد رکورد مرتبط با مشخصات تحصیلی برای هر کاربر متغیر خواهد بود. در این گونه موارد اطلاعات اولیه یکبار در فرم Master (مشخصات اولیه کاربر) ثبت شده و تعداد رکوردهای اطلاعاتی بعدی که متغیر هستند (مانند مشخصات تحصیلی) در فرم Detail ثبت خواهند شد.

فرم های Binding به منظور ساخت چنین ساختاری طراحی شده اند. لازم به ذکر است که این نوع از فرم فقط در حالت nested کاربرد دارد.

 
StaticForm

در زی فریم به صورت پیش فرض برای فرم ها نوار ابزاری وجود دارد که شامل مواردی همچون ثبت رکورد جدید، ویرایش، حذف و … (برای آشنایی با این نوار ابزار به آموزش نوار ابزار فرم مراجعه نمایید) است. زمانی که در فرم مورد نظر، نیازی به این موارد و همچنین نیازی به نمایش Grid برای رکوردهای موجود نباشد، می توان از این مدل فرم استفاده نمود.

Tab Containers

اگر در برنامه ای نیاز به نمایش چندین فرم داخل Tab یا سربرگ های متفاوت باشد، برای ساخت اینگونه فرم های بسیار کارآمد، از مدل Tab Container استفاده خواهد شد. این حالت از فرم نیز یک مدل فرم تو در تو است.

 
Concurrency Mode

این خصوصیت دارای دو حالت فعال و غیر فعال است. زمانی که فعال باشد زی فریم به کاربران اجازه کارکردن به صورت همزمان بر روی داده‌ها و رکوردهای مربوط به این فرم را نمی دهد. به عبارتی، زمانی که یک رکورد توسط کاربر A جهت ویرایش انتخاب شود، کاربر B نمی تواند فرم مربوط به رکورد انتخابی توسط کاربر A را مشاهده نماید.

 
CRUD_Mode

مدل اجرای ذخیره سازی اطلاعات در بانک اطلاعاتی است که این مقدار به صورت پیش فرض برابر با ZFrameMode قرار داده شده است تا عملیات CRUD در بانک اطلاعاتی صورت گیرد. در زبان های برنامه نویسی CRUD برای چهار عمل اصلی به کار می رود که روی منابع ذخیره سازی مثل دیتابیس انجام می شود. این چهار عمل عبارتند از: درج اطلاعات، خواندن اطلاعات ، ویرایش و حذف اطلاعات.
Create: به معنی ایجاد می باشد. به عملیات درج/ اضافه کردن یک رکورد جدید گفته می شود.
Read: به معنی خواندن اطلاعات از پایگاه داده گفته می شود. در بعضی منابع برای حرف R از retrieve هم استفاده می شود که به معنی واکشی اطلاعات می باشد.
Update: به معنی ویرایش اطلاعات می باشد.
Delete: به معنی حذف اطلاعات از منبع داده (پایگاه داده یا دیتابیس) می باشد.
برخی فرم ها در سامانه نیازمند ذخیره کردن اطلاعات خود در بانک اطلاعاتی هستند. به همین دلیل، زی فریم برای تسهیل این فرایند ابزارهایی را در اختیار کاربر قرار داده است تا به روش دلخواه خود این فرایند ذخیره سازی را انجام دهد. همانطور که بیان شد اگر کاربر بخواهد از عملیات CRUD برای ذخیره سازی اطلاعات استفاده کند مقدار این خصوصیت را برابر ZFrameMode قرار می دهد. اما در مواردی که کاربر برای ذخیره اطلاعات در بانک اطلاعاتی بخواهد از رویه های دیتابیسی (Procedure) استفاده کند، باید این خصوصیت را برابر با مقدار Manual قرار دهد.

 
Form Data Source

این خصوصیت شامل یک کد SQL است که به صورت پیش فرض هنگام ساخته شدن یک فرم مقدار دهی می شود. این کد برای واکشی رکوردها و برای پرکردن اقلام اطلاعاتی فرم مورد نیاز است. مقدار پیش فرض:

SELECT FROM DBO.DURATION

زمانی که زی فریم به اطلاعات یک رکورد نیاز دارد با استفاده از این کد به صورت خودکار Query تکمیلی را ساخته و آن کد دستوری را به بانک اطلاعاتی منتقل می کند تا از اطلاعات خروجی برای مقداردهی کنترل های داخل فرم استفاده کند. نکته بسیار مهم برای فهم بهتر این مسئله آن است که در هر فرم یک کنترل به عنوان کلید (معمولا اولین کنترل یک فرم) در فرم و جدول وجود دارد. زمانی که کاربر در زی فریم یک رکورد را انتخاب کند (چه در GRID و یا با استفاده از API های موجود در زی فریم) زی فریم به صورت هوشمند Query تکمیلی را می سازد، که یک کوئری مشابه زیر است:

SELECT * FROM DBO.DURATION WHERE Duration_ID = 1

همچنین این کد را برای بانک اطلاعاتی ارسال کرده و منتظر دریافت جواب می ماند. زمانی که اطلاعات از سمت بانک اطلاعاتی به زی فریم داده شد، زی فریم مقادیر دریافتی را در کنترل های موجود جایگذاری می کند.

 
Grid Data Source

زمانی که یک فرم ساخته شود و این فرم از جنس Grid باشد، تمام اطلاعات جدول مربوطه در این Grid نمایش داده می شود. اما برای آنکه بتوان ستونهای دلخواه جدول نمایش داده شود یا به عبارتی برای سفارشی سازی نحوه نمایش اطلاعات داخل Grid می توان از خصوصیت Gris Data Source استفاده نمود. مقدار داخل آن یک کد Select از پایگاه داده است که اطلاعات را برای فرم مورد نظر واکشی می کند. به عبارت دیگر، تنها کافیست در این خصوصیت دستوری مشابه آنچه در SQL Server برای نمایش ستونهای دلخواه از جدول نوشته می شود، قرار داده شود.

 

اولین فیلد خروجی این دستور به عنوان کلید فرم و رکورد در نظر گرفته خواهد شد که به کاربر نمایش داده نخواهد شد. از این فیلد در Query موجود در خصوصیت Form Data Source (که در قسمت قبل توضیح داده شد) برای واکشی اطلاعات رکورد استفاده می شود.

Caption

این خصوصیت عنوان فرم را مشخص می کند. زمانی که یک فرم ساخته شود، امکان دارد از واژه های فنی و یا عبارت های غیر عامیانه استفاده شده باشد. با این خصوصیت می توان واژه یا عبارتی متعارف برای عنوان فرم تعیین نمود. برای مثال نام یک فرم ممکن است به صورت frmPurchaseRequest و عنوانی که به کاربر نمایش داده می شود (Caption) برابر با PurchaseRequestباشد. اگر بخواهیم از عبارتی مطلوب جهت نمایش به کاربر برای عنوان این فرم استفاده کنیم، در قسمت Caption خواهیم نوشت: “درخواست خرید”
در تصویر زیر عنوان “درخواست خرید” به عنوانCaption برای این فرم تعیین شده است.

زی فریم
CSSClass

در زی فریم می توان برای فرم هایی که ساخته می شود استایل و نمایش گرافیگی مورد نظر کاربر را ایجاد نمود.

 
در قسمت موتور اجرای زی فریم در آدرس /Style/Main.css ، یک فایل CSS وجود دارد که کاربر می تواند پیکره بندی گرافیکی خود را با مراجعه به این فایل توسعه دهد. زی فریم به صورت پیش فرض برای فرم های خود از table.ZformTable استفاده میکند. کاربر میتواند این ساختار را بر اساس سلیقه خود تغییر داده تا تمامی فرم های پیش فرض مطابق این ساختار تغییر کند. همچنین می تواند یک ساختار جدید بسازد و این خصوصیت را با اسم شاخص جدیدی که ساخته است، تغییر دهد.
Direction

در ساخت یک فرم، یکی از مهمترین خصوصیات آن چیدمان ذاتی فرم است. یعنی فرم ذاتا چیدمانش لاتین و چپ به راست است یا فارسی/عربی و راست به چپ است. کاربر می تواند با انتخاب بین گزینه های موجود در این خصوصیت (RightToLeft و LeftToRight)، چیدمان مورد نظر را شکل دهد.

 

در زی فریم توسعه نرم افزارهای چندزبانه نیز امکان پذیر است.

Header Tag

در برخی موارد ممکن است توسعه دهنده بخواهد از فایل های CSS و یا جاوا اسکریپت های دیگری به جز اقلام پیش فرض استفاده نماید. در این حالت، خصوصیت Header Tag کمک می کند تا او بتواند آدرس فایل های مورد نظر را در زمان Render گرفتن به قسمت Header فرم اضافه نماید.

 

آدرس فایل می تواند داخل آدرس دامین برنامه و یا یک آدرس خارجی باشد. برای مثال آدرس فایل های CSS مربوط به bootstrap .

ShowMode

اگر یک فرم از جنس Grid ساخته شده باشد، این فرم به دو صورت می تواند در اختیار کاربر قرار گیرد:
حالت اول EDIT و حالت دوم Default.
در حالت Edit زمانی که کاربر وارد یک فرم می شود، نمی تواند فرم را ببیند بلکه تنها نوار ابزار و اطلاعات داخل Grid را مشاهده می کند. همچنین زمانی که بر روی یک رکورد و یا بر روی دکمه “ثبت رکورد جدید” کلیک کند، فرم مورد نظر داخل یک پنجره جدید باز می شود. این حالت برای فرمهایی با اقلام اطلاعاتی زیاد مطلوب است.

نمایش اطلاعات Grid به صورت پیش فرض در حالت Edit

زی فریم

نمایش فرم پس از کلیک بر روی دکمه “ثبت رکورد جدید” در حالت Edit

زی فریم

در حالت Default زمانی که کاربر وارد یک فرم شود، اقلام اطلاعاتی و فرم در کنار دیگر المان ها (نوار ابزار و Grid) قابل مشاهده است. این حالت برای فرم هایی که اقلام اطلاعاتی کمی دارند پیشنهاد می گردد.

مشاهده همزمان فرم و Grid در حالت Default

زی فریم
 
Name

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

Validator

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

Grid Loading Mode

زمانی که تعداد اطلاعات مربوط به یک فرم زیاد باشد (مانند لیست تراکنش های روز در یک بانک که ممکن است به چندین هزار و یا میلیون رکورد برسد)، اگر کاربر برای نمایش اطلاعات ثبت شده در این جداول از Grid استفاده کند دچار مشکل خواهد شد. در نتیجه می بایست اطلاعات را به صورت صفحه به صفحه بارگذاری کند تا برای بانک اطلاعاتی و همچنین Application Server مشکلی در امر بارگذاری اطلاعات رخ ندهد. بنابراین علاوه بر آنکه باید مقدار این خصوصیت برابر با Dynamic باشد،Grid Count Query نیز باید مقداردهی شود. اما زمانی که حجم اطلاعات کم باشد مشکلی پیش نخواهد آمد و در نتیجه می توان مقدار این خصوصیت را static قرار داد.

Grid Count Query

همانگونه که در قسمت قبل گفته شد، در مواقعی که حجم رکوردها بالاست، باید مقدار Grid Loading Mode در حالت Dynamic قرار گیرد. در این زمان، از آنجا که سیستم درک درستی از تعداد کل رکوردها ندارد، درنتیجه نمی تواند تعداد صفحات Grid را نمایش دهد. درنتیجه نیاز به یک Query بوده تا تعیین شود که در کل چه تعداد رکورد وجود دارد و در نتیجه برای نمایش این اطلاعات به چند صفحه نیاز است. البته این اطلاعات ممکن است در قسمتهای شاخص گذاری شده داخل بانک اطلاعاتی و یا برخی از فیلدهایی که آمار و ارقام را برای کاربر ذخیره می کنند نیز باشد.
در واقع درون خصوصیت Grid Count Query یک کوئری نوشته می شود که صرفا یک عدد بر می گرداند که بیانگر تعداد رکوردهای موجود در جدول است. سیستم با استفاده از این عدد می تواند تشخیص دهد که صفحه بندی را به درستی انجام دهد.

Grid Select Text

در زی فریم زمانی که یک فرم به صورت Grid نمایش داده شده باشد، در کنار هر رکورد از Grid یک دکمه قرار خواهد گرفت که با انتخاب آن می توان آن رکورد را انتخاب نمود. با استفاده از خصوصیت Grid Select Text می توان عدد یا واژه ای داخل آن دکمه قرار داد تا هنگام نمایش، این عدد یا واژه داخل دکمه به کاربر نشان داده شود. همچنین با قرار دادن مقدار null درون این خصوصیت می توان این دکمه را حذف کرد.

 
زی فریم
 
 
Grid Session Access

در برخی موارد نیاز است تا مقدار انتخابی توسط کاربر، داخل Session Value ذخیره شود تا بر اساس آنچه کاربر انتخاب کرده است، عملیاتی صورت گیرد. به عبارت دیگر اگر بخواهیم زمانی که کاربر بر روی یک رکورد (موجود در یک گرید) کلیک و آن را انتخاب کرد، از انتخاب او آگاه شده و بر اساس این انتخاب عملیاتی صورت دهیم، می توان id رکورد انتخاب شده را در یک Session ذخیره نماییم و برای این Session یک نام دلخواه درون خصوصیت Grid Session Access قرار دهیم.
برای مثال فرض کنید بخواهیم کلید دوره مالی انتخابی توسط کاربر را داخل یک Session با نام ActiveYear ذخیره کنیم. زمانی که مقدار این خصوصیت را برابر با ActiveYear قرار دهیم، اگر کاربر بر روی Grid نمایان شده در این فرم کلیک کند، مقدار موجود در کلید فرم به داخل Session ActiveYear انتقال پیدا می کند، که در ادامه می توان سازوکار برنامه را با استفاده از این مقدار پیش برد.

CacheKey

کش کردن اطلاعات در داخل حافطه Application Server، یکی از مهمترین کارهایی است که زی فریم قادر به انجام آن است تا هر بار که کاربر به آن داده ها نیاز دارد، لزومی به واکشی داده ها از سمت بانک اطلاعاتی نباشد. درنتیجه سامانه چابکتر شده و سریع تر پاسخگوی کاربر خواهد بود. زمانی که این خصوصیت مقدار گیرد (این مقدار از نوع رشته ای بوده و یک نام یکتا بر اساس اقلام داده است)، اگر داده ای داخل Cache تعریف شده درون سیستم وجود داشته باشد، دیگر سیستم به دنبال واکشی اطلاعات از بانک اطلاعاتی نخواهد رفت و از همین اطلاعات بارگذاری شده استفاده می کند.

البته می توان داخل سیستم روال هایی نیز برای از بین بردن اطلاعات و ایجاد نیاز به بارگذاری مجدد داده تعریف نمود.

Package

این خصوصیت تنها در زمان توسعه نرم افزار کارایی داشته و برای دسته بندی فرم ها استفاده می شود. زمانی که تعداد فرم ها در لایه توسعه (Development) زیاد باشد، نیاز به پوشه بندی فرم ها نیز محسوس خواهد بود. به همین دلیل داخل ZIDE گزینه ای برای انجام این پوشه بندی قرار داده شده است. جهت مدیریتPackage ها، کاربر می تواند از منوی زیر اقدام کرده و یا از کلید میانبر Ctrl+ALT+Shift+P استفاده کند.

Design >> Package Management

در این قسمت کاربر می تواند Package های مورد نیاز را ساخته و فرم ها را به دسته بندی های مورد نظر اختصاص دهد.

Form Pattern

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

زی فریم
 
Custom RuleID

امکان سفارشی سازی فرم ها یکی از مهمترین توانمندی های زی فریم است. کاربر با مقداردهی این خصوصیت (مقدار ورودی فقط باید از جنس عدد باشد برای مثال 1001) می تواند داخل موتور اجرای زی فریم رفتارها و رخدادهای این فرم را با کد های جاوا مدیریت نماید. در قسمت آموزش های پیشرفته زی فریم به این بخش بیشتر پرداخته شده است.

 
زی فریم
 
Form ID و GUID
Form ID

این خصوصیت قابلیت تغییر ندارد و تنها جهت اطلاع رسانی به کاربر است. مقدار عدد موجود در این خصوصیت یک کد منحصر به فرد و یکتا است که ساختار زی فریم به صورت خودکار به این فرم اختصاص می دهد.

 
GUID

مقدار این خصوصت منحصر به فرد و یکتا بوده و توسط زی فریم به صورت خودکار به هر فرم اختصاص داده می شود. این مقدار در امر پشتیبان گیری و مدیریت دانش، Import / Export و استفاده از یک فرم در چند پروژه کاربرد دارد.

Report Rule ID

در برخی مواقع کاربر برای بعضی از فرم ها گزارشهایی مانند لیست دانش آموزان ترم جاری، گزارش تراز مالی و غیره (برای آشنایی با نحوه ساخت گزارش به آموزش ساخت گزارش در زی فریم مراجعه نمایید) را طراحی می کند. این خصوصیت به کاربر اجازه می دهد تا کد فرم گزارش را با فرم جاری مرتبط سازد.

Authentication

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

Version

این خصوصیت در قسمت مدیریت نسخه برنامه کاربرد دارد و توسعه دهندگان می توانند فرم ها را براساس نسخه های برنامه خود دسته بندی نمایند.

نوع داده ای که در این خصوصیت قرار می گیرد، عدد است.

 
Workflow

این خصوصیت نمایانگر آن است که فرم جاری در کدام منو و زیرمنو قرار داده شده است.

مدیریت رویداد ها در فرم

با کلیک راست بر روی یک کنترل در فرم، منوی زیر ظاهر شده که با استفاده از گزینه های موجود در آن می توان برخی از خصوصیات کنترل را تغییر داد و موارد مربوط به رخدادهای کنترل را نیز مدیریت کرد.

زی فریم
 
گزینه Show Form

این گزینه تنها زمانی مشخص می شود که توسعه دهنده بر روی کنترلی از نوع فرم کلیک راست نماید. با استفاده از این گزینه، فرم مرجع اختصاص یافته به این کنترل برای توسعه دهنده در قسمت Navigation Form در پنل فرم ها ظاهر می شود.

 
زی فریم
 
گزینه On Change Event

زمانی که در برنامه نیاز باشد با کلیک کاربر بر روی یک دکمه، مقدار داخل یک کنترل تغییر کند، و یا فرآیندی در بانک اطلاعاتی صورت پذیرد از گزینه On Change Event استفاده می شود. برای نمونه فرض شود دو کنترل به شکل زیر در یک فرم وجود دارد و هدف آن است که با کلیک بر روی دکمه، مقدار عدد 2 در TextBox نمایش داده شود.

 
زی فریم

برای این کار باید بر روی دکمه کلیک راست نمود و سپس گزینهOn Change Event انتخاب شود.

زی فریم
 

بعد از انتخاب گزینه OnChange Event، پنجره زیر باز می شود.

زی فریم
 
 

در این پنجره باید کنترلی که نیاز است هنگام کلیک بر روی دکمه مقدارش تغییر کند، از لیست سمت چپ انتخاب شود. سپس یک Query باید نوشته شود که خروجی آن مقداری است که باید در کنترل مقصد ریخته شود. سپس ذخیره کرده و از پنجره خارج شوید.

 
زی فریم

با استفاده از این ابزار، برای سامانه تعریف شد که اگر بر روی دکمه کلیک شد مقدار txt1 را برابر با عدد 2 قرار دهد.

در صورتی که تنها نیاز باشد که فقط سامانه کاری را انجام دهد و نیازی به نمایش مقدار خروجی نباشد (رویه مقدار خروجی نداشته باشد)، باید بر روی فرم، یک کنترل از جنس Hidden ساخته شده و نام و عنوان آن را برابر با void قرار داد. سپس برایOnChange Event دکمه مورد نظر، در حالی که کنترلvoid به عنوان کنترل مقصد انتخاب شده است، Query مورد نظر نوشته شود.

گزینه Text Mode

این گزینه تنها برای کنترل های Textbox کاربرد داشته و توسعه دهنده می تواند کنترل مورد نظر را بر اساس استانداردهای HTML5 تغییر دهد. در این ساختار کنترل متن می تواند فرمت های زیر را به خود گیرد.

 
زی فریم

با انتخاب گزینه مورد نظر، استایل کنترل Textbox مطابق با این انتخاب تعیین خواهد شد.

 
HTML Element

با استفاده از این گزینه می توان خصوصیات کنترل انتخابی را به صورت InLine تغییر داد. با کلیک بر روی این گزینه پنجره ای باز می شود که تمامی اتریبیوت های مرتبط با تگ های HTML درون آن قابل انتخاب هستند. با انتخاب هر یک از آنها می توان مقدار دلخواه را به آن اتریبیوت اختصاص داد.

HTML CSS

با استفاده از این گزینه می توان خصوصیات گرافیکی کنترل انتخابی را به صورت InLine تغییر داد. با کلیک بر روی این گزینه پنجره ای باز می شود که تمامی اتریبیوت های مرتبط با CSS درون آن قابل انتخاب هستند. با انتخاب هر یک از آنها می توان مقدار دلخواه را به آن اتریبیوت اختصاص داد.

 
Java Script Function Call

در زی فریم می توان با استفاده از این ساختار به یک کنترل دیگر در فرم دسترسی داشت.

@controlName@.ControlProperty
مشاهده Form
مشاهده فرم

برای مشاهده اجزای تشکیل دهنده یک فرم کافیست در پنجره Forms بر روی علامت + که در کنار فرم مورد نظر قرار گرفته است، کلیک کنید.

زی فریم

همانطور که مشاهده می شود برای ساخت و مدیریت فرم در زی فریم بخش های متفاوتی به شرح زیر تعبیه شده است که به عنوان اجزای تشکیل دهنده فرم در نظر گرفته می شوند.
1) کنترل های فرم
2) نوار ابزار فرم
3) مدیریت کوئری های بانک اطلاعاتی مربوط به فرم
4) فرم های فرزند
5) مدل HTML فرم جهت طراحی ظاهر آن
6) خروجی گرفتن برای پلتفرم VUE JS
7) فرایندهای مربوط به اطلاعات
8) همکاری با سرویس های خارجی
9) مدیریت جاوا اسکریپت مربوط به فرم
10) مدیریت دسترسی ها به فرم
11) مشاهده خروجی
12) استخراج کد سفارشی و پیکره بندی فرم با زبان جاوا (تنها در برخی فرم ها نیاز است)

Controls

زمانی که یک فرم بر اساس یک جدول ساخته شود (برای آشنایی با نحوه ساخت فرم بر اساس جدول به آموزش ساخت فرم مراجعه شود)، زی فریم به صورت خودکار کنترل های این فرم را مطابق با فیلدهای جدول می سازد. برای دسترسی به این کنترل ها و نیز ساختن کنترل های جدید می توان به قسمت Controls مراجعه نمود. در زی فریم کنترل های متنوعی مانند TextBox، RadioButtonو CheckBox، Image، DataCombo و غیره برای سفارشی سازی یک فرم در نظر گرفته شده است.

زی فریم

Button Rule

در فرم هایی که به صورت Grid هستند، نوار ابزاری مانند تصویر زیر مشاهده می شود.

زی فریم

در زی فریم می توان این نوار ابزار را بر اساس نوع کسب وکار سفارشی سازی کرد. برای انجام این کار ابتدا باید به قسمت Button Rule مراجعه و سپس دکمه ی مورد نظر در منوی فرم را حذف و یا اضافه نمود.

زی فریم

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

زی فریم

Action Query

یکی از مهمترین اجزای زی فریم قسمت مدیریت Query های فرم است که با کلیک بر روی Action Query می توان به این قسمت دسترسی یافت. در این قسمت می توان کوئری های ثبت، ویرایش و حذف اطلاعات در یک فرم را مدیریت نمود.

زی فریم

برای هر فرم چنین گزینه ای وجود دارد که با کلیک بر روی آن، پنجره زیر ظاهر می گردد.

زی فریم

در زی فریم به صورت پیش فرض سه حالت اصلی ذخیره، ویرایش و حذف برای هر فرم در نظر گرفته شده است. زمانی که یک فرم ساخته شد، با استفاده از این قسمت می توان کدهای مربوط به هرکدام از حالات “ثبت، ویرایش و حذف” را در لحظه ایجاد نمود. به همین منظور، در این قسمت دکمه ای به شکل زی فریم قرار داده شده است که با استفاده از آن سیستم به صورت خودکار کدهای مربوط به Insert ,Update, Delete را می نویسد. تنها کافیست به هر یک از تب های مربوط به ثبت، ویرایش و حذف رفته و بر دکمه زی فریم کلیک کنید.
توجه داشته باشید که اگر می خواهید از این امکان جهت نوشتن کدهای CRUD استفاده کنید باید خصوصیت CRUD_Mode فرم ها در حالت زی فریم قرار داده شده باشد تا به راحتی کوئری های ثبت، ویرایش و حذف مرتبط با کنترلهای آن فرم تنها با کلیک بر روی یک دکمه به صورت خودکار ایجاد شود.
اما چنانچه بخواهید برای ثبت، ویرایش و حذف اطلاعات از procedure استفاده کنید باید تنظیمات مربوط به CRUD_Mode در حالت Manual قرار داده شود.
کد زیر نمونه ای از کدی است که سیستم برای ثبت اطلاعات یک فرم درج می کند.

 

INSERT INTO [DBO].[PARTIES_ENTITIES]
(
[PARTIES_ENTITIES_NAME]
, [LT_ENTITIES_CLASS_ID]
, [LT_BUSINESS_PARTNER_CLASS_ID]
, [LT_WORKGROUP_ID]
, [DESCRIPTION]
, [ACTIVE]
, [CREATION_DATE]
, [CREATION_USER_ID]
, [EMPLOYEEID]
)
VALUES
(
@STRPARTIES_ENTITIES_NAME
, @INTLT_ENTITIES_CLASS_ID
, @INTLT_BUSINESS_PARTNER_CLASS_ID
, @INTLT_WORKGROUP_ID
, @STRDESCRIPTION
, @BLNACTIVE
, @STRCREATION_DATE
, @INTCREATION_USER_ID
, @INTEMPLOYEEID
)

 

در کد فوق برای مقادیر ورودی از تعدادی پارامتر استفاده شده است که هرکدام از آنها نمایانگر مقدار یک کنترل بر روی فرم است (البته می توان از مقادیر ثابت نیز استفاده نمود.)
کد زیر یک نمونه کد برای ویرایش اطلاعات می باشد که توسط کاربر سفارشی شده است.

 

UPDATE [PARTIES_ENTITIES]

SET
[PARTIES_ENTITIES_NAME] = @STRPARTIES_ENTITIES_NAME

, [LT_BUSINESS_PARTNER_CLASS_ID] = @INTLT_BUSINESS_PARTNER_CLASS_ID

, [LT_WORKGROUP_ID] = @INTLT_WORKGROUP_ID

, [DESCRIPTION] = @STRDESCRIPTION
,[ACTIVE] = @BLNACTIVE

WHERE
[PARTIES_ENTITIES_ID] = @INTPARTIES_ENTITIES_ID

نمونه کد سیستم برای حذف اطلاعات به شرح زیر می باشد که توسط کاربر سفارشی شده است.

 

DELETE FROM [DBO].[PARTIES_ENTITIES]

WHERE [PARTIES_ENTITIES_ID] = @INTPARTIES_ENTITIES_ID

در زیر می توان یک نمونه کد برای حذف اطلاعات که با استفاده از Procedure توسط کاربر نوشته شده است را مشاهده نمود.

EXEC [dbo].[ZDEV_Validate_Entity_Delete] 2, @INTPARTIES_ENTITIES_ID

 
Child Form

فرض کنید در یک پروژه فهرستی از دانش آموزان موجود است. برای مدیریت این فهرست که با یک جدول در ارتباط است، یک فرم وجود خواهد داشت. برای هر دانش آموز نیز سه بخش مدیریت مالی، مدیریت شرایط تحصیلی و ارتباط با والدین مورد نیاز است. با امکانی که child form در اختیار توسعه دهنده می گذارد، می توان بعد از انتخاب هر دانش آموز برای ویرایش (پس از کلیک بر روی دکمه ویرایش) در انتهای فرم سه دکمه مشاهده نمود که هر کدام از این دکمه ها به فرمی برای مدیریت آن قسمت منتهی می شود. برای ایجاد چنین ساختاری ابتدا باید گزینهChild Form انتخاب شود.

 
زی فریم

پس از انتخاب این گزینه پنجره زیر ظاهر می گردد.

 
زی فریم

در این بخش برای ساخت Child Form باید بر روی دکمه New (در بالای پنجره فوق در قسمت سمت چپ) کلیک نموده و در فیلد Child Form Name نامی لاتین برای این فرایند در نظر گرفته شود. در قسمت Caption می توان عنوانی به زبان بهره برداران نرم افزار ( در صورتی که بهره برداران ایرانی هستند، زبان فارسی انتخاب شود ) متناسب با کسب و کار مورد نظر درج نمود. این نام برای دکمه مورد نظر استفاده خواهد شد.
در قسمت مربوط بهReference Form باید فرمی که برای مدیریت بخش مورد نظر طراحی شده است انتخاب گردد ( برای مثال فرم مدیریت مالی دانش آموزان که قبلا ایجاد شده است ). بعد از انتخاب فرم مقصد باید از میان گزینه های موجود درلیست Key Name، فیلد مورد استفاده برای ارتباط با فرم مقصد انتخاب گردد ( درون Key Name فهرستی از کنترل های موجود در فرم حال حاضر وجود دارد ) تا در قسمت Query از مقدار این فیلد استفاده شود.
در قسمت Load Query باید کدی درج شود که فهرست اطلاعات مورد نظر را بر اساس مقدار فیلد انتخاب شده نمایش دهد. کد زیر، یک نمونه کد برای Load Query در قسمت Child Form است.

 
SELECT
DBO.COMPANY.COMPANY_ID,
DBO.COMPANY.DATE_OF_ESTABLISHMENT,
DBO.COMPANY.REGISTER_DATE,
DBO.COMPANY.REGISTERNUMBER
FROM
DBO.COMPANY
WHERE
PARTIES_ENTITIES_ID =

توجه شود که این Query حتما باید به یک مساوی ختم شود تا زی فریم بتواند برای تکمیل مقدار Query، از مقدار موجود در کنترلی که به عنوان Key Name انتخاب شده است، استفاده کند.

 

بسیار مهم در ساختار فرم آن است که حتما در فرم مقصد (فرم Child) یک کنترل از جنس Hidden وجود داشته باشد تا سیستم اطلاعات مربوط به فیلدی که باعث ارتباط می شود را داخل این کنترل ذخیره کند.

 
زی فریم

در تصاویر زیر نمایی از یک برنامه کاربردی و مدیریتChild Form موجود در آن و نمایی از خروجی نهایی Child Form ها درون فرم اصلی نمایش داده شده است.

 
زی فریم
 
 
زی فریم
 
 
Screen Design

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

 
زی فریم

اما ممکن است توسعه دهنده ظاهر گرافیکی متفاوتی نسبت به حالت پیش فرض مد نظر داشته باشد و نیاز به اعمال تغییراتی در نحوه نمایش فرم ها احساس کند. به همین دلیل، در زی فریم قابلیتی به نام Screen Design در نظر گرفته شده است تا توسعه دهنده بتواند ظاهر فرم های خروجی را مطابق با سلیقه خود طراحی نماید. برای انجام این کار باید در قسمت زیر منوهای فرم، گزینه Screen Design انتخاب شود.

زی فریم

Vue Design

زی فریم برای برنامه نویسان Vue JS امکانی فراهم کرده است تا بتوانند از قابلیت های زی فریم در زمینه کدنویسی بک اند استفاده کنند. به همین منظور پس از آنکه توسعه دهنده فرم های مورد نظر خود را درون زی فریم ساخت می تواند این فرم ها را به صورت کدهای HTML و جاوا اسکریپت دریافت کند و سپس ظاهر فرم را به دلخواه خود با تکنولوژی Vue طراحی کند. به همین منظور کافی است تا پس از ساختن فرم، در زیرمجموعه های این فرم بر روی Vue Design کلیک شود تا کدهای مورد نیاز در اختیار توسعه دهنده قرار گیرد.

زی فریم

 
Dynamic Rule

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

 
زی فریم
 

برای مثال اگر گزینه اول مقدارش یک بود کنترل دوم نوعش TextBox باشد و اگر گزینه اول مقدارش 2 بود کنترل دوم نوعش Search Text Box باشد. توسعه دهنده با استفاده از تعریف شرایط متنوع از داده ها می تواند مدل خروجی را بر اساس سلیقه خود و همچنین موارد تعریف شده در کسب و کار تغییر دهد. برای آشنایی بیشتر با نحوه عملکرد Dynamic Rule به آموزش مدیریت کنترل ها به صورت پویا (DynamicRule) مراجعه نمایید.

 
زی فریم
Service Collaboration
 

در بسیاری از موارد فرم هایی که ساخته می شوند بر اساس یک جدول درون دیتابیس عمل نمی کنند. این گونه فرم ها مبتنی بر سرویس SOAP بوده و عملیات CRUD (Create, Read, Update, Delete) در آنها با استفاده از سرویس صورت می گیرد. برای مدیریت سرویس این گونه فرم ها قسمتی تحت عنوان Service Collaboration در زی فریم تعبیه شده است.

 
زی فریم

 

JavaScript Code

یکی از قسمت های مهم در زی فریم داشتن قابلیت استفاده از جاوا اسکریپت و JQuery در فرم ها است. بنابراین ضروری است که توسعه دهندگان با کدها و توابع جاوا اسکریپت و JQuery از قبل آشنایی داشته باشند. اگرچه برای یادگیری کار با زی فریم و تولید نرم افزارهای بسیار ساده نیازی به دانستن توابع جاوا اسکریپت نیست، اما برای تولید نرم افزارهای سفارشی و پیچیده با زی فریم، توسعه دهنده باید با توابع جاوا اسکریپت آشنایی کافی باشد. زیرا بخش بسیار زیادی از نیازمندیهای توسعه دهنده هنگام تولید نرم افزار با دانش جاوا اسکریپت بر طرف می شود.

 
 
زی فریم

با کلیک بر روی زیرمنوی Java Script Code پنجره ای باز می شود که درون آن می توان به نوشتن کدهای جاوا اسکریپت همچون توابع، کلاس و هر آن چیزی که در جاوا اسکریپت به آن نیاز است، پرداخت. علاوه بر این، توسعه دهنده می تواند از توانمندیهای JQuery نیز در این قسمت بهره مند شود. در تصویر زیر یک نمونه کد جاوا اسکریپت نوشته شده در پنجره Java Script Code نمایش داده شده است.

 
زی فریم
 
 

مزیت نوشتن توابع جاوا اسکریپ دلخواه در این قسمت آن است که می توان از این توابع در فرم و رخدادهای جاوا اسکریپتی تمامی کنترل های فرم به دفعات استفاده نمود.

Edit Access

یکی از قسمت های بسیار کاربردی در زی فریم، قسمت مدیریت دسترسی کاربران به فرم ها است.

 
زی فریم

زمانی که بر روی این گزینه کلیک شود، پنجره زیر ظاهر می گردد. در این قسمت می توان لیست گروه های کاری موجود در سامانه را به همراه لیست کنترل های موجود در فرم مشاهده نمود.

 
زی فریم

در این قسمت می توان برای هر گروه کاری مشخص کرد که به هر یک از کنترل ها چه سطح از دسترسی (دسترسی از نوع قابل مشاهده و یا قابل ویرایش) داشته باشد. با انتخاب یک گروه کاری و کلیک بر روی دکمه Grant All، سامانه اجازه دسترسی به تمام گزینه های فرم را به آن گروه کاری می دهد. همچنین با کلیک بر روی دکمه Revoke All دسترسی تمام قسمت ها از آن گروه کاری گرفته خواهد شد و اطلاعات نیز در سیستم ذخیره می گردد. اما اگر توسعه دهنده بخواهد دسترسی را برای هر گروه کاری سفارشی سازی کند، باید گزینه های مورد نظر (بر اساس نوع دسترسی) را تیک زده و سپس بر روی دکمه Custom کلیک کند تا سامانه بر همین اساس دسترسی ها را مقرر نماید.

 
 

هنگام تعیین مدل دسترسی برای یک فرم، حتما باید خصیصه ی Authentication مربوط به فرم را برابر باTrue قرار داد تا سامانه تغییرات انجام شده را برای مدیریت دسترسی اعمال کند.

همچنین برای سفارشی سازی دکمه های موجود در نوار ابزار فرم نیز می توان از گزینه های زیر استفاده نمود و آنها را بر اساس دسترسی کاربر تغییر داد.

 
زی فریم
 
Preview Form

یکی از ویژگی های زی فریم آن است که وقتی در آن یک فرم ساخته می شود می توان همزمان با تغییرات اعمال شده در آن، نتیجه را در خروجی مشاهده نمود. برای این کار تنها کافیست تغییرات را ذخیره کرده و از طریق Cach Management سیستم را کش کرد تا تغییرات اعمال شده را در خروجی مرورگر مشاهده نمود. اما در بسیاری از موارد توسعه دهنده می خواهد نتیجه تغییرات را حتی از این هم سریع تر مشاهده کند. به همین دلیل در زی فریم با استفاده از گزینه Preview From می توان بدون کش کردن، تغییرات اعمال شده در فرم را مشاهده نمود. تنها کافیست مرورگر Firefox بر روی سیستم نصب شده باشد تا بتوان خروجی فرم را درون زی فریم به سرعت مشاهده نمود.

 
زی فریم
 
Java Rule

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

 
زی فریم
 
نوار ابزار فرم لیست
 

در پنجره Forms می توان فهرستی از تمام فرمهای موجود در اپلیکیشن را مشاهده کرد، که در این پنجره یک نوار ابزار قرار داده شده است تا توسعه دهنده بتواند با سهولت بیشتری به مدیریت فرم ها بپردازد.

زی فریم

به عنوان مثال، توسعه دهنده می تواند یک شورتکات از فرم های پرکاربرد خود را در قسمت temp قرار دهد تا سریع تر به آنها دسترسی یابد. در ادامه کاربرد تک تک ابزار موجود در این نوار بررسی شده است.

 

Refresh: اولین گزینه در نوار ابزار لیست فرمها به منظور refresh کردن استفاده می شود.

زی فریم

 

New Form by Table: دومین گزینه به منظور ساخت فرم بر اساس یک جدول ساخته شده در دیتابیس استفاده می شود؛ تا کنترلهای آن طبق فیلدهای جدول مذکور ساخته شود.

زی فریم

 

New Form by Design: سومین گزینه به منظور ساخت یک فرم دلخواه استفاده می شود که تمام کنترل های آن طبق سلیقه توسعه دهنده ساخته می شود.

زی فریم

 

Delete Form: از این دکمه برای حذف کردن فرم دلخواه استفاده می شود. به این نکته توجه شود که اگر یک فرم به یک workflow اختصاص داده شده باشد دیگر قابل حذف کردن نیست. برای حذف کردن آن ابتدا باید آن فرم را از زیرمجموعه workflow خارج کرد.

زی فریم

 

Export Form: توسعه دهندگان می توانند فرم های ساخته شده در سیستم خود را به صورت یک فایل xml به یکدیگر انتقال دهند. برای این کار آن فرم را Export می کنند تا دیگر توسعه دهندگان بتوانند فایل xml ساخته شده را import کنند.

زی فریم

 

Import Form: زمانی که توسعه دهندگان بخواهند فرم های ساخته شده در سیستم خود را به صورت فایل به یکدیگر انتقال دهند می توانند پس از Export کردن آن فرم، فایل ساخته شده که یک فایل xml است را با استفاده از گزینه Import Form درون پروژه خود وارد کنند.

زی فریم
 

Lock Define: این دکمه ابزاری را در اختیار کاربر ادمین (فقط ادمین) قرار می دهد تا بتواند با قفل کردن بخشهای مختلف یک فرم، ایجاد تغییر در آن را برای تمامی توسعه دهندگان ناممکن سازد. به عنوان مثال ممکن است ادمین بخواهد فرم هایی که طراحی و توسعه آنها به اتمام رسیده است را نهایی کند و اجازه تغییر در آنها برای هیچ یک از توسعه دهندگان را ندهد.

زی فریم

برای قفل کردن بخش های یک فرم ابتدا بر روی آیکن Define Lock کلیک کنید تا آیکن قفل باز تبدیل به قفل بسته شود.

زی فریم

حال اگر بر روی هر یک از بخش های فرم کلیک کنید، آن بخش قفل شده و دیگر در دسترس دیگر توسعه دهندگان نخواهد بود. همان طور که در تصویر زیر مشاهده می شود، قسمت های Controls و Button Rule برای تمامی توسعه دهندگان قفل شده است.

زی فریم

حال چنانچه بخواهیم بخشهای قفل شده را دوباره باز کرده و در دسترس دیگر توسعه دهندگان قرار دهیم باید ابتدا از منوی Server وارد قسمت Lock Management شده و بر روی دکمه Delete Development Lock کلیک کنیم تا تمامی قسمتهایی که قفل شده اند باز شوند.

زی فریم

 

چنانچه بخواهیم تنها یکی از قسمتها (به عنوان مثال Button Rule) از حالت قبل خارج شود، ردیفی که متعلق به قفل Button Rule فرم مورد نظر است را انتخاب کرده و بر روی گزینه unlock object کلیک می کنیم.

Not Used Forms: با زدن این دکمه تنها فرمهایی درون پنجره Forms نمایش داده می شوند که به هیچ یک از workflowها اختصاص داده نشده اند.

زی فریم
 

Add to Temp Access: در برخی پروژه ها تعداد فرمها بسیار زیاد است به طوری که ده ها و یا صدها فرم در آن وجود دارد. اگر توسعه دهنده به برخی از این فرمها بیش از دیگر فرمها نیاز داشته باشد، آنگاه به منظور سهولت دسترسی، وجود یک لیست موقت می تواند بسیار کمک کننده باشد. Temp Access یک مخزن برای نگهداری موقت فرمها است که با استفاده از دکمه Add to Temp Access توسعه دهنده می تواند فرمهای دلخواه را که از آنها به دفعات استفاده می کند به آن اضافه کند (توجه شود که در این مخزن هیچ فرمی ذخیره نمی شود، تنها یک shortcut از فرمها درون آن ایجاد می شود.)

زی فریم

 

Remove From Temp Access: در برخی پروژه ها تعداد فرمها بسیار زیاد است به طوری که ده ها و یا صدها فرم در آن وجود دارد. اگر توسعه دهنده به برخی از این فرمها بیش از دیگر فرمها نیاز داشته باشد، آنگاه به منظور سهولت دسترسی، وجود یک لیست موقت می تواند بسیار کمک کننده باشد. Temp Access یک مخزن برای نگهداری موقت فرمها است که با استفاده از دکمه Remove From Temp Access توسعه دهنده می تواند فرمهایی که دیگر چندان کاربرد ندارند را از درون این مخزن حذف کند (توجه شود که در این مخزن هیچ فرمی ذخیره نمی شود، تنها یک shortcut از فرمها درون آن ایجاد می شود که با حذف آن shortcut عملا به آن فرم آسیبی نمی رسد.)

زی فریم

 

Load Temp Access Form: در برخی پروژه ها تعداد فرمها بسیار زیاد است به طوری که ده ها و یا صدها فرم در آن وجود دارد. اگر توسعه دهنده به برخی از این فرمها بیش از دیگر فرمها نیاز داشته باشد، آنگاه به منظور سهولت دسترسی، وجود یک لیست موقت می تواند بسیار کمک کننده باشد. Temp Access یک مخزن برای نگهداری موقت فرمها است که با استفاده از دکمهLoad Temp Access Form توسعه دهنده می تواند لیست این فرمها را مشاهده کند (توجه شود که در این مخزن هیچ فرمی ذخیره نمی شود، تنها یک shortcut از فرمها درون آن ایجاد می شود.)

زی فریم

 

Clear Temp Access: در برخی پروژه ها تعداد فرمها بسیار زیاد است به طوری که ده ها و یا صدها فرم در آن وجود دارد. اگر توسعه دهنده به برخی از این فرمها بیش از دیگر فرمها نیاز داشته باشد، آنگاه به منظور سهولت دسترسی، وجود یک لیست موقت می تواند بسیار کمک کننده باشد. Temp Access یک مخزن برای نگهداری موقت فرمهایی است که در یک پروژه بسیار پرکاربردند. اما زمانی که دیگر نیازی به این فهرست نباشد، توسعه دهنده می تواند با استفاده از دکمهClear Temp Access لیست این فرمها را پاک کند تا مخزن خالی شود (توجه شود که در این مخزن هیچ فرمی ذخیره نمی شود، تنها یک shortcut از فرمها درون آن ایجاد می شود. بنابراین با خالی کردن مخزن هیچ فرمی حذف نشده است و فقط shortcut آنها حذف شده است.)

زی فریم

جریان کار چیست؟

در قسمت نوار ابزار زی فریم ابزاری با نام Workflow وجود دارد که با استفاده از آن می توان فرم های ساخته شده با زی فریم را دسته بندی و نمایش آنها را مدیریت کرد. در هر پروژه کاری بسته به نیاز، ده ها و یا شاید صدها فرم وجود داشته باشد که در صورت عدم دسته بندی، استفاده از آنها بسیار دشوار خواهد شد. از طرف دیگر، از آنجایی که ممکن است در یک پروژه، فرمهایی ساخته شوند که هنوز زمان انتشار آن نرسیده است، تنها فرمهایی نمایش داده می شوند که درون یکی از این دسته بندی ها (Workflow) قرار گرفته باشند. می توان workflow را به یک درخت تشبیه کرد که دارای چند شاخه اصلی و هر شاخه اصلی دارای چند شاخه فرعی است که فرم ها به عنوان میوه های این درخت حتما باید به یک شاخه متصل باشند.

 

برای نمایش دادن فرم در خروجی نرم افزار، فرم مورد نظر باید حتما به یک Workflow اختصاص داده شده باشد.

برای دسته بندی فرم ها نیاز است تا فرم ها ابتدا به یک یا چند دسته کلی تقسیم شوند که به آن سر دسته گفته می شود. سپس می توان هر کدام از آن سردسته ها را به دسته های جزئی تر یا زیردسته نیز تقسیم نمود. در پروژه های بزرگ که دارای ده ها و یا صد ها فرم هستند، این نوع دسته بندی گریز ناپذیر است. در زی فریم برای ایجاد یک سر دسته از Top Workflow و برای ساخت زیر دسته و ایجاد زیر مجموعه از Child Workflow استفاده می شود.

زی فریم
 
ساخت Top Workflow

پروژه ای را در نظر بگیرید که در آن تعدادی فرم وجود دارد و کاربر باید بتواند آنها را در خروجی نرم افزار مشاهده کند. برای این کار ابتدا باید یک Workflow ساخته شود تا فرم های مورد نظر را بتوان به آن اختصاص داد. به عنوان مثال یک فرم با نام frmPerson را در نظر بگیرید که می خواهیم آن را به یک Workflow با نام “تعاریف پایه” اختصاص دهیم و همچنین، کاربر ادمین (Admin) تنها کسی باشد که قادر به مشاهده این فرم است.

 

اگر به یک کاربر دسترسی به workflow داده نشود، Workflow در خروجی برنامه برای آن کاربر قابل مشاهده نخواهد بود.

در گام اول باید یک Workflow با نام “تعاریف پایه” ایجاد شود. برای این کار، بر روی دکمه Workflow Management کلیک کنید تا پنجره Workflow Management باز شود.

زی فریم

در این پنجره می توان به تعداد دلخواه Workflow به صورت ساختار درختی تعریف کرد.

زی فریم
 
 

برای نمایش فرم ها نیاز به حداقل یک Workflow است تا فرم ها به آن اخصاص داده شود.

برای ایجاد یک Workflow جدید درون این پنجره کلیک راست کنید و از میان گزینه های موجود بر روی Add Top Workflow کلیک کنید.

زی فریم

در پنجره باز شده، یک نام انگلیسی در قسمت Workflow Name و یک نام فارسی در قسمت Caption in Application به دلخواه خود وارد کنید (در این مثال نام آن را Define و کپشن آن را برابر با “تعاریف پایه” قرار دادیم.)

زی فریم

سپس بر روی دکمه OK کلیک کنید تا این Workflow ایجاد شود.
توجه داشته باشید که برای هر Workflow لازم است حتما تعیین شود که چه کسانی قادر به مشاهده آن هستند. برای این کار، بر روی Workflow مورد نظر کلیک راست کرده و از گزینه های موجود گزینه User Access را انتخاب کنید تا پنجره Workflow UserGroup Access باز شود.

زی فریم

در پنجره باز شده می توان تمامی گروه های کاری تعریف شده را مشاهده نمود. برای مثال گروه کاری (Admin) را انتخاب کنید و بر روی گزینه OK کلیک کنید.

زی فریم
 

در صورت وجود چند گروه کاری می توان دسترسی به Workflow را در اختیار چند گروه کاری قرار داد.

Child Workflow

اگرچه می توان فرم ها را به طور مستقیم به یک Top Workflow اختصاص داد، در عین حال می توان به منظور نظم دهی بیشتر، یک Child یا همان زیر مجموعه نیز برای یک Workflow در نظر گرفت. برای این کار بر روی Workflow مورد نظر کلیک راست کرده و گزینه Add Child Workflow را انتخاب کنید.

زی فریم

مانند قبل، نام و کپشن دلخواه خود را برای Child Workflow وارد کنید (در این مثال از واژه entity برای نام و از واژه “موجودیت” برای کپشن استفاده شده است).

زی فریم

همانطور که پیش از این نیز گفته شد، برای به نمایش در آمدن Child Workflow هم باید به آن دسترسی های لازم داده شود. برای این کار نیز مانند Workflow، بر روی Child Workflow کلیک راست کرده و گزینه User Access را انتخاب کنید.

زی فریم

سپس از پنجره Workflow UserGroup Access کاربر ادمین (Admin) را انتخاب کرده و گزینه OK را انتخاب کنید (بسته به نوع پروژه خود می توانید هر یک از گروه های کاری را انتخاب کنید و یا حتی چندین پروژه کاری را همزمان انتخاب کنید.)

زی فریم

یک بار عملیات Clear Cache Data را از طریق Application cache management انجام دهید. اکنون می توان Workflow و زیر مجموعه آن Child Workflow را در خروجی برنامه و فقط توسط اعضای گروه های کاری که به آنها دسترسی داده شده (در این مثال کاربرانی که عضو گروه کاری ادمین (Admin) هستند) مشاهده نمود.

زی فریم

همانطور که مشاهده می شود درون این دو Workflow هیچ فرمی دیده نمی شود. برای آن که بتوان فرم مورد نظر را در خروجی نرم افزار مشاهده کرد، لازم است تا آن فرم را به یک Workflow اختصاص دهیم.

نوار ابزار
ابزار مدیریت داده ها

در نرم افزار زی فریم هر فرمی که ساخته می شود، به صورت پیشفرض از نوع Grid Form است. خروجی این نوع فرم در مرورگر دارای یک نوار ابزار (Toolbox) با تعدادی دکمه با خصوصیات منحصر به فرد است که علاوه بر امکان ثبت، حذف و ویرایش اطلاعات در دیتابیس، امکان دریافت گزارش از فرم، پیمایش در صفحات و موارد دیگر را نیز فراهم می کنند. (برای آشنایی با نحوه مدیریت دکمه های موجود در این نوار ابزار به آموزش Button Rules مراجعه کنید)

زی فریم
در بعضی از پروژه ها وجود همه این دکمه ها برای تمامی فرم ها الزاما ضروری نیست. به همین منظور در شرایطی ممکن است توسعه دهنده بخواهد خود تصمیم گیرد که کدام دکمه ها فعال بوده و کدامیک غیر فعال باشند. برای آشنایی با نحوه فعال و یا غیرفعال سازی دکمه های موجود در نوار ابزار به آموزش آشنایی با Button Rule در زی فریم مراجعه کنید.دکمه Newبا استفاده از دکمه New می توان اطلاعات جدیدی را وارد جدول مورد نظر نمود تا در دیتابیس ذخیره شود. برای این کار، بر روی دکمه New کلیک کرده و اطلاعات فیلد های خواسته شده را وارد و در نهایت آن را ذخیره کنید.

برای عملکرد صحیح دکمه های “ذخیره”، “ویرایش” و “حذف” باید کوئری های مربوط به آنها در قسمت Action Query فرم مورد نظر به درستی وارد شده باشند (برای آشنایی با نحوه نوشتن کوئری ها در Action Query به آموزش ایجاد و مدیریت کوئری های فرم مراجعه شود)

به عنوان مثال پروژه ای را در نظر بگیرید که لازم است در آن برای جدول “پایه تحصیلی” یک رکورد با عنوان “دوازدهم دبیرستان” تعریف شود.

زی فریم

ابتدا بر روی دکمه New کلیک کرده تا فرم وارد کردن اطلاعات جدید باز شود. سپس اطلاعات مورد نظر را مطابق تصویر زیر وارد کنید.

زی فریم

حال بر روی دکمه Save کلیک کنید تا اطلاعات ذخیره شوند. پس از این کار یک پیام تایید به نمایش در خواهد آمد که با تایید آن، یک رکورد جدید در جدول مربوطه ایجاد می شود.

زی فریم

اگر خطایی در کوئری های نوشته شده برای فرم نباشد، پیامی مبنی بر موفقیت آمیز بودن ذخیره سازی اطلاعات در قسمت پایین فرم نمایش داده می شود.

زی فریم

با بستن این پنجره می توان جدول Grid اطلاعات این فرم را مشاهده نمود که در آن داده جدید با موفقیت ثبت شده است.

زی فریم

 

دکمه Edit

با استفاده از دکمه Edit می توان اطلاعات یک رکورد از جدول را ویرایش نمود. برای این کار، بر روی دکمه Edit کلیک کرده و اطلاعات فیلد های مورد نظر را ویرایش و در نهایت آن را ذخیره کنید.

برای عملکرد صحیح دکمه های “ذخیره”، “ویرایش” و “حذف” باید کوئری های مربوط به آنها در قسمت Action Query فرم مورد نظر به درستی وارد شده باشند.

به عنوان مثال در نظر بگیرید اطلاعات رکوردی از یک جدول نیازمند ویرایش باشد. برای این کار ابتدا رکورد مورد نظر (در این مثال رکورد با عنوان “هفتم دبیرستان”) را انتخاب کنید.

زی فریم

سپس بر روی دکمه Edit کلیک کرده تا فیلد های فرم در یک صفحه جدید نمایش داده شوند.

زی فریم

حال اصلاحات مورد نظر را انجام داده و بر روی دکمه Save کلیک کنید. پس از این کار یک پیام تایید به نمایش در خواهد آمد که با تایید آن، تغییرات بر روی داده ها اعمال خواهد شد.

زی فریم

همانطور که مشاهده می شود، در این مثال متن جدیدی داخل فیلد “توضیحات پایه تحصیلی” وارد و سپس ثبت شده است.

زی فریم

اگر خطایی در کوئری های نوشته شده برای فرم نباشد، پیامی مبنی بر موفقیت آمیز بودن ویرایش اطلاعات در قسمت پایین فرم نمایش داده می شود. با بستن این پنجره می توان جدول Grid اطلاعات این فرم را مشاهده نمود که در آن اطلاعات مورد نظر با موفقیت ویرایش شده است.

زی فریم

 

دکمه Delete

با استفاده از دکمه Delete می توان رکورد های موجود در جدول را حذف نمود. برای این کار، ابتدا یک رکورد را انتخاب کرده و سپس روی دکمه Delete کلیک کنید.

برای عملکرد صحیح دکمه های “ذخیره”، “ویرایش” و “حذف” باید کوئری های مربوط به آنها در قسمت Action Query فرم مورد نظر به درستی وارد شده باشند.

به عنوان مثال در نظر بگیرید نیاز است تا رکوردی از جدول زیر حذف گردد. برای اینکار ابتدا رکورد مورد نظر (در این مثال رکورد با عنوان “دوازدهم دبیرستان”) را انتخاب کنید.

زی فریم

سپس بر روی دکمه Delete کلیک کرده تا رکورد مورد نظر از جدول حذف شود. پس از این کار یک پیام تایید به نمایش در خواهد آمد که با تایید آن، رکورد از جدول حذف خواهد شد.

زی فریم

اگر خطایی در کوئری های نوشته شده برای فرم نباشد، جدول Grid اطلاعات این فرم را مشاهده خواهید کرد که در آن رکورد مورد نظر با موفقیت حذف شده است.

زی فریم
دکمه Search برای پیدا کردن یک یا چند رکورد از میان رکورد های موجود در Grid از دکمه Search استفاده می شود. با کلیک بر روی دکمه Search ، در بالای هر ستون از جدول یک فیلد جستجو نمایش داده خواهد شد، که می توان در ستون دلخواه به جستجوی عبارت مورد نظر پرداخت. با این کار، زی فریم تنها در میان اطلاعات موجود در آن ستون به جستجوی این عبارت می پردازد. به عنوان مثال پروژه ای را در نظر بگیرید که لازم است تا در جدول “پایه تحصیلی” تمام رکورد هایی که در آنها مقدار موجود در فیلد “نام مقطع” برابر با “دبیرستان” است نمایش داده شوند. برای این کار، ابتدا بر روی دکمه Search کلیک کرده تا فیلد های جستجو برای هر یک از فیلد ها در بالای آن نمایش داده شود. حال عبارت مورد نظر (در این مثال “دبیرستان”) را درون فیلد جستجو که در بالای ستون “نام مقطع” قرار گرفته است وارد کنید تا زی فریم تنها به جستجو درون این فیلد بپردازد.

زی فریم

سپس بر روی دکمه Search (جستجو) کلیک نمایید.

زی فریم

پس از کلیک بر روی دکمه Search مشاهده خواهید کرد که در جدول Grid، رکوردها بر اساس داده مورد نظر نمایش داده شده اند (در این مثال تمام رکورد هایی که برای آنها مقدار موجود در فیلد “نام مقطع” برابر با “دبیرستان” بود، نمایش داده شده است).

زی فریم

 
در کنار فیلدهای جستجو گزینه ای با علامت “*” وجود دارد، که برای جستجوی پیشرفته استفاده می شود. برای مثال فرض کنید می خواهید در یک جدول تنها رکوردهایی نمایش داده شوند که در آن مقدار موجود در فیلد “سن” بالاتر از عدد 18 باشد.
 
 
ابزار پیمایش در صفحات
دکمه First Page

هنگامی که تعداد رکوردهای موجود در یک گرید بسیار زیاد باشد، زی فریم به طور خودکار اقدام به صفحه بندی گرید می کند. در این حالت، کاربر برای بررسی تمامی رکوردها باید صفحات مختلف را در نظر بگیرد. به همین دلیل برای سهولت در پیمایش بین صفحات، چهار دکمه “صفحه اول”، “صفحه آخر”، “صفحه بعد” و “صفحه قبل” درون نوار ابزار در نظر گرفته شده است. با استفاده از دکمه First Page می توان اولین صفحه Grid را مشاهده نمود. در واقع با کلیک بر روی این دکمه می توان از هر صفحه از Grid که در حال نمایش است، به صفحه اول در Grid پیمایش نمود. برای این کار، کافیست بر روی دکمه First Page کلیک کرد. به عنوان مثال در Grid نشان داده شده در تصویر زیر، اطلاعات موجود در صفحه 3 نمایش داده شده است.

زی فریم
 

برای رفتن به اولین صفحه Grid بر روی دکمه First Page کلیک کنید.

 
زی فریم

همانطور که مشاهده می شود، با کلیک بر روی دکمه First Page اولین صفحه Grid به نمایش در آمد.

دکمه Previous Page

در هر صفحه ای که هستیم، برای رفتن به صفحه قبلی Grid می توان از دکمه Previous Page استفاده نمود. در واقع با کلیک بر روی این دکمه می توان یک صفحه به عقب برگشت. به عنوان مثال در Grid نشان داده شده در تصویر زیر، اطلاعات موجود در صفحه 3 نمایش داده شده است.

زی فریم
 

حال برای رفتن به صفحه قبل در Grid، بر روی دکمه Previous Page کلیک کنید.

 
زی فریم
 

همانطور که مشاهده می شود، با کلیک بر روی دکمه Previous Page صفحه Grid از صفحه 3 به صفحه 2 منتقل شد.

دکمه Next Page

با استفاده از دکمه Next Page می توان صفحه بعدی Grid را مشاهده نمود. در واقع با کلیک بر روی این دکمه می توان از هر صفحه در Grid که در حال نمایش است، یک صفحه به جلو رفت. به عنوان مثال در Grid نشان داده شده در تصویر زیر، اطلاعات موجود در صفحه 3 نمایش داده شده است.

زی فریم
 
حال برای نمایش صفحه بعد در Grid، بر روی دکمه Next Page کلیک کنید.
 
زی فریم
 

همانطور که مشاهده می شود، با کلیک بر روی دکمه Next Page صفحه Grid از صفحه 3 به صفحه 4 منتقل شد.

 
 
دکمه Last Page

با استفاده از دکمه Last Page می توان آخرین صفحه Grid را مشاهده نمود. در واقع برای رفتن از هر صفحه به صفحه آخر در Grid از دکمه Last Page استفاده می شود. به عنوان مثال در Grid نشان داده شده در تصویر زیر، اطلاعات موجود در صفحه 3 نمایش داده شده است.

زی فریم

حال برای نمایش آخرین صفحه Grid بر روی دکمه Last Page کلیک کنید.

زی فریم

همانطور که مشاهده می شود، با کلیک بر روی دکمه Last Page آخرین صفحه Grid به نمایش در آمده است.

ابزار پیمایش در صفحات
دکمه Print

با استفاده از دکمه Print می توان گزارش تهیه شده از فرم Grid را چاپ (Print) نمود. برای این کار، ابتدا باید یک گزارش (با استفاده از دکمه های Excel Report ، Excel Grid Report و Design Report که در ادامه با هر یک از آن ها آشنا خواهید شد) از فرم تهیه نمود و پس از آن با زدن دکمه Print می توان گزارش تهیه شده را چاپ نمود.

 

تا زمانی که گزارشی از داده های فرم Grid تهیه نشده باشد استفاده از دکمه Print امکان پذیر نیست.

 
 
دکمه Excel Report

در زی فریم این امکان وجود دارد که یک گزارش با فرمت Excel (از اطلاعات موجود در جداول) طبق یک قالب سفارشی شده تهیه نمود. برای این کار کافیست قالب دلخواه خود را در Excel طراحی کرده و آن را به زی فریم معرفی کنید. حال می توانید با استفاده از دکمه Excel Report ، گزارش مورد نیاز خود را مطابق با قالب طراحی شده دریافت نمایید. برای آشنایی با ساخت گزارش و طراحی قالب دلخواه در اکسل به آموزش ساخت گزارش در قالب دلخواه اکسل مراجعه نمایید.

دکمه Excel Grid Report

با استفاده از دکمه Excel Grid Report می توان از تمامی Grid های موجود در فرم، یک گزارش در قالب یک فایل Excel تهیه نمود. به عنوان مثال پروژه ای را در نظر بگیرید که لازم است در آن از اطلاعات جدول “پایه تحصیلی”، که به صورت گرید است، یک خروجی در Excel تهیه شود. برای این کار، بر روی دکمه Excel Grid Report کلیک کنید.

زی فریم

همانطور که مشاهده می شود فایل Excel ایجاد و سپس دانلود شده است.

زی فریم

زمانی که فایل Excel اجرا شود خواهید دید که تمامی رکودهای موجود در گرید، در این فایل به نمایش در آمده است.

زی فریم
 
 

اگر در داخل هر یک از فیلدهای Grid و در قسمت کنترل های آن، یک Grid دیگر وجود داشته باشد، با انتخاب فیلد مورد نظر جهت ساخت گزارش، علاوه بر Grid اصلی، گزارش Grid داخلی فیلد انتخاب شده نیز در یک صفحه (Sheet) جدا در فایل Excel ایجاد می شود.

 
دکمه Design Report

با کلیک بر روی دکمه Design Report می توان با استفاده از نرم افزارهای Stimulsoft و یا Jasper یک گزارش طراحی و ایجاد نمود.

 

این دکمه فقط برای کاربرانی که در گروه کاری Admin هستند فعال است و دیگر کاربران با سطح دسترسی پایین تر از Admin نمی توانند از این دکمه استفاده کنند.

ابزار جانبی

دکمه های Refresh و Help در حالت اولیه در قسمت نوار ابزار نمایش داده نمی شوند، اما در صورت نیاز می توان آنها را از قسمت Button Rule فرم فعال نمود (برای آشنایی با نحوه فعال و یا غیرفعال سازی دکمه های موجود در نوار ابزار به آموزش آشنایی با Button Rule در زی فریم مراجعه کنید.)

دکمه Refresh

با استفاده از دکمه Refresh می توان بدون بروزرسانی کامل صفحه مرورگر اطلاعات یک فرم را بروزرسانی نمود.برای این کار کافیست یکبار بر روی این دکمه کلیک کنید.

دکمه Help

در زی فریم این امکان در نظر گرفته شده است که بتوان یک راهنما به صورت فایل PDF برای هر کدام از فرمها در نظر گرفت تا کاربر بتواند با استفاده از دکمه Help از آن استفاده نماید. دکمه Help به این صورت طراحی شده است که یک فایل PDF با نامی مشخص را از مسیری مشخص از درون پوشه های زی فریم اجرا کند. توجه شود که این سند و پوشه حاوی آن از ابتدا وجود ندارد و توسعه دهنده برنامه باید خود آن را ایجاد کند. برای دستیابی به نام و مسیر این فایل بر روی دکمه Help کلیک کرده تا پنجره زیر نمایش داده شود.

زی فریم
 

همانطور که مشاهده می شود، در این پنجره خطای 404 نمایش داده شده است زیرا هنوز هیچگونه فایل راهنمایی برای این فرم در نظر گرفته نشده است. بنابراین برنامه نمی تواند سند مورد نظر را در فایل های برنامه زی فریم پیدا و بارگزاری کند. حال بر روی پنجره Help کلیک راست کرده و گزینه View frame source را انتخاب کنید تا پنجره جدیدی در مرورگر باز شود.

زی فریم

اکنون می توان مسیر و نام سند مورد نظر را در نوار آدرس پنجره باز شده مشاهده نمود.

زی فریم

همانطور که مشاهده می شود در این مثال سند Help فرم مورد نظر باید با نام 3.pdf و در پوشه ای به نام HelpForm قرار گیرد. برای ایجاد پوشه HelpForm و قرار دادن فایل پی دی اف مورد نظر درون آن، طبق نشانی زیر ابتدا وارد پوشه WorkSpace زی فریم، سپس پوشه ZFAPP و در نهایت وارد پوشه Web شوید.

Workspace >> ZFAPP >> Web

حال پوشه ای با نام HelpForm درون پوشه Web ایجاد کنید.

زی فریم

وارد پوشه HelpForm شده و فایل پی دی اف مورد نظر خود را در آن قرار دهید.

زی فریم
 

توجه داشته باشید که نام این سند باید با نامی که در نوار آدرس مشاهده شد همنام باشد. در این مثال نام سند در نوار آدرس مرورگر برابر 3.pdf است، به همین دلیل، نام فایل پی دی افی که در پوشه HelpForm قرار داده ایم را برابر با 3.pdf قرار می دهیم تا زی فریم بتواند آن را بارگذاری کند.

زی فریم
 

حال اگر بر روی دکمه Help کلیک کنید مشاهده خواهید کردکه سند Help فرم مورد نظر نمایش داده خواهد شد.

زی فریم
 
 
کاربرد Button Rule در فرم

هنگامی که یک فرم در زی فریم ساخته شده و خروجی آن در مرورگر نمایش داده می شود، در بالای آن فرم تعدادی دکمه نیز به عنوان نوار ابزار وجود خواهد داشت که در یک برنامه الزاما تمامی آنها مورد نیاز نخواهد بود (برای آشنایی با دکمه های موجود در این نوار ابزار به آموزش آشنایی با دکمه های نوار ابزار فرم در مرورگر مراجعه کنید). به عنوان مثال، ممکن است در یک فرم نیازی به وجود امکان چاپ، گزارش گرفتن و غیره نباشد. به همین دلیل در زی فریم، قسمتی برای مدیریت وجود و یا عدم وجود این دکمه ها در نظر گرفته شده است.

هر فرمی که در زی فریم ساخته می شود، گزینه هایی برای سفارشی سازی آن نیز درون محیط توسعه ZIDE در نظر گرفته شده است. برای دسترسی به این گزینه ها کافیست در پنجره Forms، فرم مورد نظر را باز کرده تا این گزینه ها را مشاهده کنید. امکان سفارشی سازی دکمه های نوار ابزار بالای فرم نیز یکی از این موارد است که توسط گزینه Button Rule مهیا شده است.

زی فریم

پس از باز کردن پنجره Button Rule مشاهده خواهید نمود که اگر چه در این قسمت 14 دکمه برای مدیریت در نظر گرفته شده است، اما پس از ساخت یک فرم، تنها 12 مورد از آنها به کاربر نمایش داده می شود. شما می توانید هر کدام از آنها را از نوار ابزار حذف و یا به آن اضافه نمایید.

زی فریم
 
 
 
 

علاوه بر دکمه های موجود در قسمت Button Rule، می توان کنترل های موجود درون فرم را نیز به این قسمت اضافه نمود. برای یادگیری اضافه نمودن کنترل های فرم به قسمت نوار ابزار خروجی برنامه در مرورگر، به آموزش اضافه کردن کنترل به نوار ابزار (Tool Box) مراجعه شود.

همانطور که مشاهده می شود در این پنجره، دکمه های موجود در بخش نوار ابزار (Tool Box) فرم به صورت چک باکس (CheckBox) نمایش داده شده اند تا توسعه دهنده بتواند آنها را فعال و یا غیرفعال نماید.

چک باکس های Button Rule

در پنجره Button Rule چهار قسمت با نام های Save Action،Navigation Action ، Report Action و Extra در نظر گرفته شده است. در هر کدام از این قسمتها تعدادی چک باکس قرار گرفته است که هر کدام مربوط به یکی از دکمه های موجود در نوار ابزار (Tool Box) فرم هستند. برای آشنایی بیشتر با این چهار قسمت لازم است تا هر یک از آنها به طور جداگانه معرفی و بررسی شوند.

Save Action

اولین قسمت در پنجره Button Rule، بخش Save Action نام دارد که درون آن چهار عدد چک باکس برای مدیریت دکمه های New، Edit، Delete و Search قرار داده شده است.
•چک باکس Can Define New Object برای فعال و یا غیرفعال کردن دکمه New زی فریم به کار می رود.
•چک باکس Can Save برای فعال و یا غیرفعال کردن دکمه Edit زی فریم به کار می رود.
•چک باکس Can Delete برای فعال و یا غیرفعال کردن دکمه Delete زی فریم به کار می رود.
•چک باکس Can Search برای فعال و یا غیرفعال کردن دکمه Search زی فریم به کار می رود.

Navigation Action

دومین قسمت در پنجره Button Rule، بخش Navigation Action نام دارد که در آن چهار چک باکس برای مدیریت دکمه های مرتبط با پیمایش در صفحات در نظر گرفته شده است.
• چک باکس Can Go First برای فعال و یا غیرفعال کردن دکمه First Page زی فریم به کار می رود.
• چک باکس Can Go Back برای فعال و یا غیرفعال کردن دکمه Pervious Page زی فریم به کار می رود.
• چک باکس Can Go Next برای فعال و یا غیرفعال کردن دکمه Next Page زی فریم به کار می رود.
• چک باکس Can Go End برای فعال و یا غیرفعال کردن دکمه Last Page زی فریم به کار می رود.

Report Action

سومین قسمت در پنجره Button Rule، بخش Report Action نام دارد که در آن چهار عدد چک باکس برای مدیریت دکمه های مرتبط با پرینت و خروجی های اکسل در نظر گرفته شده است.
•چک باکس Can Print برای فعال و یا غیرفعال کردن دکمه Print زی فریم به کار می رود.
•چک باکس Can Excel Grid Reportبرای فعال و یا غیرفعال کردن دکمه Excel Grid Report زی فریم به کار می رود.
•چک باکس Can Excel Grid برای فعال و یا غیرفعال کردن دکمه Excel Grid زی فریم به کار می رود.
•چک باکس Can Design Reportبرای فعال و یا غیرفعال کردن دکمه Design Report زی فریم به کار می رود.

Extra

چهارمین قسمت در پنجره Button Rule، بخش Extra نام دارد که در آن دو چک باکس در نظر گرفته شده است.
•چک باکس Show Help برای فعال و یا غیرفعال کردن دکمه Help زی فریم به کار می رود.
•چک باکس Show Refresh برای فعال و یا غیرفعال کردن دکمه Refresh زی فریم به کار می رود.

هنگامی که یک فرم ساخته می شود، دکمه های Help و Refresh در نوار ابزار آن دیده نمی شوند زیرا غیرفعال هستند. برای اضافه کردن آنها به نوار ابزار لازم است تا در پنجره Button Rule چک باکس مرتبط با آنها را فعال کنید.

برای آشنایی با هر کدام از دکمه های نوار بزار (Tool Box) فرم های خروجی به مقاله آشنایی با دکمه های نوار ابزار فرم در مرورگر مراجعه نمایید.

غیرفعال کردن تمام دکمه ها

برای غیر فعال کردن تمام دکمه های قسمت نوار ابزار (Tool Box) بر روی دکمه UnCheck All کلیک کرده و تغییرات را با استفاده از دکمه Save ذخیره کنید.

زی فریم

حال پس از یک بار Clear Cache نمودن، دیگر هیچ یک از دکمه های نوار ابزار، در بالای فرم مورد نظر قابل مشاهده نخواهد بود.

زی فریم
 
 
فعال کردن تمام دکمه ها

برای نمایش تمام 14 دکمه نوار ابزار (Tool Box)، در پنجره Button Rule بر روی دکمه Check All کلیک کرده و تغییرات را توسط دکمه Save ذخیره کنید.

زی فریم

مجددا Clear Cache کنید. همانطور که مشاهده می کنید تمام دکمه های نوار ابزار (Tool Box)، در بالای فرم مورد نظر به این قسمت اضافه شده اند.

زی فریم
 
 
 

فرم استاتسک

هنگامی که در زی فریم یک فرم ساخته شود، به صورت پیش فرض نوع آن Grid Form در نظر گرفته می شود، در حالی که در زی فریم انواع مختلفی از فرم وجود دارد که هر کدام از آنها امکانات متفاوتی به کاربران ارائه می دهند. به عنوان مثال می توان به Static Form، Binding Form، Repeat Form، Search Form و غیره اشاره نمود که پس از ساخت فرم می توان نوع آن را از حالت GridForm به هر یک از انواع دیگر تغییر داد. یکی از پرکاربرد ترین فرم ها در زی فریم Static Form است.

 
کاربرد فرم های Static

فرم های استاتیک کاربردهای بسیاری دارند. برای مثال فرض کنید می خواهید یک ماشین حساب در نرم افزار حسابداری خود ایجاد کنید که این ماشین حساب متصل به دیتابیس نبوده و نیازی به داده های آن ندارد و یا می خواهید محتوایی را در نرم افزار خود به نمایش بگذارید که فقط از متن ها و تصاویر تشکیل شده است؛ در اینگونه موارد یک فرم static به کار می آید.

 

دکمه های نوار ابزار در حالت Grid Form در دسترس هستند اما این دکمه ها در حالت Static Form وجود ندارند. بنابراین، از آنجایی که این فرم ها دارای دکمه های نوار ابزار نیستند، نمی توان در آنها عملیاتی بر روی داده ها انجام داد. برای آشنایی با دکمه های نوار ابزار به آموزش آشنایی با دکمه های نوار ابزار در Grid Form مراجعه شود.

 
نحوه ایجاد فرم های Static

برای ایجاد یک فرم Static باید مطابق با مراحل زیر، ابتدا یک فرم با استفاده از گزینه New Form by Design ایجاد کرد و سپس نوع این فرم را از نوع Static Form قرار داد (برای یادگیری انواع ساخت فرم در زی فریم به آموزش ساخت فرم در زی فریم مراجعه کنید.)
1- پس از ایجاد یک فرم، آن را از پنجره Forms انتخاب کنید.

زی فریم
 

2- از پنجره Properties خصوصیت Form Pattern را برابر با Static Form قرار دهید و یک بار Clear Cache کنید تا فرم مورد نظر Static Form شود.

زی فریم
 

در خروجی برنامه (در مرورگر) مشاهده خواهید کرد که در بالای این فرم دیگر نوار ابزار وجود ندارد و به شکل کامل حذف شده است. همچنین اگر از قبل در دیتابیس و جدول متصل به فرم، (اگر فرم بر اساس یک جدول در دیتابیس ساخته شده باشد) داده ای وجود داشته باشد، دیگر در حالت Static Form داده های موجود در جدول نمایش داده نخواهند شد.

زی فریم
 
 
فرم گرید

در زی فریم امکان استفاده از مدلهای متنوعی از فرم شامل Tab Containers،Report ،RepeatForm ،StaticForm ، Binding ،SearchForm و GridForm وجود دارد (برای آشنایی با انواع فرم در زی فریم به آموزش انواع فرم در زی فریم مراجعه نمایید). یکی از قابلیتهای ویژه زی فریم آن است که می توان درون یک فرم از فرمی دیگر نیز استفاده نمود که به آن حالت تو در تو (nested) گفته می شود. این قابلیت تنها در برخی از مدل ها قابل استفاده است.

Grid چیست؟

از این فرم به عنوان فرم پیش فرض در زی فریم استفاده شده است. به این صورت که هر زمان که یک فرم ساخته شود، زی فریم به صورت خودکار مدل Gridformرا برای آن در نظر می گیرد. با این حال، در ادامه کار می توان بر اساس نیاز آن فرم را به دیگر حالات تغییر داد. زمانی که فرم های Grid بارگذاری می شوند، اطلاعات موجود در جدول به صورت سطر به سطر نشان داده خواهند شد؛ مانند فرم لیست اطلاعات دانش آموزان.

زی فریم

مفهوم Grid در نرم افزارهای مختلف دیگر و حتی در زبان های مختلف برنامه نویسی نیز بسیار استفاده شده است. به عنوان مثال، هنگامی که در نرم افزار Excel و یا Access داده ای وارد می شود و یا زمانی که یک جدول در Word ایجاد می شود، نحوه نمایش آن داده ها به صورت ساختار grid است. به عنوان یک نمونه در برنامه نویسی نیز می توان به چارچوب bootstrap اشاره نمود، که بر ساختار Grid استوار است.

ساخت فرم گرید

برای ساخت یک فرم Grid کافیست ابتدا یک فرم در زی فریم بر اساس یک جدول موجود در SQL Server ساخته شود (برای آشنایی با نحوه ساخت فرم طبق یک جدول به آموزش ساخت فرم بر اساس جدول مراجعه شود). از آن جایی که فرم گرید به عنوان فرم پیش فرض در زی فریم در نظر گرفته شده است، هر فرمی که ساخته شود در ابتدا به صورت گرید است. اکنون فرم ساخته شده باید به یک Workflow اختصاص داده شده تا بتوان آن را در مرورگر مشاهده نمود (برای آشنایی با نحوه ساخت workflow به آموزش ساخت Workflow و مدیریت آن مراجعه شود). تصویر زیر نمونه ای از ساختار نهایی یک فرم Grid است. در این مثال ستونهای “عدد فارسی” و “عدد خارجی” بیانگر شماره روز هفته است؛ به عنوان مثال روز شنبه در فارسی اولین روز هفته و در انگلیسی ششمین روز هفته است.

زی فریم
 
 
فعال سازی دابل کلیک در فرم گرید

برای ویرایش یک رکورد باید ابتدا آن رکورد انتخاب شده و سپس بر روی دکمه ویرایش کلیک شود. این کار در حالت عادی با استفاده از دکمه کناری آن رکورد صورت می پذیرد. در بسیاری از موارد و بر حسب ضرورت، ترجیح بر آن است که پنجره ویرایش با دو بار کلیک بر روی یک رکورد باز شود. برای این منظور کافیست که در پنجره Forms، بر روی گزینه Java Script Code فرم مورد نظر کلیک کرده تا پنجره Java Script Code باز شود.

زی فریم

بعد از باز شدن پنجره Java Script Code، بر روی دکمه Grid Double Click Event کلیک کرده تا کدهای مرتبط با رویداد دابل کلیک به طور خودکار ایجاد شود. با کلیک بر روی دکمه ذخیره، عملیات مذکور به درسی به پایان می رسد. با اتمام این فرایند، برای باز کردن پنجره ویرایش دیگر نیازی به انتخاب دکمه کناری رکورد و کلیک بر روی دکمه ویرایش نیست. به عبارتی، اکنون با دابل کلیک بر روی آن رکورد، پنجره ویرایش باز شده و می توان اقدام به ویرایش اطلاعات نمود.

زی فریم
 
 
اجزا و خصوصیات فرم گرید
اجزای فرم گرید

یک فرم گرید از سه بخش اصلی تشکیل شده است. بخش اول که در بالای فرم قرار دارد، شامل یک نوار ابزار است تا کاربر بتواند با کمک دکمه های آن به مدیریت اطلاعات فرم بپردازد (برای آشنایی با دکمه های موجود در این نوار ابزار به آموزش نوار ابزار فرم در زی فریم مراجعه نمایید). کاربرد این دکمه ها به ترتیب از راست به چپ شامل ایجاد، ویرایش، حذف، جستجوی یک رکورد، چهار دکمه برای پیمایش، چاپ، استخراج Excel، استخراج Excel در قالب Grid و طراحی گزارش است.

زی فریم
 

در بخش دوم، اطلاعات موجود در فرم به صورت یک جدول نمایش داده می شود. که می توان مانند Excel با کشیدن لبه های هر سر ستون، عرض هر فیلد را کم و یا زیاد نمود. در بخش سوم که در پایین فرم قرار دارد هم نواری برای پیمایش و مدیریت نحوه نمایش داده های موجود در فرم قرار داده شده است تا به وسیله آن بهتر بتوان داده هایی با حجم بالا را مدیریت نمود. در تصویر زیر کارکرد المانهای موجود در این قسمت توضیح داده شده است.

زی فریم

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

 
زی فریم

از ابزار موجود در این پنجره می توان برای مدیریت ستونهای گرید و اعمال تغییرات مورد نیاز به صورت زیر استفاده نمود:
✓   با استفاده از دکمه های موجود در ستون Column Size می توان ترتیب نمایش ستونها را تغییر داد.
✓   با درج یک عدد در کادرهای نوشتاری موجود در ستون Columns Index، می توان اندیس فیلدهای جدول را مدیریت کرد.
✓   با برداشتن تیک هر کدام از تیک مارک های موجود در ستون Can View می توان نمایش یا عدم نمایش یک فیلد در جدول را مشخص نمود.
✓   در نهایت پس از اعمال تغییرات لازم، می بایست بر روی دکمه تایید کنید (Accept) کلیک کنید تا تغییرات ذخیره شود.
✓   دکمه پیش فرض (Default) نیز برای برگرداندن تنظیمات به حالت پیش فرض است.

تنظیمات مرتبط با سفارشی سازی Grid برای هر کاربر به طور مجزا اعمال می شود. به عبارتی اگر کاربری دیگر به سیستم وارد شود، تنظیمات Grid آن با دیگر کاربران متفاوت خواهد بود.

 

خصوصیات فرم گرید

هر فرم Grid دارای خصوصیت هایی منحصر به فرد به شرح زیر است که همگی قابل مدیریت هستند.
•   خصوصیت Grid Loading Mode
•   خصوصیت Grid Select Text
•   خصوصیت Grid Session Access
•   خصوصیت Grid Count Query
برای مشاهده و مدیریت این خصوصیت ها باید ابتدا فرم مورد نظر را انتخاب نموده تا پنل Properties در سمت راست مشاهده شود.

 
زی فریم
 
خصوصیت Grid loading mode

زمانی که تعداد اطلاعات مربوط به یک فرم زیاد باشد (مانند لیست تراکنش های روزانه در یک بانک که ممکن است به چندین هزار رکورد برسد)، اگر کاربر برای نمایش اطلاعات ثبت شده در این جداول از Grid استفاده کند دچار مشکل خواهد شد. در نتیجه می بایست اطلاعات را به صورت صفحه به صفحه بارگذاری کند تا برای بانک اطلاعاتی و همچنین Application Server مشکلی در امر بارگذاری اطلاعات رخ ندهد. بنابراین علاوه بر آنکه باید مقدار این خصوصیت برابر با Dynamicباشد، خصوصیت Grid Count Query نیز باید مقداردهی شود. اما زمانی که حجم اطلاعات کم باشد، می توان مقدار این خصوصیت را در حالت static قرار داد.

 
خصوصیت Grid Select Text

زمانی که حالت نمایش یک فرم به صورت Grid در نظر گرفته شده باشد، در کنار هر رکورد از Grid یک دکمه وجود خواهد داشت که از آن برای Select کردن آن رکورد استفاده می شود. چنانچه بخواهیم عدد یا واژه ای داخل این دکمه به کاربر نشان داده شود، از این خصوصیت استفاده کرده و آن عدد یا واژه را داخل خصوصیت Grid Select Text وارد می کنیم. همچنین برای حذف کردن این دکمه می توان مقدار این خصوصیت را برابر با null قرار داد.

 

خصوصیت Grid Session Access

در برخی موارد نیاز است تا گزینه انتخابی توسط کاربر، داخل Session Value ذخیره شود تا بر اساس آنچه کاربر انتخاب کرده است، عملیاتی صورت گیرد. به عبارت دیگر اگر بخواهیم زمانی که کاربر بر روی یک رکورد (موجود در یک گرید) کلیک و آن را انتخاب کرد، از انتخاب او آگاه شده و بر اساس این انتخاب عملیاتی صورت دهیم، می توان id رکورد انتخاب شده را در یک Session ذخیره نماییم و برای این Session یک نام دلخواه درون خصوصیت Grid session access قرار دهیم.
برای مثال فرض کنید بخواهیم کلید دوره مالی انتخابی توسط کاربر را داخل یک Session با نام ActiveYear ذخیره کنیم. زمانی که مقدار این خصوصیت را برابر با ActiveYear قرار دهیم، اگر کاربر بر روی Grid نمایان شده در این فرم کلیک کند، مقدار موجود در کلید فرم به داخل Session ActiveYear انتقال پیدا می کند، که در ادامه می توان سازوکار برنامه را با استفاده از این مقدار پیش برد.

 

خصوصیت Grid Count Query

همانگونه که در بالا گفته شد، در مواقعی که حجم رکوردها بالاست، باید مقدار Grid Loading Mode در حالت Dynamic قرار گیرد. در این زمان، از آنجا که سیستم درک درستی از تعداد کل رکوردها ندارد، درنتیجه نمی تواند تعداد صفحات Grid را نمایش دهد. درنتیجه نیاز به یک Query بوده تا تعیین شود که در کل چه تعداد رکورد وجود دارد و در نتیجه برای نمایش این اطلاعات به چند صفحه نیاز است. البته این اطلاعات ممکن است در قسمتهای شاخص گذاری شده داخل بانک اطلاعاتی و یا برخی از فیلدهایی که آمار و ارقام را برای کاربر ذخیره می کنند نیز باشد. در واقع درون خصوصیت Grid Count Query یک کوئری نوشته می شود که صرفا یک عدد بر می گرداند که بیانگر تعداد رکوردهای موجود در جدول است. سیستم با استفاده از این عدد می تواند تشخصی دهد که صفحه بندی را به شکل انجام دهد.

ایجاد فیلدهای اضافی در فرم

گاهی مواقع لازم است تا یک سری فیلدها در کنار هر رکورد و برای انجام عملیاتی خاص بر روی هر رکورد طراحی گردد. بدین منظور نیاز است تا در ابتدا آن فیلدهای اضافی ایجاد گردند و سپس بر حسب نیاز تغییراتی روی آنها اعمال شود. برای مثال فرض کنید جدولی داریم از روزهای هفته که بر اساس آن در زی فریم یک فرم گرید با نام DAYS_OF_WEEK ساخته ایم. عدد فارسی بیانگر شماره آن روز در تقویم فارسی و عدد انگلیسی بیانگر شماره روز در تقویم میلادی است.

زی فریم
زی فریم

حال در کنار رکوردهای این فرم نیاز به 3 فیلد جدید داریم تا درون آنها با اعدادی پر شود. برای این کار درون پنجره Properties فرم مورد نظر، بر روی خصوصیت Grid Data Source کلیک کنید تا پنجره مرتبط با کوئری نویسی باز شود.

زی فریم

در این پنجره کد زیر را مطابق شکل وارد کرده و در نهایت بر روی دکمه OK کلیک کنید.

 
SELECT W.* , 1 CMD1 , 2 CMD2 , 3 CMD3 FROM DBO.DAYS_OF_WEEK W

در این کد، حرف W به عنوان اسم مستعار (ALIAS) برای نام جدول در نظر گرفته شده است تا از تکرار این نام در کدنویسی پرهیز شود. سپس با استفاده از * تمام فیلد های جدول انتخاب شده و سه فیلد دیگر با نامهای CMD1 با مقدار 1، CMD2 با مقدار 2 و CMD3 با مقدار 3 به آن اضافه شده است (این سه فیلد در جدول تعریف نشده بودند.)

زی فریم

برای آنکه مشاهده کنید خروجی این کد به چه صورت است می توانید از منوی view گزینه query executer را انتخاب کنید تا پنجره SQL Query باز شود. کد بالا را درون آن وارد و بر روی دکمه اجرا در بالای پنجره SQL Query کلیک کنید. همانظور که مشاهده می شود، خروجی این کد در پایین صفحه نمایش داده شده و سه فیلد CMD1، CMD2 و CMD3 در کنار تمامی فیلدهای جدول قرار گرفته است.

زی فریم

با پاک کردن کش به وسیله دکمه Clear Cash Data و سپس refresh کردن مرورگر، نتیجه در مرورگر نیز به صورت زیر مشاهده می شود.

زی فریم
 
 
افزودن دکمه به عنوان فیلد

در مثال مربوط به قسمت “ایجاد فیلدهای اضافی در فرم Grid”، تعدادی فیلد به فرم Grid اضافه شد که هر کدام حاوی یک عدد بود. اکنون می خواهیم به جای یک عدد، المانهایی مانند دکمه و یا textbox به عنوان فید به فرم Grid اضافه کنیم. برای این کار از منوی Help بر روی گزینه Help Query کلیک کنید تا کتابخانه جاواسکریپت که ویژه زی فریم نوشته شده است باز شود. در این کتابخانه مجموعه ای از چندین کوئری نمونه برای انجام امور مختلف از پیش نوشته شده است تا توسعه دهنگان به راحتی بتوانند از آنها در توسعه پروژه های خود استفاده کنند. در پنجره این کتابخانه بلاک کد Sample Code for Grid Datasource and Create Control را بیابید.

زی فریم

در پنجره Properties فرم Grid مورد نظر بر روی خصوصیت Grid Data Source کلیک کنید تا پنجره کوئری نویسی (Query Designer) باز شود. حال کد زیر را در ادامه کدهای پیشین وارد کنید.

 
START_GRID_STYLE
CMD1:<input type=”button” id=”cmd@dayofweek_ID@” value=”@name@” class=”command”>#

•   عبارت START_GRID_STYLE به مفهوم آن است که از این قسمت کد به بعد ارتباطی با کوئری نویسی نداشته و نباید در آن به دنبال کوئری بگردد.
•   CMD1: به معنی اعمال تغییرات برای فیلد CMD1 است که پیشتر مقدار اولیه به آن داده شده است.
•   در ادامه یک دکمه برای آن فیلد به وسیله تگ Input (که یک تگ HTML است) تعریف می شود. id این تگ همان کلید اصلی جدول مرتبط با کنترل به همراه واژه CMD در ابتدای آن در نظر گرفته شده است.
•   value این دکمه برابر با محتوای فیلد اول جدول می باشد (در این مثال، نام فیلد اول name است).
•   Class داده شده که برابر با Command است، پیشتر در برنامه تعریف شده و برای همه دکمه ها در سرتاسر برنامه قابل استفاده است.
•   در انتهای تگ باید علامت # قرار گیرد.

زی فریم

در نهایت ok کرده و با زدن دکمه Clear Cash Data و سپس refresh کردن مرورگر، نتیجه در مرورگر قابل مشاهده خواهد بود. همان طور که مشاهده می شود، محتویات فیلد CMD1 به دکمه هایی تغییر یافت که حاوی اطلاعات موجود در فیلد name (روزهای هفته) هستند.

زی فریم

به همین ترتیب می توان از textboxنیز برای یکی دیگر از فیلدها (به عنوان مثال فیلد “عنوان”) استفاده نمود. تنها تفاوت آن است که هنگام استفاده از تگ Input، مقدار type را برابر با text و مقدار class را برابر با inputtext قرار می دهیم.

 
START_GRID_STYLE
CMD1:<input type=”text” id=”cmd@dayofweek_ID@” value=”@title@” class=”inputtext”>#
 
زی فریم

با انجام این کار، محتویات فیلد “عنوان” تبدیل به textbox می شود.

زی فریم
 
 
 
 
اتصال به جدولی دیگر

هنگامی که یک رکورد برای ویرایش باز شود، تمام اطلاعات موجود در آن نمایش داده خواهد شد. در بعضی موارد نیاز است تا در کنار اطلاعات این رکورد، اطلاعات جدول دیگری نیز نمایش داده شود. برای مثال فرض کنید جدولی از اطلاعات خریداران و جدولی دیگر از اطلاعات فاکتورهای خرید داریم. وقتی رکوردی مرتبط با یکی از خریداران باز شود ممکن است علاوه بر مشخصات فردی، لازم باشد تا فهرستی از اقلام فاکتوری که به نام آن شخص است نیز نمایش داده شود. برای این کار یک کنترل از نوع GridView به جدول “اطلاعات خریداران” مطابق شکل اضافه می شود.

زی فریم

این کنترل هم مانند دیگر کنترلها دارای خصوصیاتی در پنجره Properties است که از خصوصیت Caption برای تعیین یک نام فارسی برای این کنترل و از خصوصیت Query Editor برای نمایش دادن یک جدول دیگر درون فرم “اطلاعات خریداران” استفاده می شود. بنابراین یک نام فارسی مانند “اقلام فاکتور” برای caption در نظر می گیریم تا در خروجی نمایش داده شود. برای نمایش دادن اطلاعات یک جدول دیگر درون این کنترل نیز کدهای دستوری زیر را درون خصوصیت Query Editor وارد می کنیم.

SELECT [InvoiceItems_ID]
,[Goods_Title]
,[Goods_Price]
,[Good_Count]
,[TotalPrice]
FROM [store].[dbo].[InvoiceItems] WHERE Invoice_ID = @LNGInvoice_ID

همانطور که در شکل مشاهده می شود برای وارد کردن کدهای دستوری ابتدا بر روی Query Editor کلیک کرده تا پنجره Query Design باز شود. سپس کدها را وارد نمایید.

زی فریم

در نهایت ok کرده و با زدن دکمه Clear Cash Data و سپس refresh کردن مرورگر، نتیجه در مرورگر نشان داده می شود. همان طور که مشاهده می شود، اطلاعات مربوط به فاکتور در فرم مربوط به اطلاعات خریدار به صورت یک گرید نمایش داده شده است.

زی فریم

در این فرم گرید نیز می توان فیلدهای جدید به صورت دکمه و textbox ایجاد نمود که در آموزشهای ایجاد فیلدهای اضافه در فرم Grid و اضافه کردن یک دکمه به عنوان فیلد به آن پرداخته شده است. برای مثال می توان یک فیلد جدید ساخت تا در کنار هر رکورد دکمه ای برای استعلام وجود داشته باشد. برای این کار کد زیر را در خصوصیت Query Editor وارد کنید.

SELECT [InvoiceItems_ID]
, 1 inquiry
,[Goods_Title]
,[Goods_Price]
,[Good_Count]
,[TotalPrice]
FROM [store].[dbo].[InvoiceItems] WHERE Invoice_ID = @LNGInvoice_ID
START_GRID_STYLE
inquiry: <input type=”Button” value=”استعلام” onclick= “checkfx(@InvoiceItems_ID@)” class=”Command” > #

در این کد ابتدا یک فیلد جدید با نام inquiry و مقدار ثابت برابر با “1” ساخته می شود، سپس این فیلد با استفاده از HTML تبدیل به یک دکمه “استعلام” خواهد شد.

زی فریم

در نهایت تغییرات را اعمال کرده و با زدن دکمه Clear Cash Data و سپس refresh کردن مرورگر، نتیجه در مرورگر قابل مشاهده خواهد بود:

زی فریم

همان طور که در کد بالا مشاهده می شود، برای دکمه “استعلام” یک رویداد OnClick نیز تعریف شده است تا با کلیک بر روی این دکمه، تابع checkfx() صدا زده شود. همچنین id جدول آیتم های فاکتور خرید نیز به عنوان آرگومان یا ورودی به این تابع معرفی شده است تا با کلیک بر هر دکمه، استعلام مرتبط با همان رکورد صورت گیرد. نکته ای که وجود دارد آن است که تابع مورد نظر با نام checkfx() نیز باید درونJava Script Code فرم مورد نظر تعریف شود.

زی فریم

در این مثال، تابع checkfx() به صورتی تعریف شده است تا با صدا زدن آن یک پیغام نمایش داده شود.

زی فریم

در نهایت تغییرات را اعمال کرده و با زدن دکمه Clear Cash Data و سپس refresh کردن مرورگر، نتیجه در مرورگر نمایش داده خواهد شد. همان طور که در تصویر مشاهده می شود، با کلیک بر روی دکمه استعلام، پیغام مورد نظر نشان داده می شود.

زی فریم
 
 
 
Binding Form چیست؟

در بعضی موارد نیاز است تا کاربر اطلاعات اولیه را در یک فرم وارد نموده و سپس به ازای این اطلاعات اولیه چندین رکورد دیگر (که تعداد آنها مشخص نیست و قابل افزایش است) ثبت کند. فرم های Binding به منظور ساخت چنین ساختاری طراحی شده اند.
لازم به ذکر است که این نوع از فرم فقط در حالت nested کاربرد دارد.
به عنوان مثال در تصویر زیر به ازای هر خریدار یک فرم با نام فاکتور ایجاد شده است، که درون آن یک فرم دیگر با نام اقلام فاکتور ضمیمه شده است (binding). در فرم دوم چهار فیلد مشاهده می شود که می توان با استفاده از دکمه های Add و Delete یک کالا را به فاکتور اضافه و یا از آن کم کرد. اگر از فرم بایندینگ استفاده نمی شد باید به ازای هر کالا برای هر شخص یک فرم ساخته می شد. (به عبارتی اگر شخصی 5 کالا خریداری نماید و شخص دیگری 12 کالا، باید در مجموع 17 فرم ساخته می شد)

زی فریم
 
 
نمونه یک فرم بایندینگ

فرض کنید می خواهیم یک اپلیکشین برای صدور فاکتورهای یک فروشگاه تولید کنیم. در این اپلیکیشن امکان آن وجود دارد تا نام خریدار، شماره تماس، تاریخ و ساعت خرید او در یک فرم (فرم اول) ثبت شود. سپس نام کالاهای خریداری شده توسط او، تعداد هر کالا و قیمت آنها نیز در یک فرم دیگر (فرم بایندینگ) ثبت گردد. در نهایت قیمت نهایی فاکتور نیز محاسبه و ارائه شود. به عبارت دیگر به ازای هر خرید فقط یک بار از فرم اول استفاده می شود، اما برای هر خریدار به تعداد اقلام کالای خریداری شده (این عدد برای هر خرید متفاوت است) از فرم دوم استفاده می شود.
بدین منظور ابتدا در دیتابیس اپلیکیشن، دو جدول مشابه جدول های زیر ساخته می شود (برای یادگیری ساخت جدول مقاله روش ساخت جدول در SQL Server را مشاهده کنید.)

زی فریم

جدول فرم دریافت اطلاعات خریدار

زی فریم

جدول فرم binding جهت دریافت اطلاعات اقلام کالا و محاسبه فاکتور

مراحل ساخت بایندینگ فرم
 
ساخت جداول و فرم

محیط توسعه زی فریم یا همان ZIDE را باز کنید. برای نمایش جداول دیتابیس حتما باید ابتدا یک پروژه و اپلیکیشن ساخته و دیتابیس پروژه تان را به آن متصل کرده باشید. در نوار وظیفه بالای صفحه گزینه Database Explorer را انتخاب کرده تا جداول ساخته شده درون دیتابیس (جداول Invoice و InvoiceItems در این مثال) در پنجره سمت چپ صفحه مشاهده شود.

زی فریم

در صورتی که جداول را مشاهده نمی کنید، بر روی این پنجره راست کلیک کرده و گزینه Reload Database Schema را انتخاب کنید تا جداول بارگذاری شوند. حال در پنجره سمت چپ بر روی Tables کلیک کرده تا لیست جداول موجود در دیتابیس نمایش داده شود.

زی فریم
زی فریم

در نوار ابزار بالای صفحه، گزینه New Form By Table را انتخاب کرده تا پنجره Create Form With Table باز شود.

زی فریم

حال جدولی که می خواهید یک فرم بر اساس آن بسازید را انتخاب کنید تا اطلاعات آن جدول درون این پنجره نمایش داده شود. سپس در قسمت پایین پنجره بر روی Create Form کلیک کنید و ok را بزنید.

زی فریم

برای مشاهده فرم های ساخته شده از دکمه Form List در نوار ابزار بالای صفحه استفاده می شود. اگر فرایند فرم به درستی انجام شده باشد، می توانید فرم ساخته شده را در پنجره Form List مشاهده کنید.

زی فریم

برای مشاهده مشخصات مربوط به یک فرم می توان درون پنجره Form List بر روی فرم مورد نظر کلیک کرد تا مشخصات آن فرم در پنجره ای با نام Properties در سمت راست صفحه مشاهده شود.

زی فریم

در پنجره Properties می توان ویژگی های مربوط به آن فرم را مدیریت کرد. به عنوان مثال برای تغییر نام ظاهری فرم (که به کاربر نمایش داده می شود) می توان از قسمتcaption استفاده نمود و نام جدید مد نظر خود را درون آن نوشت (به صورت پیش فرض مقدار caption فرم برابر با نام جدولی است که فرم بر اساس آن ساخته شده است.)

زی فریم

همانطور که می دانید هر فرم از تعدادی فیلد تشکیل شده است که کاربر باید آنها را پر کند. به هر یک از این فیلدها یک کنترل گویند. بنابراین فرمی که دارای چهار فیلد باشد، در واقع دارای چهار کنترل است. برای مدیریت و شخصی سازی فیلدها یا همان کنترل های موجود در یک فرم بر روی فرم مورد نظر کلیک کرده تا زیر منوی آن باز شود. سپس گزینه کنترل(Control) را انتخاب کنید.

زی فریم

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

زی فریم

در صفحه مربوط به مشخصات می توانید عنوان (Caption) مربوط به هر کنترل را تغییر دهید. به عنوان مثال عنوان کنترل BuyerName را به “نام خریدار” تغییر می دهیم.

زی فریم

همچنین کنترل تاریخ را نیز به تقویم شمسی تغییر می دهیم. برای این منظور بر روی کنترل مورد نظر راست کلیک کرده و در قسمت Control Type (که نوع ورودی هر کنترل را تعریف می کند) گزینه DateBox را انتخاب کنید.

زی فریم

سپس در پنجره Properties این کنترل مقدار خصوصیتDeveloper Tag را به Persian Calendar تغییر داده و برای درج تاریخ روز به صورت خودکار از قسمت Default Value مقدار System:Dateرا انتخب نمایید.

زی فریم

هر فرمی که ساخته می شود معمولا دارای دکمه هایی برای ثبت، ویرایش و حذف اطلاعات برای انجام عملیات های Insert (Create)، Update و Delete است. برای آنکه این دکمه قادر به انجام عملیات مورد نظر باشند باید کوئری های مربوط به آنها به سیستم معرفی گردد. بنابراین، در پنجره Forms زیرمنوی فرم مورد نظر را باز کرده و گزینه Action Query را انتخاب نمایید.

زی فریم
ضمیمه کردن یک فرم به فرم دیگر

برای قرار دادن یک فرم درون یک فرم دیگر درون صفحه کنترل های فرم راست کلیک کرده و از قسمت New گزینه Form را انتخاب کنید.

زی فریم

فرم ایجاد شده در واقع یک کنترل است که فضایی برای قرار دادن یک فرم درون یک فرم دیگر ایجاد می کند. این کنترل را مانند دیگر کنترل ها می توان با کشیدن (Drag)، به مکان دلخواه در فرم موجود انتقال داد.

زی فریم

نام مورد نظر برای این کنترل (binding form) را در قسمت Caption بنویسید (در اینجا “اقلام فاکتور”).

زی فریم

اکنون باید بین فرم اصلی و این کنترل ارتباط برقرار کرد (Binding) تا داده های وارد شده در فرم بایندینگ به فرم اصلی اختصاص داده شود. بر روی کنترل Form که درون فرم اصلی ساخته اید، کلیک کرده تا پنجره ی Properties باز شود. در قسمتRelated Form بر روی دکمه Select کلیک کنید تا پنجره Form Access ظاهر گردد.

زی فریم

فرم مورد نظر خود را برای ضمیمه کردن (binding) از قسمت Form Object List انتخاب کرده و در نهایت بر روی OK کلیک کنید.

زی فریم

حال باید کوئری های لازم برای برقراری ارتباط بین این دو فرم نوشته شود. برای برقراری این ارتباط از فیلدهای ID هر دو فرم استفاده می شود (در این مثال Invoice_ID و InvoiceItems_ID). در پنجره Properties مربوط به کنترل Form که در فرم اصلی ساخته شده است، به قسمت Join Data Source رفته و بر روی Query Editor کلیک کنید تا پنجره Query Designer باز شود.

زی فریم

در پنجره Query Designer در قسمت بالا سمت چپ بر روی آیکون Add Table کلیک کنید تا لیست فرم های موجود نمایش داده شود.

زی فریم

اکنون فرم مورد نظر خود را برای ضمیمه کردن انتخاب کرده و آن راAdd کنید.

زی فریم

در پنجره جدید باز شده در بالای صفحه ، ستون های مورد نظر خود را انتخاب کرده تا Query های آن ها در پایین پنجره نمایش داده شود. نهایتا روی OK کلیک کنید.

زی فریم

فرمی که در بخش بالا به عنوان ضمیمه انتخاب شده است، باید به عنوان یک فرم binding به سیستم نیز معرفی گردد. بنابراین، این فرم را (در این مثال فرم frmInvoiceItems) از لیست فرم ها انتخاب کرده و در پنجرهProperties مربوط به آن، از قسمت Form Pattern ، گزینه Binding را انتخاب کنید.

زی فریم

دقت کنید که در یک فاکتور ممکن است تعداد بسیار زیادی کالا درج شود. برای استفاده از خاصیت صفحه بندی در زی فریم و تعیین آنکه در هر صفحه چند قلم کالا (چند رکورد) نشان داده شود، بر روی کنترل Form کلیک کرده و در قسمت Properties خصوصیت Binding Page Size را تغییر دهید.

زی فریم

در این مثال همانطور که در شکل دیده می شود تعیین شد که در هر صفحه 5 رکورد نشان داده شود.

زی فریم
 
محاسبه قیمت کل کالا با استفاده از رویداد جاوااسکریپت

برای محاسبه قیمت کل یک قلم کالا در فرم بایندینک، باید مقدار موجود در کنترل “قیمت” هر کالا در مقدار موجود در کنترل “تعداد” ضرب شود و حاصل آن درون کنترل “قیمت کل” نمایش داده شود. با استفاده از کدهای جاوااسکریپت و رخداد onfocus قیمت کل را به صورت خودکار محاسبه و درون مقدار کنترل “قیمت کل” قرار خواهیم داد.
از زیرمنوی فرم بایندینگ گزینه Java Script Code را انتخاب کنید.

زی فریم

در پنجره باز شده، کد زیر را وارد کنید.

Function ProcessPrice (CPrice, CCount, output)
{
var price = CPrice.value;
var count = CCount.value;
output.value = price*count;
}

در این کد یک تابع جاوااسکریپ با نام دلخواه ProcessPrice تعریف شده است که سه کنترل “قیمت”، “تعداد” و “قیمت کل” را به عنوان ورودی دریافت کرده و مقدار کنترل “قیمت کل” را محاسبه می کند.


به بخش کنترل های مربوط به فرم بایندینگ رفته و بر روی کنترل “قیمت کل” راست کلیک کنید. سپس گزینهJavaScript Function Call را انتخاب کرده تا پنجره JavaScript Event باز شود.

زی فریم

درون پنجره JavaScript Event، در قسمت JavaScript Event List رخداد مورد نظر که در اینجا onfocus است را با دو بار کلیک کردن (double click) انتخاب کنید.

زی فریم

اکنون کنترل های “قیمت”، “تعداد” و “قیمت کل” را به ترتیب از قسمت Form Control List به درون آن بکشید (Drag and Drop) تا به عنوان ورودی برای آن تعریف شود.

زی فریم

در نتیجه کدی مشابه کد زیر درون پنجره JavaScript Event خواهید داشت.

Onfocus = “ ProcessPrice (@Goods_Price@, @Good_Count@, @TotalPrice@) “

اکنون رخداد جاوا اسکریپت ما به طور کامل پیاده سازی شده است و قیمت کل بر اساس قیمت واحد و تعداد به طور خودکار محاسبه می شود. برای محاسبه قیمت های کل کالاهای موجود در فاکتور و نمایش قیمت نهایی که خریدار باید پرداخت نماید، از سرویس نویسی استفاده می کنیم.

 
استفاده از سرویس REST API برای محاسبه قیمت نهایی

در نوار وظیفه بالا صفحه بر گزینه REST Api List کیلک کنید تا پنجره Web Api Manager باز شود.

زی فریم

بر روی New Function کلیک کرده تا پنجره جدیدی به نام REST Function باز شود.

زی فریم

در این پنجره در قسمت Function Name اسم مورد نظر خود برای تابع و در قسمت Base Url Address نام فرم اصلی خود را بنویسید. در قسمت Call Method گزینه POST را انتخاب کرده و در قسمت Query قطعه کدی مشابه تصویر زیر را قرار دهید (نامهایی که در این کد نوشته شده است بر اساس نام جدول استفاده شده در مثال این آموزش و نام فیلدهای موجود در آن است. بنابراین در صورتی که جدول متفاوت باشد، مقادیر ورودی به این کد نیز بر اساس آن خواهد بود). اکنون بر روی دکمه Apply کلیک کنید.

زی فریم

در قسمت Parameterبر روی id کلیک کرده تا از آن به عنوان پارامتر ورودی این سرویس استفاده شود. حال می توانید پنجره Parameter List را ببندید.

زی فریم

بر روی دکمه JScript Code کلیک کرده تا پنجره JavaScript Call Function for REST API باز َشود. در این پنجره یک کد جاوااسکریپت قرار داده شده است که در هر جای برنامه که نیاز به صدا زدن این سرویس باشد می توان با استفاده از این کد جاوااسکریپت آن را صدا زد.

زی فریم

این کد جاوا اسکریپت را کپی کرده و در Javascript Code فرم ضمیمه شده جایگذاری کنید و طبق تصویر زیر کدها را ویرایش کنید.

زی فریم

در بخش Javascript Function Call کنترل “قیمت کل” باید دکمه Invoice_ID را نیز اضافه کرد.

onfocus = “ ProcessPrice (@Goods_Price@, @Good_Count@, @TotalPrice@, @Invoice_ID@ ) “

حال با وارد کردن اقلام کالا، علاوه بر محاسبه قیمت کل هر کالا، قیمت نهایی فاکتور نیز محاسبه می شود.

فرم فرزند چیست؟

یکی از اجزای تشکیل دهنده هر فرم، فرم فرزند (child form) است که این قابلیت را به هر فرم می دهد که بتواند درون خود و از طریق یک سری دکمه های تعریف شده مشابه با مثال تصویر ذیل، یک سری فرم های دیگر را هم داشته باشد. به این گونه فرم ها، فرم های فرزند گویند که نقش فرزند را برای فرم اصلی (والد) ایفا می کنند. از فرم فرزند زمانی استفاده می شود که بخواهیم جهت جلوگیری از شلوغی فرم اصلی و یا به دلیل کم ارتباط بودن آن اطلاعات با اطلاعات موجود در فرم اصلی، اطلاعات فرعی (فرزند) را در فضای دیگری به کاربر نشان دهیم.

زی فریم

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

مراحل ساخت فرم فرزند

در ابتدا جداول مرتبط با فرم های اصلی و فرزند ساخته می شود. در شکل زیر جدول دانش آموز که فرم اصلی است آورده شده است:

زی فریم

برای فرم فرزند هم می توان چنین جدولی را در نظر گرفت. در ابتدا باید فیلد Student_ID به عنوان شناسه جدول به صورت auto increment تعریف شود. برای انجام این عمل می بایست این ستون ابتدا به عنوان کلید اصلی جدول تعریف شود. کافیست بر روی فیلد PARENT_ID کلیک راست کنید و سپس گزینه set primary key را انتخاب کنید. سپس در کادر پایین یا همان کادر column properties گزینه Identity Specification را جستجو کرده و is Identity آن را برابر با yes قرار دهید. با این کار، شروع شمارش به صورت خودکار از عدد یک آغاز می شود.

زی فریم

می توان برای فیلد Parent_Type یک view تعریف کرد که در آن دو رکورد وارد شده باشد. این رکوردها شامل پدر و مادر هستند. می بایست که برای عدم ایجاد مشکل هنگام نمایش در مرورگر، نوع متن داخل کادر مرتبط با فیلد عناوین، به زبان انگلیسی انتخاب شوند.

زی فریم

حال جداول را مطابق با آموزش های مقدماتی از SQL_Server به درون زی فریم واکشی کرده و سپس caption ها و نوع کنترل ها را تغییر می دهیم. در تصویر زیر فرم مرتبط با جدول PARENTS آمده است.

زی فریم

بهتر است مقادیر Student_ID در فرم والیدن در خروجی نمایش داده نشود. از آنجایی که فیلد Parent_Type مقادیرش را باید از View_Parent_Type بگیرد، بر query editor واقع در سمت راست کلیک کرده و مطابق تصویر زیر و از view ساخته شده، مقادیر استخراج را استخراج کنید.

زی فریم

فرم نهایی ساخته شده از جدول Student شبیه به تصویر زیر خواهد شد.

زی فریم

در ادامه، تمامی Action Query ها برای هر دو جدول باید ست شود. برای این کار کافیست در پنل فرم ها که در سمت چپ زی فریم قرار گرفته است، بر روی گزینه Action Query کلیک شود و در آنجا بر روی دکمه write all query واقع در پایین کادر مربوطه کلیک شود تا تمام کوئری های لازم برای فرایندهای ویرایش و حذف و ایجاد، به صورت خودکار نوشته شود (دکمه ذخیره فراموش نشود).
پس از ساخت فرم های لازم، وارد مرحله اصلی کار که همان ساخت فرم فرزند است می شویم. دکمه این فرم هم مانند Action Query در پنل فرم ها قرار گرفته است.

زی فریم

محیط حاضر محیط ساخت یک فرم فرزند است. در نوار ابزار این فرم چهار دکمه قرار داده شده است که به ترتیب برای ایجاد، ذخیره سازی و حذف فرم های فرزند به کار می روند. علاوه بر این سه دکمه، یک دکمه design query نیز قرار داده شده است که برای درج query لازم در قسمت Load Query قرار داده شده است (در ادامه درمورد Load Query توضیحات لازم داده خواهد شد).حال برای ساخت یک فرم فرزند باید در فیلد Child Form Name یک نام لاتین برای این فرایند در نظر گرفته شود. محیط فرم فرزند شبیه به تصویر ذیل است. در قسمت Caption هم می توان عنوانی به زبان فارسی و متناسب با کسب و کار مورد نظر درج نمود. از این نام برای دکمه مورد نظر نیز استفاده خواهد شد. در قسمت مربوط به Reference Form باید فرم PARENTS به عنوان فرم مقصد انتخاب گردد. بعد از آن می بایست در کادر Key Name، فیلد مورد استفاده برای ارتباط با فرم PARENTS انتخاب گردد. لذا از میان موارد موجود در این لیست، بر روی Student_ID کلیک می شود.

زی فریم

همچنین برای مشاهده فرم فرزند در فرم والد، باید بر روی Active checkbox کلیک نمایید تا به حالت تیک خورده تبدیل شود. در قسمت Load Query می بایست یک query درج شود که فهرست اطلاعات مورد نظر را بر اساس مقدار فیلد انتخاب شده نمایش دهد. همچنین این query به یک مساوی ختم می شود تا به وسیله آن زی فریم بتواند برای تکمیل مقدار query، از مقدار موجود در کنترلی که به عنوان Key Name انتخاب شده است، استفاده کند. برای کمک به کاربران، نمونه Query مناسب در قسمت query های کمکی واقع در منوی Help قرار داده شده است.

 
SELECT
DBO.COMPANY.COMPANY_ID,
DBO.COMPANY.DATE_OF_ESTABLISHMENT,
DBO.COMPANY.REGISTER_DATE,
DBO.COMPANY.REGISTERNUMBER
FROM
DBO.COMPANY
WHERE
PARTIES_ENTITIES_ID =

همچنین می توان برای پیدا کردن کد SELECT مناسب و گنجاندن آن در ساختاری مشابه با ساختار بالا، از کدهای نوشته شده در SQL Server استفاده نمود. برای این کار، کافیست بر جدول PARENTS کلیک راست نموده و مسیری مشابه با تصویر ذیل را طی نموده تا به کدهای SELECT دست یابید.

زی فریم

در نهایت با استفاده از کدهای نمونه تولید شده، query مناسب برای قسمت Load Query ایجاد می شود.
در این مثال، فیلد Student_ID در خروجی نمایش داده نخواهد شد، زیرا نیازی نیست که کاربر محتویات این فیلد را مشاهده کند. به همین دلیل در query نوشته شده، این فیلد حذف می گردد. بعد از درج جستجو، می بایست بر روی دکمه ذخیره سازی واقع در بالای کادر فرم فرزند کلیک شود. فرم فرزند ساخته شده بلافاصله در لیست فرمهای فرزند واقع در همان صفحه، نمایش داده خواهد شد.

زی فریم

برای تکمیل کار کافیست تا با کلیک بر روی دکمه Application Cache Management و بعد از آن کلیک بر روی دکمه Clear Cache Data تغییرات را اعمال و در مرورگر مشاهده کنید. پس از آنکه به مرورگر مراجعه کردید، مشاهده خواهید کرد که با کلیک بر روی دکمه ویرایش رکوردهای دانش آموزان، یک دکمه جدید به نام “اولیا” ایجاد شده است (زمانی که بر روی دکمه ایجاد رکورد جدید کلیک شود، این گزینه مشاهده نخواهد شد). در شکل ذیل نمایی از پنجره ویرایش یک رکورد که دکمه جدید درون آن قرار گرفته است، نمایش داده شده است.

زی فریم

با کلیک بر روی این دکمه، وارد پنجره جدیدی می شوید که در آنجا فهرست نام اولیای ثبت شده مشاهده می شود (اگر هیچ داده ای وارد نشده باشد هم یک صفحه خالی برگشت داده می شود). در این محیط می توانید به جدول PARENTS رکوردهایی را اضافه نمائید. این فرم در اصل همان فرم فرزند است که مشخصاتش را در فرم دانش آموزان وارد کرده بودیم. شکل ذیل نمایی از محیط فرم فرزند را در صورت وجود داده برای رکورد دانش آموز منتخب نشان می دهد.

زی فریم

برای ایجاد یک رکورد جدید، می توان طبق روال عادی درج رکورد جدید در فرم های grid عمل کرد. پس در نوار ابزار موجود، بر روی دکمه ایجاد یک رکورد جدید (New) کلیک کنید. در آنجا می توانید اطلاعات اولیا را وارد نمائید. در شکل ذیل یک نمونه از فرم فرزند به صورت تکمیل شده آورده شده است.

زی فریم

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

کنترل در زی فریم

هنگامی که یک فرم در زی فریم ساخته می شود، اگر این فرم بر اساس یک جدول ساخته شده باشد، زی فریم به ازای هر فیلد از جدول یک کنترل به صورت خودکار درون فرم می سازد. اما اگر بر اساس جدول ساخته نشده باشد لازم است تا درون زی فریم کنترل های مورد نیاز تعریف شوند. برای دسترسی به کنترل های تعریف شده درون فرم یا ایجاد یک کنترل جدید می توان به قسمت Control مراجعه نمود. به همین منظور، پس از کلیک بر روی علامت + در کنار فرم و باز کردن فهرست اجزای تشکیل دهنده آن، بر روی اولین گزینه ای که مشاهده می شود (Controls) کلیک نمایید. این گزینه شامل لیست کنترل هایی است که بر اساس جدول انتخابی در زی فریم ساخته شده است؛ به صورت پیش فرض تمامی کنترل ها از جنس Text Box هستند.

 
زی فریم
 

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

 
زی فریم

جهت مدیریت کردن هر یک از کنترلها می توان بر روی آن کنترل کلیک راست نموده تا منوی زیر ظاهر شود.

زی فریم

یکی از مهمترین گزینه ها در این منو گزینهControl Type است که در آن 28 نوع کنترل تعبیه شده است. هر یک از این کنترلها به نحو ویژه ای امکان دریافت اطلاعات از کاربر را فراهم می کنند. به عنوان مثال می توان با تعیین نوع کنترل مشخص کرد که کاربر بتواند اطلاعات را به صورت یک متن وارد کند، بتواند اطلاعات را به صورت یک فایل وارد کند، بتواند یک گزینه از بین گزینه های موجود انتخاب کند و یا چند گزینه از بین گزینه های موجود انتخاب کند و ….

زی فریم

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

ListBoxCheckBoxListLookupTableBoxHidden
DropdownTreeRadioButtonListFindObjectBoxTextBox
ChartFormGridViewDataCombo
MenuDownloadObjectFileCheckBox
FlatTreeSearchTextButtonOption
ClientButtonLabelTreeDateBox
CustomControlTextEditorImageTextArea
 

کنترل Hidden

زی فریم

از این کنترل برای ایجاد یک کنترل پنهان یا Hidden Control در فرم استفاده می¬شود. زمانی که در زی فریم از این کنترل استفاده شود، نوع آن در خروجی HTML نیز Hidden خواهد بود و مقادیر کاربردی (که باید از دید کاربر پنهان باشد) در آن ذخیره و بازیابی می گردد. همچنین برای مدیریت این کنترل می توان آن را با یک کلیک انتخاب نمود تا پنجره Properties در سمت راست ظاهر شود. در این پنجره تمامی خصوصیت های لازم جهت مدیریت و سفارشی سازی کنترل قرار داده شده است.

زی فریم

 

 

کنترل TextBox

زی فریم

از این کنترل زمانی استفاده می شود که لازم است کاربر بتواند یک متن در فرم وارد کند. در واقع این کنترل در خروجی از تگ Input استفاده می کند. عملکرد خصوصیت Developer Tag در این کنترل به صورت زیر است.

Developer Tag

یکی از مهمترین کاربردهایی که این خصوصیت دارد تعیین قالب ورودی اطلاعات است. برای مثال زمانی که نیاز به دریافت اطلاعات مربوط به کارت بانکی 16 رقمی با ساختاری مشابه 3320-9999-8888-6050 باشد، برای آن که کاربر زمان درج اطلاعات راحت تر بتواند 16 رقم را وارد کند، از چنین فرمتی برای ورود اطلاعات استفاده می شود.

0000 – 0000 – 0000 – 0000

به عبارت دیگر، زمانی که کاربر مشغول ثبت داده ها است، سیستم چنین فرمتی را برای اطلاعات ورودی در نظر می گیرد. در نتیجه وقتی کاربر 16رقم 6050888899993320 را وارد کند، در صفحه نمایش آن را به صورت 3320-9999-8888-6050 مشاهده خواهد کرد.

 
کنترل DataCombo
زی فریم

مهم ترین خصوصیت در این کنترل، خصوصیتDataSource است که از آن برای بارگذاری اقلام اطلاعاتی داخل این کنترل استفاده می شود. برای مثال اگر لیست انواع جنسیت مد نظر باشد، باید داخل جدولی با عنوانGender ، اقلام اطلاعاتی مانند آقا و خانم وجود داشته باشد تا مقدار DataSource برابر با چنین عباراتی قرار داده شود.

SELECT Gender_ID, Gender_Title FROM Gender

در نتیجه مقادیر واکشی شده از بانک اطلاعاتی داخل این کنترل نمایش داده می شود.

در کد فوق دو عدد اقلام اطلاعاتی Gender_ID و Gender_Title از جدول واکشی شده است. مقدار اول به عنوان کلید استفاده شده و به کاربر نمایش داده نمی شود، اما مقدار دوم همان اطلاعاتی است که به عنوان خروجی به کاربر نمایش داده می شود.

زی فریم
 
کنترل CheckBox
زی فریم

از این کنترل زمانی استفاده می شود که لازم است کاربر وضعیت یک مقدار دوگانه را تعیین کند. به عنوان مثال فعال یا غیرفعال بودن، باز یا بسته بودن، تسویه یا عدم تسویه و …

 
کنترل Option
زی فریم

از این کنترل زمانی استفاده می شود که لازم است کاربر از بین چند گزینه تنها یکی از آنها را انتخاب نماید. به عنوان مثال تعیین جنسیت (خانم یا آقا)، تعیین نقش (دانشجو یا فارغ التحصیل یا استاد) و غیره.

کنترل DateBox
زی فریم

اگر در برنامه برای دریافت اطلاعاتی نظیر تاریخ تولد از کاربر نیاز به نمایش یک تقویم باشد، می توان از کنترل Date Box استفاده نمود. مهمترین خصوصیت این کنترل Developer Tag است و دیگر خصوصیات آن calendar type است.

زی فریم
 

Calendar Type:
درون خصوصیت Calendar Type این کنترل گزینه های زیر به صورت پیش فرض قرار داده شده است.

زی فریم

با انتخاب هر کدام از گزینه ها می توان مبنای نمایش تاریخ را به قمری، شمسی و میلادی تغییر داد.

زی فریم
 
کنترل TextArea
زی فریم

زمانی که در برنامه نیاز به کنترلی باشد که در آن کاربر متنی چند خطی (همچون توضیحات، مشروح اخبار و …) را وارد نماید از این کنترل استفاده می شود. تمامی خصوصیات این کنترل همانند کنترلText Box است.

 
کنترل LookUpTable
زی فریم

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

زی فریم

جهت استفاده از کنترل Lookup Table Box ابتدا باید این کنترل به فرم مورد نظر اضافه شود. می توان در همان ابتدا جهت سهولت مشاهده، مقدار خصوصیتCaption را برابر با “اطلاعات شخص” قرار داد. سپس کدی مشابه کد زیر برای دسترسی به داده های مرتبط با نام، نام خانوادگی و کد ملی افراد در قسمتDataSource نوشته می شود. توجه شود که فیلد اول در کد نوشته شده (Person_ID) به عنوان کلید استفاده شده و در خروجی نشان داده نخواهد شد.

 

SELECT dbo.Person.Person_ID
, dbo.Person.NationalNumber
, dbo.Person.FName
, dbo.Person.Lname
FROM dbo.Person

با این کار کنترل ایجاد شده در خروجی به شکل زیر نمایان می گردد.

زی فریم

همانطور که مشاهده می شود عملکرد این کنترل به این صورت است که اگر کاربر اطلاعات کد ملی را وارد نماید و بر روی دکمه ENTER بزند، اطلاعات مربوط به نام و نام خانوادگی در فیلدهای مربوطه پر خواهد شد. در این کنترل دکمه ای نیز برای هدایت کاربر به یک فرم دیگر جهت انتخاب شخص مورد نظر وجود دارد. این دکمه زمانی کاربرد دارد که فرمی برای این کار ساخته شده باشد. در غیر این صورت خصوصیتی وجود دارد به عنوان Show Find Form که اگر مقدار آن برابر با Disable قرار داده شود، دیگر این دکمه ظاهر نخواهد شد. اما اگر استفاده از یک فرم دیگر مد نظر باشد، باید مقداری برای خصوصیت Related Form در نظر گرفت. برای این کار باید بر روی دکمه Select کلیک شده تا پنجرهAccess Form ظاهر شود.

زی فریم

حال می توان از داخل این پنجره، فرم مورد نظر را برای برقراری ارتباط انتخاب نمود.

زی فریم
 
کنترل FindObjectBox
زی فریم

این کنترل یکی از کنترل های پرکاربرد است که به کاربر این امکان را می دهد تا به راحتی اطلاعات مورد نظر خود را از میان انبوهی از رکوردها انتخاب نماید. برای مثال اگر در یک سامانه مدیریت انبارها حدود 200 انبار وجود داشته باشد و کاربر بخواهد یک انبار را از میان آنها انتخاب نماید. با وارد کردن یک واژه، سیستم لیستی از تمامی انبارهایی که آن واژه درون اسم آنها به کار رفته است را نمایش می دهد تا کاربر به راحتی از میان آنها انتخاب نماید. برای تعریف این نوع از کنترل، درون خصوصیتDataSource کنترل کدی مشابه کد زیر وارد می شود.

 
SELECT dbo.Warehouse.Warehouse_ID
, dbo.Warehouse.Warehouse_TitleFROM dbo.Warehouse

با استفاده از این کد به کاربر این اجازه داده می شود تا انبار مورد نظر را بر اساس عنوان انبار انتخاب نماید. هنگامی که کاربر داخل این کنترل واژه ای وارد کند مانند واژه “مرکزی”، لیست تمامی انبارهایی که واژه “مرکزی” در آنها وجود دارد نمایان می شود و کاربر می تواند انبار مورد نظر خود را انتخاب نماید.

زی فریم

در این کنترل نیز همانند کنترل LookupTableBox خصوصیتی با عنوانRelated Form وجود داردکه دقیقا همان کارایی را دارد.

دسته دوم
کنترل GridView
 
زی فریم

کنترل GridView برای نمایش Grid است که در تصویر زیر یک نمونه از خروجی آن مشاهده می شود.

زی فریم

مقداری که در خصوصیت DataSource (یعنی Query دیتابیسی) برای این کنترل در نظر گرفته می شود توسط برنامه اجرا شده و مقدار خروجی، داخل این کنترل نمایش داده خواهد شد. یکی دیگر از قابلیت های این کنترل آن است که به سادگی می توان در داخل هر فیلد کنترل مورد نظر را نیز قرار داد.

 
کنترل File

از کنترل File برای ذخیره فایل های بارگذاری شده از سمت کاربر استفاده می شود.

زی فریم
 
 
زی فریم

با استفاده از این کنترل می توان فایل های دریافتی از سمت کاربر را در داخل بانک اطلاعاتی و همچنین داخل Application Server به صورت ساختار یافته ذخیره نمود.


روش ذخیره فایل به صورت ساختار یافته در Application Server:

داخل فایل zf.configdata در پروژه اجرایی، خصوصیتی با عنوان filedatabasepath وجود دارد. در صورتی که این خصوصیت مقدار دهی شده باشد، اطلاعات داخل این مسیر ذخیره سازی خواهد شد، در غیر این صورت داخل پوشه FileDataBaseContent اطلاعات ذخیره می گردد.

مدل ذخیره سازی:

پوشه اول همنام با نام فرم ذخیره می شود و داخل این پوشه، پوشه ای دیگر همنام با نام کنترل ساخته خواهد شد (اگر نام فرم مورد نظرUser و نام کنترل برابر با User_Image باشد، یک پوشه با نامUser و درون آن یک پوشه با نامUser_Image ساخته می شود.) هنگام ذخیره کردن اطلاعات، زمانی که کاربر یک فایل را Upload کند، زی فریم داده این کنترل را با مقدار کلید اصلی فرم (اولین کنترل موجود در هر فرم، کلید اصلی آن فرم محسوب می شود) و با پسوند DAT ذخیره می کند. البته این فرایند در صورتی رخ می دهد که توسعه دهنده نحوه ذخیره سازی را در خصوصیت Save In File = Enable انتخاب کرده باشد. در غیر این صورت، اطلاعات با استفاده از کد ذخیره سازی Sql داخل بانک اطلاعاتی ذخیره می شود.

 
کنترل Button
 
زی فریم
 

برای انجام یک پردازش سمت سرور می توان یک دکمه با استفاده از کنترل Button ایجاد نمود. زمانی که بر روی این دکمه کلیک شود رویداد مورد نظر توسعه دهنده (به عنوان مثال ثبت اطلاعات فرم) رخ خواهد داد.

زی فریم

در کنترل Button چند رفتار پرکاربرد درون خصوصیتDefault Behavior به صورت پیشفرض قرار داده شده است. این رفتارها شامل:

1. Navigate برای جابه جایی به یک آدرس استفاده می شود (آدرس مقصد باید درونDeveloper Tag نوشته شود)
2. Save عملی مشابه دکمه “ذخیره سازی” در نوار ابزار انجام می دهد.
3. New عملی مشابه دکمه “جدید” در نوار ابزار انجام می دهد.
4. Delete عملی مشابه دکمه “حذف” در نوار ابزار انجام می دهد.
5. Print عملی مشابه دکمه “چاپ” در نوار ابزار انجام می دهد.
6. Grid Object To Excel برای گرفتن خروجی اکسل استفاده می شود. این گزینه عملی مشابه دکمه “Excel Report” در نوار ابزار انجام می دهد.
7. Custom Excel Report برای گرفتن خروجی اکسل استفاده می شود. این گزینه عملی مشابه دکمه “Excel Report” در نوار ابزار انجام می دهد.

کنترل Tree
 
زی فریم

این کنترل برای نمایش ساختار درختی در پروژه به کار می رود. زمانی که توسعه دهنده بخواهد داده ای را به صورت سلسله مراتبی به کاربر نمایش دهد، از این کنترل استفاده خواهد کرد. تنها با نوشتن یک کد ساده، زی فریم اطلاعات را به صورت مطلوب در اختیار کاربر قرار داده و کاربر می تواند گزینه مورد نظر خود را انتخاب نماید. برای واکشی اطلاعات از بانک اطلاعاتی و نمایش آنها داخل کنترل مورد نظر، کد SQL زیر داخل خصوصیتDataSource کنترل نوشته می شود.

SELECT DBO.TreeStructure.ID
, DBO.TreeStructure.Parent_ID
, DBO.TreeStructure.ProvinceCity
FROM DBO.TreeStructure

جدولی که در دیتابیس ساخته می شود نیز باید ساختار درختی داشته باشد تا بتوان از آن در کنترل Tree استفاده نمود. به عنوان مثال ساختار درختی جدول استانها و شهرهای ایران به شکل زیر است.


• فیلد اول کلید جدول است.
• فیلد دوم باید کد والد باشد.
• فیلد سوم مقدار نام های قابل نمایش است.
• هیچ کدام از مقادیر اول و دوم نبایدNULL باشد.

 

نمایی از خروجی کنترل در تصویر زیر نمایش داده شده است.

زی فریم
 
 
کنترل Image
 
زی فریم

برای نمایش تصویر در خروجی (به عنوان مثال نمایش عکس پرسنل یا نمایش تصاویر بارگذاری شده توسط کاربر) از کنترل Image استفاده می شود. تصویر مورد نظر می تواند بر اساس یک محتوای ذخیره شده داخل بانک اطلاعاتی باشد، یا مربوط به یک داده ذخیره شده داخل فرمی دیگر و یا داخل همین فرم جاری باشد.

زی فریم

در این کنترل دو خصوصیت مهم وجود دارد:

• Reference Form
• Reference Field

اگر اطلاعات در همین فرم جاری ذخیره گردد دیگر نیازی به مقداردهی به خصوصیت Reference Form نیست. اما امکان دارد در پروژه ای یک فرم برای ثبت اطلاعات کاربر (Reference Form) و یک فرم برای نمایش اطلاعات ایجاد شده باشد و تصویر نمایش داده شده در فرم دوم از فرم اول (Reference Form) استخراج شود. داده یا فایل مورد نظر داخل یک کنترل در فرم اول ذخیره می گردد که به آن Reference Field گفته می شود. این کنترل باید از نوع کنترل File باشد.

 
کنترل CheckBoxList

با استفاده از این کنترل می توان مجموعهای از چک باکس ها (Check Box) را به کاربر نشان داد تا بر اساس انتخاب کاربر اطلاعات مورد نظر در بانک اطلاعاتی ذخیره شود.

زی فریم
زی فریم
 
 
نحوه عملکرد

برای نمونه فرض شود که توسعه دهنده می خواهد در یک فرم مربوط به تعریف کاربر، لیست گروه های کاری نمایش داده شود تا بتوان برای کاربر مورد نظر مشخص نمود که به کدام یک از گروه های کاری دسترسی داشته باشد.
کنترل Checkbox list با کنترل کلیدی فرم در ارتباط است. به طور استاندارد اولین کنترل موجود در فرم کنترل کلید بوده که از جنس Hidden است. در فرم جاری یک کنترل کلید با نام SYS_USER_ID ساخته می شود.


SYS_USER_ID در Query های مربوط به این کنترل با شاخص KEY@ قابل دسترسی است.

در مرحله اول سامانه با استفاده از کوئری درج شده در خصوصیت Query DataSource کلیه مقادیری که باید نمایش دهد را واکشی می کند. در مرحله دوم مقادیری که انتخاب شده اند را واکشی کرده و تیک می زند. در مرحله سوم هنگام ذخیره اطلاعات، Query Delete بر اساس کلید فرم اجرا می شود. در مرحله چهارم مقادیری که کاربر درون فرم تیک زده‌ است در بانک اطلاعاتی ذخیره می گردد.

زی فریم
در واقع این کنترل نیاز به چهار Query دارد


DataSource Query

این Query، مقادیر اصلی که باید بارگذاری شوند را واکشی میکند (یعنی تمامی گزینه ها برای نمایش)

SELECT SYS_USERGROUP_ID,USERGROUPNAME
FROM BUSINESS_DESK_MD.DBO.SYS_USERGROUP
 

Fill Queryبا این Query مقادیری که انتخاب شده اند، واکشی شده و checkbox مربوط به آن تیک می خورد.

SELECT SYS_USERGROUP_ID
FROM BUSINESS_DESK_MD.DBO.SYS_USERGROUPLIST
WHERE SYS_USER_ID =

در این قسمت زی فریم به صورت خودکار بعد از علامت مساوی مقدار کلید را جایگزین کرده و نیازی نیست توسعه دهنده چیزی بعد از مساوی درج نماید.Update Query
با این Query اطلاعات مربوط به موارد انتخاب شده در سیستم ذخیره می شود.

INSERT INTO BUSINESS_DESK_MD.DBO.SYS_USERGROUPLIST
(SYS_USER_ID , SYS_USERGROUP_ID)
VALUES
( @KEY , @ID )

با اجرای کد فوق، سیستم فقط اطلاعاتی که تیک خورده را انتخاب کرده و در جدول ثبت می نماید.Delete Query
با این Query تمامی موارد مربوط به کلید جاری حذف می شود.

DELETE FROM BUSINESS_DESK_MD.DBO.SYS_USERGROUPLIST
WHERE SYS_USER_ID =
دسته سوم
کنترل RadioButtonList
 
زی فریم

این کنترل همانند کنترلCheckbox List است، با این تفاوت‌که خصوصیات Query Delete و Update در آن وجود ندارد. این موضوع به این دلیل است که کاربر فقط می¬تواند یک مقدار را انتخاب کند و آن گزینه توسط Query ذخیره سازی فرم در بانک اطلاعاتی می¬نشیند.

زی فریم

 

کنترل Form
 
زی فریم

یکی از مهم ترین قابلیت های زی فریم استفاده از فرم ها به صورت تو در تو (Nested) است. این کنترل زمانی کاربرد دارد که در پروژه یک فرم ساخته شده باشد و کاربر بخواهد از این فرم درون فرم دیگری استفاده کند.
برای مثال در حالتMaster/Detail زمانی که در پروژه یک فرم والد وجود داشته باشد و توسعه دهنده بخواهد داخل این فرم لیستی از اطلاعات دیگر (مانند فرم فاکتور) که مربوط به همین رکورد است را نمایش دهد، از قابلیت کنترل Form استفاده می شود.
فاکتور علاوه بر اطلاعات پایه در Header، می تواند دارای اقلام اطلاعاتی دیگری نیز باشد که با استفاده از کنترل Form می توان این جزئیات اطلاعاتی را به شکل ساختار زیر حذف و اضافه نمود.

زی فریم

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

زی فریم

فرایند مربوط به ذخیره سازی با استفاده از قسمت Action Query صورت می پذیرد (برای دسترسی به Action Query، روی فرم کلیک راست کرده و سومین گزینه “Action Query” انتخاب می شود. در ادامه توضیحات بیشتر داده خواهد شد.) در فرم والد، برای کنترل اطلاعات و دسترسی کد زیر در خصوصیتDataSource ثبت می شود.

 
SELECT
dbo.Parties_Entities_Access.Parties_Entities_Access_ID,
dbo.Parties_Entities_Access.Parties_Entities_ID
FROM
dbo.Parties_Entities_Access

از طریق خصوصیتRelated Form از بین لیست فرم ها، فرم مورد نظر همانند تصویر زیر انتخاب می شود.

زی فریم
 
کنترل DownloadObject
 
زی فریم

این کنترل برای دانلود کردن محتوایی که قبلا در سامانه بارگذاری شده است کاربرد دارد و باید رابطه ای منطقی با موجودیت قابل دانلود در سامانه تعریف شود.
همانگونه که در قسمت کنترل File توضیح داده شد، برای بارگذاری اطلاعات از این کنترل استفاده می شود و در مقابل برای دانلود محتوا باید از کنترلDownloadObject استفاده شود.

زی فریم

در میان خصوصیات این کنترل نیز خصوصیات Reference Form و Reference Field مانند کنترل Image مشاهد می شود که دارای همان ساختار بوده و به منظور اجرای عملیات دانلود، با کلید اصلی فرم نیز در ارتباط هستند.
اما در این کنترل، خصوصیت متفاوتی با عنوانDefault File Type مشاهده می شود که با استفاده از آن می توان نوع فایل قابل دانلود را تعریف نمود. همانطور که در تصویر مشاهده می شود، مقدار این خصوصیت برابر با pdf قرار داده شده است تا با کلیک بر روی لینک دانلود، تنها فایلهای با پسوندPDF قابل قابل دانلود باشد.

 
کنترل SearchText
 
زی فریم

این کنترل دقیقا همانند کنترل FindObjectBox عمل می کند، با این تفاوت که دکمه ای برای پیداکردن فرم مرجع در کنار Textbox خروجی وجود ندارد (خروجی فقط یکTextBox است که با تایپ کردن بخشی از گزینه مورد نظر، تمام گزینه هایی که آن عبارت در آنها وجود دارد پیشنهاد می شود.)

 
کنترل Label
 
زی فریم

زمانی که توسعه دهنده بخواهد یک متن و یا داده را به کاربر نمایش دهد، بدون آنکه کاربر بتواند آن داده را تغییر دهد از کنترل Label استفاده می شود. خصوصیات این کنترل دقیقا همانند کنترل Textbox است.

 
کنترل TextEditor
 
زی فریم

زمانی که در یک پروژه نیاز به یک کنترل با توانایی ویرایش متن باشد، می توان از این کنترل استفاده نمود. خصوصیات این کنترل همانند Text Aria و Textbox است.

زی فریم
 
کنترل ListBox
 
زی فریم

از این کنترل برای نمایش یک لیست استفاده می شود. به منظور استفاده و نمایش اطلاعات باید خصوصیت DataSource این کنترل مقدار دهی شود. در تصویر زیر نمونه ای از خروجی کنترلListbox مشاهده می شود.

زی فریم
 
کنترل DropDownTree
 
زی فریم

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

زی فریم
 
کنترل Chart
 
زی فریم

این کنترل برای نمایش اطلاعات با فرمت نمودار استفاده می شود.

 
کنترل Menu
 
زی فریم

این کنترل با توجه به مقداری که در DataSource نوشته شود، ساختار منو می سازد که با استفاده از کدهای جاوا اسکریپت می توان آن را مدیریت نمود.

 
کنترل FlatTree
 
زی فریم

این کنترل همانند دیگر کنترل های Treeview عمل می کند، با این تفاوت که تمامی اطلاعات داخل یک باکس نمایش داده می شود.

زی فریم
 
کنترل ClientButton
 
زی فریم

این کنترل تنها برای انجام دادن کار و یا یک فرایند در سمت کلاینت قابل استفاده است. برای این منظور باید کدهای جاوا اسکریپت مربوطه برای این کنترل نوشته شود. این کنترل از کنترل های بسیار پرکاربرد بوده که از کاربردهای آن می توان به فراخوانی سرویس ها و مدیریت برخی رویدادها در سمت کلاینت اشاره نمود.

 
کنترل Custom
 
زی فریم

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

نمایش کنترل در نوار ابزار
کاربرد

هر فرمی از نوع Grid Form که در زی فریم ساخته می شود، خروجی آن در مرورگر دارای یک نوار ابزار (Toolbox) با تعدادی دکمه خواهد بود. هر کدام از این دکمه ها دارای قابلیتی است که به کاربر برای مدیریت آسان اطلاعات فرم و پیمایش میان آنها کمک می کند. از این دکمه ها می توان برای ایجاد یک رکود جدید، ویرایش و یا حذف رکوردهای موجود، پرینت، پیمایش بین صفحات و … استفاده نمود. اما وجود همه این دکمه ها برای تمامی فرمها الزاما ضرورتی ندارد؛ به همین دلیل در بسیاری از موارد، توسعه دهنده خود تصمیم به غیرفعال کردن بعضی از آنها می گیرد. برای آشنایی با نحوه فعال و یا غیرفعال سازی دکمه های موجود در نوار ابزار به آموزش آشنایی با Button Rule در زی فریم مراجعه کنید.

زی فریم

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

افزودن کنترل به نوار ابزار

برای اضافه نمودن یک کنترل در قسمت نوار ابزار ابتدا از داخل فرم، کنترل مورد نظر را انتخاب کرده و در پنجره Properties مقدار خصوصیت Add In Toolbox را برابر با Enable قرار دهید. در تصویر زیر یک کنترل از جنس Text Box که برای دریافت کدملی از مخاطب ساخته شده است را به نوار ابزار انتقال خواهیم داد.

زی فریم

سپس با استفاده از دکمه Save تغییرات را در فرم ذخیره کرده و Clear Cache کنید.

زی فریم

همانطور که مشاهده می شود یک Text Box در قسمت نوار ابزار اضافه شده است. توجه کنید که در ابتدا هیچ مقداری درون این Text Box مشاهده نمی شود زیرا هنوز هیچ یک از ردیف های اطلاعاتی موجود (رکورد) در Grid انتخاب نشده است. به محض آنکه یک رکورد انتخاب شود، مقدار عددی کد ملی موجود در آن رکورد درون Text Box نوار ابزار نمایش داده خواهد شد.

زی فریم

مشاهده خواهید کرد که با انتخاب سطرهای مختلف، کد ملی مربوط به همان رکود درون Text Box نمایش داده می شود.

خصوصیات کنترل
مقدمه

پس از تعیین نوع کنترل می توان خصوصیات آن را نیز مدیریت نمود. به همین منظور باید ابتدا کنترل مورد نظر را انتخاب نمود تا در قسمت سمت راست IDE پنجره مربوط به خصوصیات(Properties) فعال شود. سپس می توان به مدیریت و تغییر خصوصیت های آن کنترل پرداخت. در زی فریم نه تنها تعدادی خصوصیت مشترک برای کنترل ها وجود دارد، بلکه برای هر کنترل خصوصیات مختص به آن نیز طراحی شده است.

زی فریم

همچنین می توان از مسیر زیر همانطور که در تصویر نمایش داده شده است، جعبه ابزار انتخاب کنترل جهت قرار دادن درون یک فرم را (در منوی Design از طریق مسیر زیر) مشاهده کرد.

Design >> Toolbox

زی فریم
 
 
انواع دسته بندی

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

1)متنی و رشته ای،
2)عددی،
3)کوئری،
4)فرم
5)مقادیر از پیش تعریف شده،
6) لیستی

نمونه هایی از این پنج دسته در ادامه آورده شده است.

زی فریم
 
نمونه یک خصوصیت با مقدار متنی و رشته ای
 
 
زی فریم
 
نمونه یک خصوصیت با مقدار عددی
 
 
زی فریم
 
نمونه یک خصوصیت با مقدار Query

در خصوصیات هایی از جنس کوئری زمانی که بر روی دکمهQuery Editor کلیک شود پنجره زیر باز شده و می توان کد مورد نظر برای این خصوصیت را درج نمود.

زی فریم
 
زی فریم
 
نمونه یک خصوصیت با مقدار فرم (برای قرار دادن یک فرم دیگر درون فرم جاری)

در خصوصیت از جنس فرم که در تصویر بالا مشاهده می شود، زمانی که بر روی دکمهselect کلیک شود فرم زیر نمایان خواهد شد.

زی فریم
 

در این پنجره لیست تمامی فرم های موجود در سامانه مشاهده می شود تا کاربر بتواند فرم مورد نظر را انتخاب کند.

 
زی فریم
 
 
نمونه یک خصوصیت با مقادیر از پیش تعریف شده و لیستی

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

خصوصیات اجباری

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

زی فریم
 
 
انواع خصوصیات
Name

این خصوصیت مشخص کننده نام کنترل است که از آن در کدنویسی برای اشاره به یک کنترل استفاده می شود. این خصیصه یک خصوصیت عمومی بوده و در تمامی کنترل ها وجود دارد.

 

مقدار وارد شده برای خصوصیت Name حتما باید با الفبای لاتین نوشته شده باشد.

 
Active

از این خصوصیت برای فعال یا غیرفعال کردن کنترل استفاده می شود. در صورتی که مقدار آن برابر Disable قرار گیرد، آنگاه این کنترل در نرم افزار خروجی قابل مشاهده نخواهد بود. این خصوصیت در تمامی کنترل ها موجود است.

 

Caption

این خصوصیت در دیکشنری داخلی زی فریم کاربرد بسیاری دارد. همان طور که پیشتر اشاره شد، خصوصیت Name برای اشاره به یک کنترل در کدنویسی بک اند استفاده می شود. همچنین نام این کنترل در خروجی نیز به طور پیش فرض همین نام خواهد بود. چنانچه توسعه دهنده بخواهد کاربر نهایی، این کنترل را با نام دیگری مشاهده کند، نام دلخواه خود را در قسمت Caption وارد می کند. برای مثال فرض کنید کنترلی با Name: Duration_ID تعریف شده است. چنانچه برای این کنترل در قسمت Caption مقدار “کد دوره” ثبت شود، دیگر برای این کنترل در سامانه در تمامی خروجی ها (مانند تیتر ستون ها در Grid) و عنوان های نمایشی از چنین واژه ای استفاده می شود. به عبارت دیگر، کاربر نهایی به جای مشاهده Duration_ID واژه “کد دوره” را مشاهده خواهد کرد. این خصوصیت در تمامی کنترل ها موجود است.

Database Column

اگر فرم براساس یک جدول و یا یک View ساخته شده باشد، هر یک از کنترل ها به یکی از فیلدهای جدول متصل خواهد بود. این خصوصیت نمایانگر نام فیلدی است که این کنترل بر اساس آن ساخته شده و به آن متصل است. در نتیجه هنگام واکشی اطلاعات، سیستم برای پر کردن این کنترل از ستونی از جدول دیتابیس استفاده می کند که همنام با فیلد Database Column باشد. متعاقبا هنگام وارد کردن اطلاعات در این کنترل نیز سیستم این اطلاعات را در ستون همنام با فیلد Database Column ذخیره می کند. این خصوصیت در تمام کنترل های موجود است.

DataSource

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

Cache Keyword

در زی فریم قابلیتی وجود دارد که با استفاده از آن می توان در سمت Application Server اطلاعات را Cache نمود تا برای دسترسی به اطلاعات نیازی به بارگذاری مجدد از سمت بانک اطلاعاتی نباشد. این خصوصیت به توسعه دهنده کمک می کند تا کلیدی را برای ذخیره سازی و بازیابی چنین خصوصیاتی در نرم افزار تعریف کند.

Default Value

فهرست مقادیر موجود در این خصوصیت در تصویر زیر آورده شده است.

زی فریم
 

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

System Dateاطلاعات داخل کنترل را برابر با تاریخ جاری پر می کند.
System Timeاطلاعات داخل کنترل را برابر با ساعت جاری پر می کند.
Calculatorزمانی که توسعه دهنده بخواهد محاسباتی را برای یک کنترل انجام دهد از این گزینه استفاده خواهد کرد. روال محاسباتی داخلDataSource اجرا می شود.
Session Valueدر برخی مواقع نیاز است تا مقادیری که درSession ذخیره شده است در فرم جاری بارگذاری شود (برای مثال نام و نام خانوادگی کاربر جاری). وقتی که از این مقدار برای حالت پیش فرض استفاده شود، مقدار موجود درSession Value که در Data source نوشته شده است در داخل فیلد مورد نظر جایگذاری می شود.
 
 

Developer Tag

برای هر کنترل این مقدار کار خاصی را انجام می دهد.

 

Sequence Number

مقدار این خصوصیت یک عدد است که بر مبنای آن، اولویت و جایگاه شماره ای کنترل در فرم مشخص می شود. به عنوان مثال، اگر مقدار Sequence Number برابر با 3 باشد، این کنترل سومین کنترل موجود در فرم خواهد بود.

 
 

Width

با وارد کردن یک مقدار (به صورت عددی) برای این خصوصیت، نرم افزار خروجی طول این کنترل را به صورت Inline برابر با همین مقدار در نظر خواهد گرفت. مقدار عدد وارد شده براساس معیار اندازه گیریPixel عمل می کند.

 

Required Text

وقتی پر کردن یک فیلد از سمت کاربر ضروری باشد اما کاربر آن را خالی بگذارد، باید یک پیام خطا به اون نشان داده شود. پیام مورد نظر را می توان درون این خصوصیت وارد نمود تا به کاربر نشان داده شود. برای مثال اگر پر کردن فیلد “نام” از سوی کاربر ضروری باشد، می توان درون این خصوصیت جمله ” کاربر گرامی وارد کردن اطلاعات مربوط به نام شما در سیستم اجباری است.” را نوشت تا هنگام خطا به او نشان داده شود.

 

Regular Expression

با مقدار دهی به این خصوصیت می توان درستی ساختار اطلاعات ورودی از سمت کاربر را بررسی نمود. برای مثال اگر بررسی صحت اطلاعات شماره تماس دریافتی از سمت کاربر مد نظر باشد تا کاربر نتواند هر نوع داده ای را در سیستم ثبت کند، می توان از رشته زیر درون خصوصیت Regular Expression استفاده کرد. ” ^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$” توجه داشته باشید که نیازی به حفظ کردن این رشته و دیگر رشته های Regular Expression نیست، زیرا انواع مدل هایRegular Expression در اینترنت موجود بوده و می¬توان صرفا آنها را کپی و پیست نمود.

CSS Class

این خصوصیت همانند CssClass در فرم است و چنین خصوصیتی برای تمامی کنترل ها به جز کنترل Hidden وجود دارد. از این خصوصیت برای دریافت کلاس گرافیکی (ظاهر نمایش کنترل به کاربر) استفاده می شود.

 

Validator Css Class

ظاهر گرافیکی پیامی که در هنگام استفاده از Required Text و Regular Expression به کاربر ارائه می شود را نیز می توان با استفاده از کدهای CSS طراحی نمود. برای این منظور می توان از خصوصیت Validator CSS Class استفاده کرد.

 

Read Only

زمانی که مقدار این خصوصیت Enable باشد، کاربران در سامانه خروجی دیگر نمی¬توانند محتوای داخل کنترل را تغییر دهند.

 

Disable

در حالتی که مقدار این خصوصیت برابر باEnable باشد، کنترل مورد نظرDisable می شود و هیچ گونه فعالیتی بر روی آن انجام¬پذیر نخواهد بود. این خصوصیت در کنترل هایی مانندButton کاربرد بیشتری دارد، زیرا در کنترل Textbox حالت Read-only و Disable شباهت بسیار زیادی به هم دارند.

 

Tooltip Text

هنگامی که توسعه دهنده نشانگر ماوس را بر روی یک کنترل نگه دارد، متنی حاوی توضیحات و راهنما ظاهر می¬شود که به آن Tooltip گویند. برای قرار دادن و یا تغییر این متن می توان از خصوصیت Tooltip Text استفاده کرد تا به عنوان یک راهنما، توسعه دهنده را در هنگام استفاده از زی فریم یاری رساند.

Hidden Control چیست؟

کنترل های پنهان (Hidden Control) کنترلهایی هستند که از دید کاربران پنهان است. این نوع از کنترل ها در وبسایت ها و اپلیکیشن های مختلف کاربرد های بسیاری دارند. به این صورت که امروزه مدیریت بسیاری از کارهایی که در این وبسایت ها و اپلیکیشن ها انجام داده می شود با استفاده از کنترل های پنهان صورت می گیرد. به عبارت دیگر، این کنترل ها از نگاه کاربران سایت پنهان هستند اما می توان درون این کنترل ها مقادیری را ذخیره و در جایی دیگر از آنها استفاده کرد. به عنوان مثال برای ذخیره اطلاعات Session کاربران می توان از کنترلهای پنهان استفاده نمود. برای آشنایی با مفهوم Session به آموزش Session مراجعه کنید.

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

خصوصیات Hidden Control

Name: این قسمت مربوط به نام ذخیره شده کنترل است.

Active: با استفاده از این خصوصیت می توان وضعیت کنترل را مشخص کرد. برای کنترل های پنهان تفاوتی در مقدار این خصوصیت وجود ندارد اما در کنترل های دیگر اگر مقدار این خصوصیت برابر با Disable باشد، آنگاه این کنترل در صفحه وبسایت نمایش داده نمی شود. عدم نمایش این کنترل در صفحه نمایش به معنای حذف آن نیست بلکه این کنترل تنها غیرفعال شده است.

Caption: برای اختصاص دادن یک نام یا عنوان به یک کنترل در صفحه نمایش از خصوصت Caption استفاده می شود. مقدار این خصوصیت در کنترل های پنهان اهمیتی ندارد زیرا این کنترل ها در فرم به کاربر نمایش داده نمی شوند.

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

DataBase Column: اگر فرم توسط یک جدول در دیتابیس ساخته شده باشد و کنترل مورد نظر مربوط به یک فیلد در جدول دیتابیس باشد، آنگاه مقدار این خصوصیت با نام فیلد در دیتابیس برابر خواهد بود. به عبارت دیگر، این کنترل به آن فیلد متصل است.

Data Source: با استفاده از این خصوصیت می توان یک کوئری برای کنترل نوشت تا این کوئری درون دیتابیس اجرا شود و عملیاتی خاصی انجام گیرد. مقدار این خصوصیت با توجه به نوع و همچنین کاربرد کنترل در فرم می تواند متفاوت باشد.

Default Value: با استفاده از این خصوصیت میتوان مقداری پیش فرض برای کنترل در نظر گرفت.

این خصوصیت زمانی فعال است و اجرا می شود که فرم در حالت وارد کردن اطلاعات جدید (روی حالت New) باشد.

این خصوصیت دارای شش مقدار است:

1- None: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرضی برای این کنترل، در نظر گرفته نخواهد شد.

اگر فرم بر اساس یک جدول دیتابیس ساخته شده باشد (New Form By Table) آنگاه بهتر است مقدار این خصوصیت در کنترل پنهان برابر با None باشد. زیرا در این روش اولین فیلد جدول دیتابیس (که کلید اصلی جدول است) به صورت خودکار به عنوان یک کنترل پنهان تعریف خواهد شد و مقادیر آن نیز به صورت Auto Increment وارد می شوند. برای آشنایی با ساخت جدول و ویزگی Auto Increment به آموزش ساخت جدول در SQL Server مراجعه نمایید.

2- System Date: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرض این کنترل، برابر با تاریخ سیستم کاربر خواهد شد.
3- System Time: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرض این کنترل، برابر با ساعت سیستم کاربر خواهد شد.
4- Calculator: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرض این کنترل، با توجه به کد وارد شده در قسمت Data Source تعیین خواهد شد. برای مثال اگر در این قسمت کد زیر را وارد کنید، در خروجی کنترل مورد نظر مقدار 12 نمایش داده خواهد شد.

زی فریم

5- Session Value: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرض این کنترل، برابر با یک مقدار از Session خواهد شد که این مقدار را در خصوصیت Tag/Format تعریف خواهیم کرد. برای مثال اگر خصوصیت Tag/Format برابر با USER_ID و مقدار Default Value برابر با Session Value باشد، مقدار پیش فرض کنترل برابر با آیدی Session کاربر خواهد شد. برای آشنایی بیشتر با مفاهیم و کاربردهای Session به مقاله آشنایی با Session مراجعه شود.

6- GUID: اگر مقدار Default Value برابر با این مقدار باشد آنگاه مقدار پیش فرض این کنترل، برابر با یک GUID خواهد شد. برای آشنایی بیشتر با GUID مقاله آشنایی با GUID را مطالعه شود.

Developer Tag: با استفاده از این خصوصیت می توان یک ساختار مشخص برای کنترل فرم خود تعریف نمود. برای مثال اگر مقدار این خصوصیت برابر با 00 باشد، آنگاه کاربر در این فیلد تنها می تواند عددی حداکثر با دو رقم وارد کند.

Sequence Number: مقدار این خصوصیت نشان دهنده جایگاه قرار گیری کنترل در فرم است. برای مثال، مقدار این خصوصیت برای اولین کنترل موجود در فرم برابر با 1، برای دومین کنترل برابر با 2 و غیره است.

آشنایی با TreeView Control

از این کنترل برای نمایش ساختار درختی در پروژه ها استفاده می شود. به عبارتی زمانی که توسعه دهنده بخواهد دادها را برای کاربر به صورت سلسله مراتبی نمایش دهد، می تواند از این کنترل استفاده نماید. تنها با نوشتن یک کد ساده، زی فریم اطلاعات را به صورت مطلوب در اختیار کاربر قرار داده و کاربر می تواند گزینه مورد نظر خود را انتخاب نماید. همچنین جدولی که در دیتابیس ساخته می شود نیز باید ساختار درختی داشته باشد تا بتوان از آن در کنترل Treeاستفاده نمود. مانند تصویر ذیل که بسیار پر کاربرد است و برای اطلاعات شهرستان ها و استان ها می باشد:

زی فریم

در این تصویر فیلد اول برابر با والد اصلی است که در آن Parent_ID برابر با صفر در نظر گرفته می شود و در نتیجه والدی ندارد. می تواند یک جدول چند والد اصلی داشته باشد. اما در این جدول تنها یک والد اصلی در نظر گرفته شده است که همان کشور ایران است. سپس نوبت فرزندان تراز اول می رسد که اسامی استان ها بوده و شامل فیلدهای 2 و 7 و 11 می باشند. هر کدام از این فیلدها هم برای خود فرزندانی را دارند. نتیجه جدول فوق، چیزی شبیه به درختواره ذیل خواهد شد:

زی فریم
 
 

ایجاد جدول مرتبط در پایگاه داده

می توان در اکثر پایگاه های داده، موجودیت ها را به دو دسته تعاریف پایه و موجودیت های اصلی تقسیم بندی نمود. تعاریف پایه شامل مواردی شناخته شده و ثابت می باشند. مواردی مانند ایام هفته، روزهای ماه و سال، جنسیت، ماه های سال، انواع حقوق و دستمزد، انواع استخدام و غیره. به این تعاریف پایه، کدهای شرحی هم گفته می شود. برای ساخت جدول مرتبط با این تعاریف پایه، مانند تصویر ذیل یک جدول با فیلدهای BaseData_ID به عنوان کلید اصلی، Parent_ID به عنوان ID والد، Title یا عنوان و IS_Active برای مشخص کردن فعال بودن یا نبودن رکوردها تعریف می شود. در نهایت هم یک نام مانند BaseData برای جدول انتخاب شده و ذخیره می شود.

زی فریم
 
 
 

ایجاد فرم مرتبط در زی فریم

پس از اینکه جدول مرتبط در پایگاه داده ساخته شد، لازم است که با توجه به آموزش های مقدماتی، یک فرم برای آن ساخت شود. در این فرم برای کل جدول یک caption به نام اطلاعات پایه در نظر گرفته می شود. همچنین برای فیلدها هم به ترتیب caption های والد، عنوان و فعال در نظر گرفته می شوند. در ادامه می بایست که با توجه به محتوای فیلدها، نوع کنترل آنها تعریف شوند. برای این کار در ابتدا نوع کنترل والد را به نوع DateCombo عوض می کنیم. در کادر باز شده برای انتخاب جدول هم اینبار خود جدول BaseData را انتخاب می کنیم. دلیل این کار هم ایجاد یک ساختار درختی است که در آن کلیدهای خارجی به فیلدهای دیگری در خود همین جدول ارجاع داده می شوند. با این ساختار که برای فیلدهایی که دیگر والدی را نخواهند داشت و به عبارتی بالاترین والد محصوب می شوند، Parent_ID برابر با صفر در نظر گرفته می شوند. فرزاندان دست اول هم هرکدام Parent_ID برابر با ID یکی از والدین تراز اول را خواهند داشت. برای فرزندان دست دوم همParent_ID برابر با ID یکی از فرزاندان دست اول خواهند بود. به همین ترتیب این ساختار می تواند ادامه داشته باشد.

زی فریم

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

زی فریم
 

برای این کار و با توجه به آموزش های پیشین، از طریق منوی Workflow بر روی گزینه Workflow management کلیک می کنیم. سپس در آنجا این فرم را به گردش کار مرتبط با تعاریف ثابت اختصاص می دهیم. فرض کنیم که می خواهیم این فرم در ابتدای جداول نمایش داده شود. در نتیجه می بایست به باقی فرم ها در آن گردش کار، یک view index با شماره بالا اختصاص داده شود. مانند مثال ذیل:

زی فریم

با اختصاص دادن شماره هایی بالاتر از یک به سایر فرم ها، نتیجه چیزی شبیه به تصویر ذیل خواهد شد:

زی فریم

حال می بایست کدهای مرتبط با ثبت، ویرایش و حذف داده در فرم مذکور، اعمال شوند. برای حل این منظور به قسمت Action Query وارد شده و در آنجا بر روی دکمه Write All Query کلیک می کنیم. همچنین کدهای بخش insert را مطابق شکل زیر تغییر می دهیم.

زی فریم

همچنین کدهای بخش update را هم مطابق شکل ذیل تغییر می دهیم.

زی فریم

در هر دو مورد از یک ساختار شرطی استفاده شده است. به این مفهوم که اگر فیلد PARENT_ID خالی نبود، خود PARENT_ID را قرار بده. در غیر این صورت صفر در نظر گرفته می شود (چنانچه شرط فوق به درستی عمل نکرد از شرط ISNULL( convert ( numeric(18) , @INTPARENT_ID ) ,0 ) استفاده کنید) عدد صفر در این مثال به عنوان رکورد پایه در نظر گرفته شده که همه رکوردهای فرزندان دست اول زیر مجموعه آن قرار می گیرند. به همین دلیل می بایست برای این فرزندان، رکورد 0 به صورت دستی در پایگاه داده درج گردد.

زی فریم

در نهایت تغییرات ذخیره می شود. برای تکمیل کار هم کافیست تا با کلیک بر روی دکمه Application Cache Management و بعد از آن کلیک بر روی دکمه Clear Cache Data تغییرات را در مرورگر اعمال کنید. پس از آنکه به مرورگر مراجعه کردید، متوجه می شوید که رکورد اطلاعات پایه وجود دارد. حال می بایست از این رکورد، ساختار درختی شکل بگیرد. پس اولین رکوردی که ثبت می شود، یکی از رکوردهای مرتبط با فرزندان دست اول است. به عنوان مثال فصول سال. در نتیجه مطابق شکل ذیل آن رکورد ایجاد می گردد:

زی فریم

حال می بایست فرزندان این رکورد هم تعریف شوند. پس مشابه با شکل ذیل، برای فرزندان فصول سال، والد فصول سال قرار داده می شود:

زی فریم

همین روند برای سایر فصول سال انجام می شود. همچنین به عنوان فرزاندان دست دوم، ماه های هر فصل هم آورده می شوند. بنابر این مانند تصویر ذیل ماه های سال هم وارد جدول می شوند. در اینجا والد همان فصول سال می باشند:

زی فریم

در ادامه می توان حتی به عنوان فرزندان دست اول، مواردی بیشتر را هم تعریف نمود. در نهایت جدول از رکوردهایی متعدد و طبق همین اصول تکمیل می گردد. برای نمایش این ساختار می توان از کنترل tree استفاده نمود. به همین منظور، کنترل tree را به فرم اضافه کرده و برای آن یک نام و caption در نظر می گیریم. نتیجه کار می تواند چیزی شبیه به تصویر ذیل باشد:

زی فریم

همانگونه که در تصویر بالا دیده می شود، فیلد اجباری DataSourceوجود دارد که می بایست پر شود. در این قسمت تنها جدولی که انتخاب می شود، خود جدول BaseData بوده و از این جدول هم سه فیلد اولش انتخاب می شوند. چرا که می بایست در انتخاب فیلدها برای طراحی query یک ساختار درختی، اولین فیلد، فیلد کلید اصلی جدول و دومین فیلد هم فیلد PARENT_ID جدول باشد. همچنین نباید هیچکدام از مقادیر PARENT_ID های تعریف شده در query مقدار null داشته باشند. اگر هم در جدولی این مورد مشاهده شد ، می بایست که در آن تمامی PARENT_ID های null تبدیل به صفر شوند. در غیر اینصورت، ساختار درختی مدنظر ایجاد نخواهد شد.

زی فریم

در نهایت بر روی دکمه OK کلیک می شود. برای تکمیل کار هم کافیست تا با کلیک بر روی دکمه Application Cache Management و بعد از آن کلیک بر روی دکمه Clear Cache Data تغییرات را در برنامه اعمال کنید. حال اگر به مرورگر مراجعه شود، نتیجه چیزی شبیه به تصویر ذیل خواهد بود.

زی فریم

می توان همین روال را برای یکی دیگر از کنترل های مرتبط با ساختار درختی اعمال نمود. نام این کنترل Drop Down Tree View است که نتیجه کار را به صورت یک درخت درون یک Drop Down نمایش می دهد. همچنین دارای یک scroll جهت پیمایش درختواره است.

زی فریم
 

در رابطه با ساخت درختواره علاوه بر دو مورد بالا، یک ساختار دیگر هم به نام Flat Tree View وجود دارد. در این ساختار یک scroll جهت پیمایش درختواره قرار داده شده است. ولی برخلاف Drop Down Tree View فاقد Drop Down می باشد. در شکل ذیل، خروجی مرتبط با این کنترل هم نمایش داده شده است:

زی فریم

بهتر است که هر کدام از اطلاعات پایه در جداول مختلفی ذخیره گردند. چرا که اگر همه آنها را در یک جدول بیاوریم، ممکن است در روند پشتیبانی از نرم افزار به مشکلاتی برخورد کنیم که این مشکلات، کار پشتیبانی را پیچیده تر می کنند. دلیل آوردن کل اطلاعات پایه در اینجا و درون یک جدول هم فقط ایجاد یک مثال از ساختار درختی بود.

ویرایش والد بدون کدنویسی

می توان با اعمال تغییرات و سفارشی سازی برنامه در سطوح مختلف، تغییراتی را در این کنترل ایجاد کرد که برای کاربر نهایی مطلوب تر باشد و واسط کاربری زیباتر و یا تجربه کاربری متفاوتی را برای آنها ایجاد کند. یکی از این موارد، مثال ذیل است که توسط توسعه دهندگان زی فریم ایجاد شده است. در این ساختار، ویرایش والد توسط خود کاربر نهایی به سادگی و با یک کلیک راست امکان پذیر می شود. چرا که کاربر نهایی دانش برنامه نویسی با زی فریم را نداشته و درکی از ساختار کنترل Tree View ندارد. اما کاربر با وجود چنین افزونه ای و بدون دانش برنامه نویسی زی فریم، می تواند ساختار درختی خود را در هر زمان تغییر دهد و براحتی جابجایی بین ساختار را داشته باشد.

زی فریم
 
 
کنترل CheckBoxList

گاهی نیاز است تا گزینه های موجود در یک فرم به صورت یک Check Box List نمایش داده شود. به عنوان مثال فرمی با عنوان “گروه های کاری” داریم که وظیفه این فرم تعریف سطح دسترسی کاربران سیستم است. همچنین فرم دیگری با عنوان “کاربران سیستم” وجود خواهد داشت که وظیفه این فرم تعریف کاربران سیستم و تعیین میزان سطح دسترسی آنها است.
حال فرض کنید می خواهیم گروه های کاری تعریف شده در فرم “گروه های کاری” به صورت Check Box در فرم “کاربران سیستم” نمایش داده شوند و با فعال یا غیر فعال بودن آنها متوجه شویم که کدام یک از کاربران عضو کدام یک از گروه های کاری هستند.

برای انجام این کار نیاز است تا در فرم “کاربران سیستم” یک کنترل از نوع Check Box List ایجاد کرده و پس از آن تنظیمات و کد های مربوط به کوئری های آن را وارد کنید.

خصوصیات کنترل چک باکس لیست

کنترل Check Box List دارای چهار خصوصیت اصلی و مهم شامل Data Source، Fill Query، Delete Query و Update Query است که تکمیل نمودن آنها برای کارکرد صحیح این کنترل ضروری می باشد.

Data Source

خصوصیت Data Source اولین خصوصیت اصلی کنترل Check Box List است، که با توجه به کوئری وارد شده در قسمت Query Editor، اقلام اطلاعاتی مورد نیاز را از یک جدول در دیتابیس خوانده و هرکدام از رکورد های آن را به صورت Check Box نمایش می دهد.
برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Select در قسمت Query Editor نوشته شود.
نحوه صحیح وارد نمودن کوئری در Query Editor برای خصوصیت “Data Source”:

SELECT Table_Name.Column_Name
FROM Table_name

توجه داشته باشید که در این کوئری باید کلید اصلی (ID) رکورد و همچنین عنوان آن انتخاب شود.
در این مثال می توان از کد زیر در قسمت Query Editor خصوصیت “Data Source” استفاده نمود:

SELECT UserGroupList.UserGroup_ID,
UserGroupList.UserGroupName
FROM UserGroupList
 
Fill Query

دومین خصوصیت اصلی این کنترل، Fill Query است که با توجه به کوئری وارد شده در قسمت Query Editor، فعال یا غیر فعال بودن Check Box را تعیین می نماید.
برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Select نوشته شود. نحوه صحیح وارد نمودن کوئری Query Editor برای خصوصیت “Fil Query” را می توان در کد زیر مشاهده نمود.

 
SELECT Column_Name[Primary_Key]
FROM Table_name
WHERE ID =

همچنین در این مثال می توان از کد زیر برای Query Editor خصوصیت “Fill Query” استفاده نمود:

SELECT UserGroupID
FROM UserGroupList
WHERE UserID =
 
Delete Query

قبل از اجرای دستورات Update Query، کدهای خصوصیت Delete Query اجرا خواهد شد. با این کار یکبار داده های موجود در دیتابیس حذف شده و پس از آن با توجه به وضعیت چک باکس های موجود در فرم و با استفاده از خصوصیت Update Query، آخرین وضعیت چک باکس ها در دیتابیس و در جدول مربوطه ثبت می شود. برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Delete نوشته شود.
نحوه صحیح وارد نمودن کد Query Editor برای خصوصیت “Delete Query” :

DELETE
FROM Table_name
WHERE ID =

همچنین در این مثال میتوان از کد زیر برای Query Editor خصوصیت “Delete Query” استفاده نمود:

DELETE
FROM UserGroupList
WHERE UserID =
 
Update Query

پس از آن که اطلاعات وضعیت چک باکس های فرم در جدول دیتابیس توسط خصوصیت Delete Query حذف شد، نوبت به اجرای خصوصیت Update Query می رسد. با این کار، اطلاعات چک باکس های فرم با توجه به وضعیت فعال و یا عدم فعال بودن آنها وارد دیتابیس می شود. برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Insert نوشته شود.
نحوه صحیح وارد نمودن کد Query Editor برای خصوصیت “Update Query” :

INSERT INTO Table_name
(Column1 , Column2 , …)
VALUES
(@KEY , @ID)

همچنین در این مثال می توان از کد زیر برای Query Editor در خصوصیت “Update Query” استفاده نمود:

INSERT INTO UserGroupList
(UserID , UserGroupID)
VALUES
(@KEY , @ID)

توجه داشته باشید در این کوئری منظور از (KEY@) کلید خود فرم و منظور از (ID@) هم شناسه (Value) هر یک از چک باکس ها است.
به غیر از این چهار خصوصیت اصلی، کنترل چک باکس لیست خصوصیات دیگری نیز دارد که به غیر از خصوصیت Columns Mode، دیگر خصوصیتهای آن با کنترل های دیگر مشترک است.

خصوصیت Columns Mode

با استفاده از این خصوصیت می توان تعداد چک باکس های موجود در هر ردیف را مدیریت کرد. به عنوان مثال اگر 6 عدد چک باکس داشته باشیم و مقدار این خصوصیت را برابر با 3 قرار دهیم، در هر ردیف سه عدد چک باکس قرار خواهد گرفت و پس از آن به ردیف بعد خواهد رفت تا تمام چک باکس ها در صفحه قرار گیرند.

زی فریم

همچنین در خصوصیت Columns Mode برای دسترسی و مدیریت آسان تر چک باکس ها (هنگامی که تعداد زیادی از آنها در برنامه وجود دارد)، ویژگی دیگری در نظر گرفته شده است که با استفاده از آن می توان لیست پیشرفته ای از چک باکس ها ایجاد نمود. برای استفاده از این ویژگی کافیست مقدار خصوصیت Columns Mode را برابر با “1-” قرار داد تا نحوه نمایش آنها مانند تصویر زیر تغییر نماید.

زی فریم

همان طور که در تصویر فوق مشخص است، این ویژگی علاوه بر آن که تمامی چک باکس ها را به صورت کرکره ای یا دراپ داون (Drop Down) نمایش می دهد، امکان جستجو، فعال سازی و غیر فعال سازی تمام چک باکس ها (به صورت همزمان) را نیز در اختیار کاربر قرار می دهد.

کنترل فایل

گاهی لازم است کاربر فایلی را در یک فرم برای توسعه دهنده نرم افزار ارسال کند. به عنوان مثال می خواهیم کاربر در فرم “کاربران سامانه” یک عکس پرسنلی از خود برای توسعه دهنده بارگذاری کند. به منظور انجام این کار، می توان از کنترل “File” استفاده کرد.

نکته قابل توجه آن است که علاوه بر فایل های تصویری می توان فایل های متنی، صوتی، ویدیوئی و غیره را نیز توسط این کنترل از کاربران دریافت نمود.

نحوه ساخت کنترل File

برای ایجاد کنترل آپلود فایل (File Upload)، ابتدا از زیر منوی فرم مورد نظر وارد پنجره Control شوید.

زی فریم
 

پس از آن در پنجره کنترلهای فرم مورد نظر راست کلیک کرده و ماوس را بر روی گزینه New نگه داشته (هاور کنید) تا لیستی از کنترل ها نمایش داده شود. سپس کنترل “File” را از لیست نمایش داده شده انتخاب کنید، تا این کنترل به فرم اضافه شود.

 
زی فریم
 

حال برای تعیین یک عنوان برای این کنترل، از قسمت properties، خصوصیت “Caption” آن را برابر با “عکس پرسنلی” قرار می دهیم.

 
زی فریم
 

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

 
زی فریم

توجه نمایید که برای نمایش تصویر آپلود شده در فرم می توان از کنترل Image استفاده نمود.

ایجاد کنترل Image

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

 
 
 
 ساخت کنترل Image
برای ایجاد کنترل Image ابتدا از زیر منوی فرم مورد نظر، وارد پنجره Control شوید.
 
زی فریم
 

پس از آن در پنجره کنترل های فرم کلیک راست کرده و پس از نگه داشتن ماوس روی گزینه New، کنترل “Image” را از میان گزینه های موجود انتخاب نمود.

زی فریم

پس از انجام این کار، نیاز به انجام تنظیماتی برای مدیریت کنترل “Image” است، تا عکس آپلود شده توسط کاربر، در فرم نمایش داده شود.

خصوصیات کنترل Image

در کنترل “Image” خصوصیاتی وجود دارد که این خصوصیت ها به کارکرد صحیح این کنترل کمک خواهند کرد.

 
Relation_Control_ID

یکی از خصوصیت های مهم این کنترل، خصوصیت “Relation_Control_ID” است که با استفاده از این خصوصیت می توان آدرس منبع عکس مورد نظر را برای کنترل Image مشخص نمود. به عنوان مثال فرض کنید کاربر یک عکس را با استفاده از کنترل آپلود در یک فرم بارگذاری کرده است و نیاز است تا این عکس در همان فرم به کاربر نمایش داده شود. برای انجام این کار مقدار این خصوصیت را برابر با نام کنترل فایل آپلود (که در این مثال نام آن “NewFile” است) قرار خواهیم داد.

زی فریم
 
Width و Height

بعد از خصوصیت “Relation_Control_ID”، دو خصوصیت مهم دیگر برای نمایش تصویر کاربر وجود دارد. این دو خصوصیت، خصوصیت های “Width” و “Height” هستند که با استفاده از این دو خصوصیت می توان طول و عرض (بر حسب پیکسل) عکس را تعیین نمود.

زی فریم
 
 
نکته
توجه داشته باشید تا زمانی که این دو خصوصیت را تغییر نداده باشید (یا مقدار آنها برابر با 0 باشد)، تصویر نمایش داده نخواهد شد.

همچنین می توان با استفاده از خصوصیت “Caption” یک عنوان مناسب برای این کنترل تعیین نمود (در این مثال عنوان “تصویر کاربر” برای این کنترل در نظر گرفته شده است).

زی فریم
 
پس از انجام این تنظیمات، یک بار Clear Cache کنید. حال با مراجعه مجدد به خروجی نرم افزار در مرورگر، مشاهده خواهید کرد که تصویر آپلود شده توسط کاربر در فرم نمایش داده شده است.
زی فریم
 
 
 
 
Related Control

کنترل های مرتبط (Related Control) در زی فریم به کنترل هایی گفته می شود که وابسته به یک کنترل دیگر عمل می کنند.
فرض کنید می خواهیم با استفاده از زی فریم یک سیستم فروشگاهی بسازیم که اگر کاربر نام فروشگاه را انتخاب کرده باشد، فقط کالا های موجود آن فروشگاه به کاربر نمایش داده شود.
در اینجا دو نمونه از نمایش کنترل های مرتبط (Related Control)را به شما نمایش داده ایم:

زی فریم
زی فریم

در این مثال نام فروشگاه یک کنترل از نوع کمبو (combo data) است که اگر نام فروشگاه را ال جی انتخاب کنید، در قسمت نام کالا فقط کالا های مربوط به فروشگاه ال جی نمایش داده میشود.

در ابتدا یک دیتابیس بسازید.(نام این دیتابیس را Store و یا هر نام دلخواه دیگری که میخواهید قرار دهید.)
(برای یادگیری نحوه ی ساخت دیتابیس در MSSQL به آموزش ساخت دیتابیس در MSSQL مراجعه کنید.)
در دیتابیس جدول های مورد نیاز خود را بسازید.
(برای یادگیری نحوه ی ساخت جدول در MSSQL به آموزش ساخت جدول در MSSQL مراجعه کنید.)
در این مثال به 3 جدول برای ذخیره نام فروشگاه ها، ذخیره کالاها و ذخیره سفارشات نیاز داریم. بنابراین سه جدول با نامهای store ، item و request (و یا هر نام دلخواه دیگری)به شکل زیر تعریف می کنیم.

جدول store
زی فریم
جدول item
زی فریم
جدول request
زی فریم

وارد نرم افزار زی فریم شوید.
یک اپلیکیشن جدید با دیتابیسی که ساخته اید تعریف کنید.
(برای یادگیری نحوه ی ساخت اپلیکیشن در زی فریم به آموزش ساخت اپلیکیشن در زی فریم مراجعه کنید.)
بر اساس هر یک از جدول هایی که ساخته شده است یک فرم بسازید.
(برای یادگیری نحوه ی ساخت فرم بر اساس جدول در زی فریم به آموزش ساخت فرم بر اساس جدول در زی فریم مراجعه کنید.)
فرم های خود را در پنجره Forms می توانید مشاهده کنید.
همان طور که مشاهده می کنید سه فرم frmitem ، frmstore و frmrequest توسط زی فریم ایجاد شد.
زی فریم

اکنون نوبت به سفارشی سازی فرم هایی که ساخته اید رسیده است.


فرم frmstore

سفارشی سازی کنترل store_name :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (نام فروشگاه) قرار داده ایم.
زی فریم

در نهایت فرم frmstore ما به این شکل است.
زی فریم

 

فرم frmitem

سفارشی سازی کنترل store_id :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (نام فروشگاه) قرار داده ایم.

برای آنکه برای انتخاب نام فروشگاه لیستی از نام فروشگاه های تعریف شده داشته باشید، مقدار Control type این کنترل را برابر با data combo قرار دهید.

سپس در قسمت Data Sourse از جدول store ، فیلدهای Store_id و سپس store_name را اضافه کنید.

زی فریم

سفارشی سازی کنترل item_name :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (نام کالا) قرار داده ایم.


سفارشی سازی کنترل item_price :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (قیمت کالا) قرار داده ایم.

در نهایت فرم frmitemما به این شکل است.
زی فریم

 

فرم frmrequest

سفارشی سازی کنترل store_id :

در این کنترل همانند کنترل store_id در فرم frmitem عمل می کنیم.

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (نام فروشگاه) قرار داده ایم.

برای آنکه همانند فرم frmitem برای انتخاب نام فروشگاه لیستی از نام فروشگاه های تعریف شده داشته باشید، مقدار Control type این کنترل را برابر با data combo قرار دهید.

و از قسمت Data Sourse از جدول store ، فیلدهای Store_id و سپس store_name را اضافه کنید.
زی فریم


ساخت Related Control

فرض کنید میخواهیم کنترل item_id را به یک related control تغییر دهیم. حال بدین منظور مراحل زیر را انجام دهید:

سفارشی سازی کنترل item_id :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (نام کالا) قرار داده ایم.

برای آنکه آیتم های پیشنهادی با توجه به نام فروشگاه نمایش داده شوند،Control type این کنترل را برابر با FindObjectBox قرار دهید.

در قسمت Data Sourse از جدول item ، فیلدهای item_id و سپس item_name را اضافه می کنیم.

در قسمت related condition query از جدول item ، فیلدهای item_id و سپس item_name را اضافه کرده و سپس کد زیر را در ادامه ی قسمت query اضافه کنید.

در این مثال

 
WHERE dbo.item.item_name LIKE @STRCODE AND store_id = @lngstore_id

dbo.item.item_name همان فیلدی است که می خواهیم به ما نمایش داده شود.

store_id نام کنترل combo data در فرم frmitem است.

در @lngstore_id ، نیز store_id نام کنترل مرتبط در همین فرم است .

زی فریم

در قسمت related control نام کنترل مرتبط یعنی store_id را وارد کنید.

در قسمت related form یک فرم جدید توسط دکمه (New Form By Design) بسازید. ما در این مثال فرمی به نام frmview item ساخته ایم.

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

در قسمت Form Data Source فرم، تمام فیلد های جدول item را اضافه می کنیم.

در قسمت Grid Data Source فرم از جدول item، فیلدهای item_id و item_name را اضافه کنید و پس از آن کد زیر را در ادامه قسمت query قرار دهید.

 

WHERE store_id = @lngZPPA1

زی فریم


سفارشی سازی کنترل Count :

Caption این کنترل را تغییر دهید، در این مثال مقدار آن را برابر با (تعداد) قرار داده ایم.

در نهایت فرم ما به این شکل خواهد بود.
زی فریم

در قسمت Workflow Management فرم های خود را وارد کنید.

زی فریم

برای نمایش یک خروجی در سایت، فرم های خود را با داده های دلخواه پر کنید.

لیست کالا های ما به شکل زیر است.
زی فریم

حال اگر وارد فرم request شوید و فروشگاه را ال جی انتخاب کنید زمانی که تلویزیون را در قسمت نام کالا بنویسید، لیست تلویزیون های فروشگاه ال جی را به شما نمایش می دهد.
زی فریم

ولی اگر اسنک را در این قسمت بنویسید به دلیل آنکه در فروشگاه ال جی کالایی با نام اسنک وجود ندارد، هیچ اسمی به کاربر نمایش نمی دهد.
زی فریم

اما اکنون اگر نام فروشگاه رو به چیتوز تغییر دهید، تمام اسنک های این فروشگاه نمایش داده می شوند.
زی فریم

تمامی مراحل یاد شده را می توان به طور خلاصه در تصویر زیر مشاهده نمود.

زی فریم
طراحی پیش فرض

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

زی فریم

اما ممکن است توسعه دهنده ظاهر گرافیکی متفاوتی نسبت به حالت پیش فرض مد نظر داشته باشد و نیاز به اعمال تغییراتی در نحوه نمایش فرم ها احساس کند. به همین دلیل، در زی فریم قابلیتی به نام Screen Design در نظر گرفته شده است تا توسعه دهنده بتواند ظاهر فرمهای خروجی را مطابق با سلیقه خود طراحی نماید. برای انجام این کار باید در قسمت زیرمنوهای فرم، گزینه Screen Design انتخاب شود.

زی فریم

بعد از انتخاب این گزینه پنجره Design باز می شود.

زی فریم

در این پنجره توسعه دهنده می تواند ساختار ظاهری فرم را شکل داده و طبق سلیقه شخصی خود فرم را طراحی نماید. اما لازمه این کار آن است که توسعه دهنده با تگ های HTML آشنا باشد.
در بالای پنجره Design نوار ابزاری به شکل زیر وجود دارد که در آن اولین دکمه از سمت چپ (Save View) برای ذخیره مدل استفاده می شود. اگر داده ای درون مدل وجود نداشته باشد، سامانه از مدل پیش فرض برای نمایش فرم استفاده خواهد کرد.

زی فریم

گزینه دوم از سمت چپ (Engine Mode) اطلاعات فرم را پاک کرده و مدل را به حالت پیش فرض برمی گرداند. گزینه سوم (Custom Mode) برای باز کردن پنجره Form Design Parameter است که در این پنجره می توان حالت های فرم را برای استخراج کد قابل ویرایش تنظیم نمود. برای مثال می توان تعداد ستونهای فرم، داشتن قابلیت جابه جایی و داشتن قابلیت پشتیبانی از مدل Bootstrap را در آن تعیین کرد.

زی فریم

پس از پیکره بندی فرم به صورت فوق و کلیک بر روی دکمه OK (در این مثال المانهای فرم دارای قابلیت جابه جایی بوده و همچنین فرم دارای دو ستون است)، خروجی به صورت زیر خواهد بود. در این قسمت، توسعه دهنده برای ویرایش فرم می تواند با استفاده از ماوس اقدام به جابه جا کردن المانها نماید. همچنین می تواند با ویرایش کدهایHTML درج شده در قسمت پایین پنجره تغییرات دلخواه خود را در ساختار فرم اعمال کند.

زی فریم
 
 
 
ساختار فرم و کدهای HTML به هم وابسته هستند، به این صورت که با تغییر یکی، دیگری نیز تغییر می یابد. بنابراین برای تغییر در ظاهر فرم از هر کدام از این روش ها به دلخواه می توان استفاده نمود.
 
 
 
سفارشی سازی حرفه ای

در زی فریم این قابلیت وجود دارد که توسعه دهنده بتواند فرم های پیچیده نیز ایجاد نماید؛ فرم هایی که از Tab های مختلف و همچنین فیلد ست های متفاوتی تشکیل شده باشد. با کلیک بر روی دکمه چهارم از سمت چپ (Wizard Mode) در نوار ابزار پنجره Design، پنجره Advanced Form Designer نمایان می گردد. با استفاده از قابلیت های موجود در این قسمت می توان فرم مورد نظر را به حالتهای گوناگون و متنوع طراحی نمود.

زی فریم

با این قابلیت توسعه دهنده می تواند مدل های تو در تو و پیچیده را به سادگی طراحی نماید. به عنوان مثال یکی از نمونه های خروجی چنین فرمی در شکل زیر قابل مشاهده است.

زی فریم
 

در زی فریم این قابلیت به توسعه دهنده داده شده است که بر اساس ساختار، کد خروجی را باز کلیک بر روی دکمه Generate Metadata استخراج و با توجه به سلیقه و فریم ورک، UI مورد نظر را ایجاد کند.

زی فریم

همچنین توسعه دهنده می تواند از موتور تولید رابط گرافیکی خود برای تولید رابط گرافیکی استفاده نماید و سپس آن را به پروژه خود در زی فریم معرفی کند. به این صورت که زی فریم فرمتی را در قالب XML ارائه می کند که با آن این توانایی وجود دارد تا توسعه دهنده بتواند خروجی گرافیکی را براساس ساختاری همچونgoogle material design ،React ، Angular ، VUE داشته باشد.

وب سرویس چیست؟

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

• وب سرویس را برنامه نویسان نوشته و سرور (Server) آن را پردازش و اجرا می کند.
• با هر زبان برنامه نویسی می توان وب سرویس نوشت.
• برای پیاده سازی وب سرویس ها می توان از مدل ها و معماری های مختلفی استفاده کرد، مانند:

1- AJAX که استفاده از آن بسیار ساده است.
2- استفاده از وب سرویس Soap که یکی از پروتکل های مبتنی بر xml است.
3- وب سرویس های REST که بسیار محبوب هستند. (توسعه وب سرویس ها در زی فریم با استفاده از این معماری صورت می گیرد)

• برای استفاده از بخش های مختلف نرم افزاری نیاز به ارتباط بین این بخش ها و سرویس ها خواهد بود. این ارتباط نیاز به زبان ارتباطی استاندارد دارد که برای این کار از دو زبان ارتباطی JSON و XML استفاده می شود.
وب سرویس نویس ها باید با زبانهای ارتباطی JSON و XML آشنا باشند.

کاربرد وب سرویس

در دنیای امروز موارد بسیاری هستند که از وب سرویس ها استفاده می کنند که از میان آنها می توان به وب سایت ها (Web Browser)، برنامه های موبایلی (Mobile Application)، برنامه های ویندوزی (Windows Application)، درگاه های پرداخت (Payment Gateway)،خدمات بانکی(Banking Services)، پردازش داده ها (Data processing) و … اشاره کرد.

صفحه دانلود زی

 
وب سرویس REST
ساز و کار وب سرویس REST به این شکل است که سیستم سمت کاربر (Client) یک درخواست (Request) را به صورت یک پیام آماده سازی کرده و به کمک یک شبکه (Network) به سمت سرور (server) ارسال می کند.
شبکه به کار رفته معمولا بر بستر اینترنت (Internet) بوده و این درخواست نیز به صورت JSON با استفاده از یکی از متد های Get، POST، PUT، DELETE و … ارسال می شود.
 
هنگامی که سرور این درخواست را دریافت کند، بر روی آن پردازش های مورد نیاز را انجام خواهد داد. نوع این پردازش ها و طرز کارکرد آنها توسط برنامه نویس وب سرویس تعیین و تعریف می شود. پس از پردازش درخواست توسط سرور، پاسخ (Response) این درخواست در بستر همان شبکه و به صورت JSON به سمت سیستم سمت کاربر (Client) ارسال می شود.

صفحه دانلود زی

تست وب سرویس

برای تست وب سرویس ها می توان از نرم افزارهای کمکی مانند SoapUI و Postman استفاده نمود که هر کدام دارای ویژگی های خاص خود هستند. این نرم افزارها ابزاری برای کمک به برنامه نویس فرانت اند هستند تا بتواند وب سرویسی که از برنامه نویس بک اند گرفته است را مورد بررسی قرار داده و از صحت عملکرد آن مطمئن شود.برای یادگیری کار با نرم افزار SoapUI به مقاله آموزش SoapUI مراجعه کنید.

سرویس نویسی در زی فریم

برای نوشتن یک سرویس در زی فریم مراحل زیر را به ترتیب انجام دهید.
ابتدا وارد برنامه زی فریم شوید.

کاربرد وب سرویس

در نوار ابزار بالا بر روی گزینه REST API List کلیک کنید تا وارد Web Api Manager شوید.

کاربرد وب سرویس

در این پنجره لیست تمام وب سرویس های نوشته شده در اپلیکیشن شما نمایش داده می­ شود. برای مثال در تصویر زیر یک وب سرویس با نام getallcourse نوشته شده است.

کاربرد وب سرویس

در پنجره باز شده (Web Api Manager) دکمه هایی برای مدیریت وب سرویس ها وجود دارد.

کاربرد وب سرویس

New Function: با استفاده از این دکمه می­ توان یک وب سرویس جدید ایجاد کرد.

Refresh: با استفاده از این دکمه می­توان لیست وب سرویس های موجود را بروزرسانی نمود تا اخرین تغییرات اعمال شده نمایش داده شود.

Test Api: با استفاده از این دکمه می­توان وب سرویس ها را مورد ازمایش و بررسی قرار داد.

Request Header: با استفاده از این دکمه می توان به Request Header های سرویس دسترسی داشت. به علاوه میتوان Request Header ها را ذخیره و یا بارگذاری کرد.

برای درک بهتر نحوه ایجاد و تست یک وب سرویس فرض کنید می خواهیم اطلاعاتی را با استفاده از یک سرویس به یکی از جداول موجود در دیتابیس وارد کنیم. در مرحله اول از قسمت نوار ابزار برنامه زی فریم گزینه Table Data را باز کنید.

کاربرد وب سرویس

سپس جدول مورد نظر خود را از پنجره DataBase Explorer انتخاب کنید تا اطلاعات مربوط به آن درون پنجره Table Data نشان داده شود. در این پنجره یک کوئری INSERT و UPDATE برای جدول انتخاب شده نوشته شده است.

کاربرد وب سرویس

کوئری INSERT را انتخاب کرده و آن را کپی کنید.

کاربرد وب سرویس

حال وارد پنجره Web Api Manager شده و بر روی دکمه New Function کلیک کنید تا پنجرهREST Function باز شود.

کاربرد وب سرویس

(در این پنجره گزینه ها و ابزارهای مختلفی برای مدیریت وب سرویس ها وجود دارد. برای آشنایی بیشتر با این ابزارها به مقاله معرفی ابزارهای REST Function مراجعه کنید.) در قسمت Function Name نام وب سرویس مورد نظر و در قسمت Base Url Address آدرس دلخواه برای آن را وارد کنید (در این مثال نام وب سرویس را Add و آدرس آن را در فولدر Person در نظر گرفتیم.)

کاربرد وب سرویس

سپس متد POST را در قسمت Call Method انتخاب کرده و کوئری INSERT که کپی کرده بودید را در قسمت Query قرار دهید.

کاربرد وب سرویس

 
برای درک علت انتخاب متد POST در بخش Call method و آشنایی با انواع متدها، مقاله انواع متد های مورد استفاده در وب سرویس را مطالعه کنید.

حال بر روی گزینه Apply کلیک کنید تا تغییرات اعمال شود.

 
بعد از تعریف وب سرویس و یا اعمال تغییرات حتما از Clear Cache استفاده کنید تا سرویس اجرا شده و خروجی لازم هنگام تست سرویس نمایش داده شود.
 
اگر وب سرویس شما دارای پارامتر است، حتما یکبار بر روی دکمه Parameter کلیک کنید تا از وجود پارامتر های وب سرویس اطمینان حاصل کنید.
 
تست وب سرویس با SoapUI

در پنجره Web Api Manager وب سرویس ساخته شده را انتخاب کنید. سپس در پنجره باز شده (REST Function) بر روی Test Api کلیک کنید تا پنجره Test Rest Api نمایش داده شود.صفحه دانلود زی

در این پنجره مقدار Url Address را کپی کنید.

صفحه دانلود زی

حال وارد برنامه SoapUI شده و در نوار ابزار بالا بر روی گزینه REST کلیک کنید. با اینکار یک سرویس REST جدید ایجاد می شود.

صفحه دانلود زی

آدرس کپی شده را در پنجره باز شده و در قسمت URL جایگذاری کرده و بر روی دکمه ok کلیک کنید.

صفحه دانلود زی

بعد از این کار، پنجره Request 1 نمایش داده می شود. توجه کنید که متد موجود در برنامه SoapUI و متد انتخاب شده در وب سرویس زی فریم باید یکسان باشند. بنابراین در این قسمت نیز همانند وب سرویس ساخته شده در زی فریم، متد Post را انتخاب کنید.

صفحه دانلود زی

در این مرحله نیاز به کد مناسبی برای وارد نمودن اطلاعات داریم. برای به دست اوردن این کد، وارد زی فریم شده و در پنجره Test Rest Api متن داخل قسمت Function Input را کپی کنید.

صفحه دانلود زی

مقادیر کپی شده را مانند شکل زیر در برنامه SoapUI قرار دهید.

صفحه دانلود زی

سپس اطلاعاتی که می خواهید به عنوان ورودی به سرویس دهید تا وارد جدول دیتابیس شوند را درون دابل کوتیشن ها (به جای علامت سوال) قرار دهید.

صفحه دانلود زی

زمان اجرای وب سرویس است.

برای این کار بر روی دکمه که همان Submit request to specified endpoint URL است، کلیک کنید. بعد از اجرا شدن وب سرویس، اگر JSON را در نوار اجرا کننده انتخاب کنید، با پیام زیر مواجه خواهید شد.

“EXECUTE_UPDATE_INSERT_SUCCESS”

که به معنای آن است که درخواست با موفقیت اجرا شده است.

صفحه دانلود زی

حال به دیتابیس مراجعه کنید، مشاهده خواهید کرد که اطلاعات وارد شده، در دیتابیس با موفقیت قرار گرفته اند.

صفحه دانلود زی

استفاده از سرویس در فرم های ساخته شده توسط زی فریم

برای استفاده از وب سرویس ساخته شده (در مثال ذکر شده: وب سرویس ADD)، در فرم های زی فریم به صورت زیر عمل می کنیم.
در فرم PERSON یک دکمه قرار می دهیم تا با کلیک بر روی آن، اطلاعات وارد شده در فرم PERSON با استفاده از وب سرویس در جدول PERSON درون دیتابیس ذخیره شود (دقیقا همان کاری که درون Soap UI انجام دادیم، این بار با فرم های زی فریم انجام خواهد شد).
ابتدا با ایجاد یک ClientButton، یک دکمه به فرم ساخته شده توسط زی فریم اضافه کنید (برای یادگیری نحوه ایجاد یک کنترل جدید به آموزش روش ساخت و مدیریت کنترل ها در زی فریم مراجعه شود.) و در قسمت caption نام آن را “ذخیره” (و یا هر نام دلخواه دیگر) قرار دهید.

صفحه دانلود زی

پس از ساخت یک دکمه جدید، به پنجره Web Api Manager باز گشته و سرویس ساخته شده (در این مثال add) را باز کنید.
سپس در پنجره REST Function بر روی دکمه JScript Code کلیک کنید تا پنجرهJava Script Call Function For REST API باز شود.

صفحه دانلود زی

در این پنجره، وب سرویس به صورت یک کد جاوا اسکریپتی به کاربر ارائه می شود.

این کد را کپی کنید.
وارد بخشJava Script Code فرم مورد نظر خود (در این مثال فرم PERSON) شوید.

صفحه دانلود زی

کد کپی شده را در این قسمت قرار دهید.

صفحه دانلود زی

حالا کد جاوا اسکریپت زیر را به این قسمت اضافه کنید.

 
async function FillParamAndSave () {
var C_FirstName = GetControlByName(“FirstName”);
var C_LastName = GetControlByName(“LastName”);
var C_Is_Active = GetControlByName(“Is_Active”);
var C_BDate = GetControlByName(“BDate”);
var C_National_Code = GetControlByName(“National_Code”);
var C_Postal_Code = GetControlByName(“Postal_Code”);
let rt = await call_add (C_FirstName.value ,C_LastName.value ,C_Is_Active.value , C_BDate.value, C_National_Code.value, C_Postal_Code.value) }

صفحه دانلود زی

بر روی دکمه Save کلیک کنید تا کدهای جاوااسکریپت درون این فرم ذخیره شود.
در کنترل فرم PERSON بر روی دکمه ای که ساخته بودید کلیک راست کرده و از گزینه های نمایش داده شده Java Script Call Function را انتخاب کنید تا پنجره Java Script Events باز شود.

صفحه دانلود زی

در قسمت Control Event List بر روی ایونت onclick دابل کلیک کرده تا کد onclick = “ ” در قسمت Java Script Function Call قرار گیرد. بین دابل کوتیشن نام تابع نوشته شده در جاوا اسکریپت (در این مثال FillParamAndSave) را نوشته و بر روی دکمه ok کلیک کنید.

صفحه دانلود زی

حالا در خروجی نرم افزار، اطلاعات جدیدی در فرم “اشخاص” قرار داده و بر روی دکمه “ذخیره” کلیک کنید.

صفحه دانلود زی

در صورتی که اطلاعات وارد شده در فرم، درون جدول PERSON موجود در دیتابیس قابل مشاهده باشند، دکمه و وب سرویس مربوط به آن به درستی ساخته شده اند.

صفحه دانلود زی

همانطور که توسط یک وب سرویس توانستیم اطلاعات یک فرم را درون دیتابیس ذخیره کنیم، می توان اطلاعات موجود در دیتابیس را نیز با استفاده از یک وب سرویس دریافت کرد (برای یادگیری دریافت اطلاعات با استفاده از وب سرویس به آموزش دریافت داده به صورت JSON با استفاده از وب سرویس مراجعه شود).

مقدمه

یکی از مهمترین و رایج ترین اقدامات در نرم افزار، تهیه و ارسال گزارش به کاربر است. امروزه در دنیا، ابزارهای مختلفی برای این کار ساخته شده اند. ابزارهایی از قبیل quick report , jasper report, active report و stimulsoft برای این کار در نظر گرفته شده اند. همچنین ابزاری که در زی فریم برای این کار استفاده شده است، نرم افزار های stimulsoft ، jasper report و excel می باشند. نرم افزار ی که در این آموزش به آن پرداخته می شود و از سایر موارد سخت تر است، stimulsoft است که محصولی از شرکت stimulsoft می باشد.
با توجه به اینکه امروزه رویکرد کلی کاهش استفاده از کاغذ در تهیه گزارشات است، اما نیاز است که از برخی گزارشات، نسخه ای چاپی تهیه گردد. این چاپ می تواند شامل مواردی از قبیل چاپ گزارش جهت ارائه در جلسات، ارائه مستندات به مشتریان، امضا هیات مدیره و یا مواردی از این قبیل باشد. حتی ممکن است از نسخ غیر چاپی گزارشات هم برای بایگانی های الکترونیکی استفاده شود. به هر حال و با توجه به موارد ذکر شده، ارائه گزارشات، امری اجتناب ناپذیر است. لذا نرم افزار هم باید قابلیت تهیه گزارش از محتوای ایجاد شده را داشته باشد.

برای تهیه گزارش از نرم افزار، در ابتدا می بایست که یک قالب کلی از گزارش نهایی، توسط کارفرما برای ما تعریف شده باشد. به عنوان مثال در شکل زیر، یک قالب کلی از ارائه یک گزارش توسط کارفرما برای کاربر نرم افزار زی فریم ارسال شده است. می توان این گزارش را بر روی کاغذ هم ترسیم نمود. در این گزارش، می توان جزئیات بیشتری را متصور بود:

زی فریم

در ادامه نیاز خواهد بود که نمونه خام ارائه شده توسط کارفرما، به روش های مختلفی که در ادامه توضیح داده خواهند شد ایجاد گردند که به آنها پرداخته خواهد شد.

استفاده از زی فریم برای گزارش گیری

برای تهیه گزارش در زی فریم، راه های مختلفی وجود دارد. یکی از این راه ها استفاده از نوار ابزار grid و انتخاب دکمه Design Report مطابق شکل ذیل است:

زی فریم
 

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

زی فریم
 
تعیین داده ها جهت نمایش

در اولین قدم، می بایست که جداول مورد نظر را جهت ارائه در گزارش مشخص کنید. می توان در یک VIEW خیلی از مقادیری را که می خواهید برای کاربر نمایش داده شود تعریف کنید. برای اینکار به SQL Server مراجعه می کنید و در آنجا VIEW مورد نظر را تعریف می کنید. هدف از ایجاد VIEW ، قابل درک شدن فیلدهایی از جدول برای کاربران است که از اعداد غیر قابل درکی مانند کلیدهای خارجی پر شده اند. اطلاعات مورد نظر در جدول Course به همراه ایجاد پیوند با چند جدول دیگر قرار گرفته اند. در نتیجه VIEW مورد نظر، اینگونه خواهد بود:

 
CREATE VIEW View_Flat_Course_Info AS
SELECT
, C.[Course_ID]
,C.[Duration_ID]
,P.[Person_Name]
,P.[Person_Family]
,L.[Lesson_Name]
,CR.[Class_Number]
,CR.[Floor_Number]
,D.[Day_Name]
,C.[StartTime]
,C.[EndTime]
FROM Course AS C
INNER JOIN Person AS P ON P.Person_ID = C.Person_ID
INNER JOIN Lesson AS L ON L.Lesson_ID = C. Lesson_ID
INNER JOIN ClassRoom AS CR ON CR.ClassRoom_ID = C.ClassRoom_ID
INNER JOIN [DAY] AS D ON D.DAY_ID = C.DAY_ID

حال با اجرای VIEW مورد نظر در داخل SQL Server مشاهده خواهید کرد که همه فیلد ها با مقادیری قابل درک پر شده اند. همچنین به جدول Duration هم احتیاج خواهید داشت.

 
دریافت داده های معین شده در ابزار

در گام بعدی می بایست محلی که اطلاعات از آنجا واکشی می شود مشخص گردد. پس مطابق با شکل ذیل، بر روی تب Dictionary در سمت چپ ابزار کلیک کرده و سپس بر روی دکمه Click Here کلیک می شود تا کادر بعدی باز شود:

زی فریم

حال در اینجا، نوع پایگاه داده ای را که می خواهید به آن متصل شوید مشخص می کنید. به عنوان مثال در اینجا از پایگاه داده SQL Server استفاده شده است:

زی فریم

پس از انتخاب نوع پایگاه داده، می بایست که یک ارتباط ایجاد شود. در نتیجه در کادر جدید گشوده شده، اطلاعات لازم درج می گردد. در کادر Name و Alias نام ارتباط درج می شود که سلیقه ای است. مهم Connection String است که برای ایجاد یک نمونه خام از آن، بر روی علامت تعجب کلیک می شود و در آن /myDatabase نام اینستنس پایگاه داده است. تنها در صورتی که هنگام نصب SQL Server از اینستنس استفاده شده باشد، نام آن اینستنس آورده می شود. در غیر اینصورت نبایستی چیزی نوشته شود. برای راهنمایی بیشتر، می بایست که به آموزش احراز هویت و تعیین سطوح دسترسی مراجعه نمود. در ادامه مواردی که می بایست پر شوند شامل نام کاربری، رمز ورود و نام پایگاه داده می باشند. پس از تکمیل کلیه موارد موجود در Connection String می توان بر روی دکمه  کلیک نمود. در صورت موفقیت آمیز بودن ارتباط، پیام connection was successful مشاهده خواهد شد. در نهایت بر روی دکمه تأیید کلیک می کنید.

زی فریم

پس از اینکه ارتباط ایجاد شد، ابزار به مدت چند ثانیه به جستجو و واکشی اطلاعات و جداول موجود در پایگاه داده می پردازد. در نهایت برای ابزار، ارتباطی مشابه با تصویر ذیل ایجاد خواهد شد:

زی فریم

در اینجا پس از انتخاب VIEW ایجاد شده، کافیست که بر Check Box آن کلیک کرده و سپس بر روی دکمه تأیید کلیک کنید تا VIEW ایجاد شده در کادر Dictionary سمت چپ ایجاد شود. همین کار را هم می توان برای جدول Duration انجام داد. حتی ممکن است در ادامه بخواهید تا موارد جدیدی را هم به Dictionary اضافه نمایید. برای این کار، کافیست که بر روی ارتباط ایجاد شده کلیک راست نموده و از آنجا بر روی گزینه New Data Source کلیک کنید تا مانند قبل، کادر نوع ارتباط باز شود.

زی فریم

حال این بار می بایست مطابق شکل ذیل بر روی ارتباط از پیش ایجاد شده کلیک شود تا اطلاعات همان ارتباط ویرایش شود:

زی فریم
 
 
 
 
نمایش داده ها در کادر گزارش

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

زی فریم
 

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

زی فریم
 

برای شروع کار می توان یک Header و یک Footer را ایجاد نمود. حال برای تکمیل این اقلام اطلاعاتی، مطابق شکل می توان بر روی سومین مورد در نوار ابزار کلیک کرد تا مواردی را در آنها قرار داد. مواردی مانند متن، برچسب، عکس و حتی جدول از جمله موارد رایج در این قسمت می باشند:

زی فریم
 

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

زی فریم
 

پس از ایجاد کادر متنی و با کلیک راست بر روی آن، یک کادر جدید گشوده خواهد شد. با انتخاب اولین گزینه مطابق شکل ذیل، می توانید به خصوصی سازی آن متن بپردازید:

زی فریم
 

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

زی فریم
 

چون در این مثال یک متن انتخاب شده بود، کادر سمت چپ جهت خصوصی سازی یک متن باز شده بود. در نتیجه بسته به نوع قلم اطلاعاتی، کادر سمت چپ متفاوت خواهد بود. با مطالعه بیشتر در کادر Properties می توان به قابلیت های بسیار بیشتری پی برد.

علاوه بر موارد فوق که بسته به سلیقه و شکل فرم می توان از آنها استفاده شود، در کادر Dictionary بخش های متعدد دیگری هم وجود دارند. یکی از این بخش ها متغیر های سیستمی می باشند که می توان از آنها هم برای بهبود شکل فرم استفاده نمود. برای دستیابی به آن موارد، کافیست تا مطابق شکل ذیل، بر روی گزینه System Variable کلیک شود:

زی فریم
 
به عنوان مثال با انتخاب دو گزینه Total Page Count و Page Counter در کنار هم و قراردادن آنها در بخش Footer، می توان یک ساختار اعلام صفحات را ایجاد نمود. به عنوان مثال اعلام اینکه در صفحه چند از کل صفحات قرار دارید.
 
 
 

ایجاد متغیر

پس از اینکه مطابق موارد گفته شده، فرم ابتدایی گزارش را تکمیل کردید، می بایست که اطلاعات مورد نظر خود را هم در فرم قرار دهید. در ابتدا برای این کار نیاز است که یک متغیر ایجاد شود. پس بر روی دکمه Variables در کادر Dictionary کلیک راست می شود. سپس مطابق شکل ذیل و در کادر گشوده شده بر روی New Variable کلیک می شود:

زی فریم
 

پس از کلیک بر روی این گزینه، کادر ایجاد یک متغیر گشوده خواهد شد. نکته ای که در نامگذاری این کادر وجود دارد این است که برای نامگذاری آن می بایست از فیلد کلید اصلی جدول مورد نظر استفاده شود. در اینجا کلید اصلی جدول Duration فیلد Duration_ID می باشد. پس نام متغیر هم همین خواهد شد. از طرفی می توان در کادر Value هم یک عدد را تعیین نمود که نمایانگر تعداد ستون های این متغیر می باشد و می بایست با تعداد فیلدهای مجموعه داده انتخابی به عنوان Data Source، همخوانی داشته باشد . در این مثال 8 انتخاب شده است. آنرا درج نموده و بر روی دکمه تأیید کلیک می کنید:

زی فریم
 

حال مشاهده خواهید کرد که متغیر مورد نظر در قسمت Variables ایجاد شده است. در ادامه نیاز است که تا این مرحله گزارش خود را ذخیره نمایید. پس مانند روندی که در اکثر برنامه های کاربردی وجود دارد، بر روی منوی File کلیک می کنید و سپس بر روی دکمه Save As کلیک می کنید.

زی فریم
 

پس از کلیک روی دکمه Save As کادر نامگذاری گزارش گشوده می شود. حال نام دلخواه را در کادر نامگذاری قرار داده و بر روی دکمه تأیید کلیک می کنید. دقت شود که format فایل عوض نشود.

زی فریم

حال اگر به WorkSpace مراجعه کنید و مطابق شکل ذیل از آنجا به مسیر ذیل بروید، گزارش ایجاد شده را مشاهده خواهید کرد:

 
WorkSpace > ZF > build > web > ReportRepository > stimul
 
زی فریم
 
استفاده از Stimulsoft در زی فریم
گام اول: معرفی پایگاه داده به برنامه

همانگونه که در ابتدا گفته شد راه دیگر گزارش نویسی، استفاده از ابزار StimulSoft Designer است که قابل نصب بر روی کامپیوتر می باشد. پس از اینکه این وب اپلیکیشن بر روی کامپیوتر نصب شد، مطابق شکل ذیل نیاز است که کاربر برای استفاده از آن یک Login بر روی سیستم داشته باشد. می توان از سیستم احراز هویت موجود در گوگل برای ورود به این نرم افزار استفاده نمود.

زی فریم

پس از اینکه وارد نرم افزار شدید، یک کادر جدید برای تعیین نوع نرم افزار گشوده خواهد شد. می توان بر روی گزینه Basic کلیک نمود.

زی فریم

در ادامه هم با کلیک بر روی فایل گزارش گیری ایجاد شده، وارد محیط برنامه می شوید. با کمی دقت، می توان متوجه شد که محیط هر دو ابزار، چه تحت وب و چه تحت ویندوز مشابه هم می باشند. پس ادامه مراحل تهیه گزارش را با استفاده از نسخه تحت ویندوز ادامه خواهیم داد. در محیط تحت ویندوز مشاهده می شود که Dictionary در سمت راست قرار گرفته است و مشابه با وضعیت Dictionary است که در محیط وب داشتیم. تنها می بایست در صورتی که ارتباط با جداول برقرار نبود و مشابه با تصویر ذیل، علامت ضرب روبروی ارتباط قرار داشت، مشکل ارتباط را برطرف کنیم .
(در صورتی که با انجام مراحل ذیل، ارتباط تصحیح نشد، می توان کل ارتباط را پاک کرده و از نو ایجاد کرد. کافیست که با کلیک راست بر روی ارتباط CnnEducation و انتخاب گزینه Delete آن ارتباط را پاک کرده و سپس بر روی Data Source کلیک راست کرد تا بتوان یک ارتباط جدید را با انتخاب گزینه New Data Source ایجاد کرد. باقی مراحل مانند بالا می باشد. )

زی فریم

برای اینکار کافیست تا بر روی ارتباط CnnEducation کلیک کنید تا فرم ویرایش ارتباط مشاهده شود. در این مرحله می بایست که مطابق شکل ذیل بر روی دکمه Wizard ساخت یک ارتباط کلیک شود:

زی فریم

پس از کلیک بر روی دکمه Wizard وارد فرم ایجاد ارتباط خواهید شد. پس در فرم جدید در نام سرور، در صورت استفاده از Host محلی نقطه گذاشته و سپس در کادر بعدی، از Use Windows Authentication استفاده می کنید. سپس در کادر آخر از کشویی انتخاب پایگاه داده، Education را مطابق شکل زیر انتخاب کرده و سپس بر روی دکمه OK کلیک می کنید.

زی فریم

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

زی فریم

از طرف دیگر هم در کادر Dictionary علامت ضربدر مربوط به عدم وجود ارتباط از بین رفته است:

زی فریم
 
 
گام دوم : ایجاد پرس و جو

حال اگر بر روی ارتباط دوبار کلیک کنید، کادر دیگری گشوده خواهد شد که در آن کلیه جداول قرار داده شده اند. در تصویر ذیل کادر مذکور را می توانید مشاهده نمایید:

زی فریم

مساله ای که از این به بعد اهمیت دارد پرس و جویی است که شما می زنید. چرا که بوسیله آن پرس و جوها، DataSet هایی ایجاد می گردند و در نتیجه آن DataSet هاست که گزارش تکمیل می گردد. حتی مشابه با تصویر بالا، کلیه جداول از پایگاه داده واکشی شده اند. پس حتی اگر ارتباط CnnEducation هم تصحیح نشد، می توان یک ارتباط تازه ایجاد نمود و در نتیجه آن ارتباط، کلیه جداول را مشاهده نمود. تنها نکته ای که اهمیت دارد پرس و جو هایی است که شما می زنید. پس مشابه با تصویر بالا بر روی دکمه New Query کلیک می کنید تا کادر مربوطه گشوده شود. حال کافیست تا پرس و جوی مربوط به جدول Duration را در کادر Query قرار دهید تا پرس و جو تکمیل شود. همچنین در کادر Columns & Parameters لیست متغیرهایی که تعریف کرده اید، آمده اند. در این مثال تنها متغیر Duration_ID تعریف شده بود.

زی فریم

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

زی فریم

با کلیک بر دکمه وسطی، یک ویرایشگر متنی مطابق با شکل ذیل گشوده خواهد شد که بوسیله آن می توان به ویرایش پرس و جو پرداخت. در این تصویر پرس و جوی جدول Duration آورده شده است.

زی فریم

در تصویر ذیل هم پرس و جوی VIEW ساخته شده آورده شده است:

زی فریم

همچنین با کلیک بر دکمه View Query هم می توان خروجی پرس و جوی زده شده را مشاهده نمود. در تصویر ذیل خروجی جدول Duration را مشاهده می کنید:

زی فریم

در کنار این 3 دکمه هم دکمه دیگری به نام Run Build Query قرار گرفته است که برای اجرای پرس و جو بوده و به ما یک خروجی در نمای طراحی را می دهد. در شکل ذیل خروجی این نما را برای VIEW ایجاد شده مشاهده می کنید. همانگونه که مشاهده می کنید، تمامی فیلدها هم وارد شده اند.

زی فریم

مشابه با تصویر ذیل از دکمه Retrieve Columns هم برای مشاهده فیلدهای ایجاد شده داخل کادر View Query استفاده می شود. کافیست بر روی این گزینه کلیک کرده و در داخل آن بر روی اولین گزینه که Retrieve Columns and Parameters است کلیک کنید.

زی فریم

مشابه با یک روند، برای هر دو جدول Duration و VIEW ایجاد شده، یک پرس و جو را ذخیره می کنید. پس از ذخیره سازی دو پرس و جو، مشاهده خواهید کرد که در ارتباط موجود، دو مجموعه داده تعریف شده است که پیشتر نبودند. از همین دو مجموعه داده برای ایجاد گزارشات استفاده می شود:

زی فریم
 
 
 
 
گام سوم : تهیه گزارش

مشابه با تصویر بالا، مشاهده می کنید که دو مجموعه داده ایجاد شده به همراه همه فیلدهای تعریف شده آمده اند. در صورت نبودن فیلدها، مشابه با توضیحات صفحه قبل، می بایست که از دکمه Retrieve Columns واقع در View Query استفاده شود. حال کافیست هرکدام از فیلدها را که می خواهید در صفحه گزارش قرار داده شوند را به داخل آن درگ کنید. سپس در کنار آن یک برچسب برای معرفی قرار دهید. به عنوان مثال در اینجا سه فیلد Title,StartDate و EndDate آمده اند و در کنار هرکدام، یک برچسب جهت معرفی بهتر، قرار داده شده است:

زی فریم

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

زی فریم

بلافاصله پس از رها کردن دکمه ماوس، مشاهده خواهید کرد که کادر جدیدی باز می شود. حال در آنجا می بایست که مجموعه داده انتخابی را جهت bind کردن با کادر انتخاب نمائید.

زی فریم

یکی دیگر از این راه ها، درگ نمودن خود مجموعه داده درون کادر گزارش گیری است. برای اینکار بر روی نام خود مجموعه گزارش کلیک می کنید و آنرا به داخل کادر گزارش درگ می کنید. اینبار هم پس از رهاسازی ماوس یک پنجره جدید جهت انتخاب فیلدهای مد نظر گشوده می شود. در آنجا هر فیلدی را که می خواهید انتخاب نموده و در آخر بر روی دکمه تأیید کلیک می کنید. فقط دقت کنید که تعداد فیلدها با تعداد Value معین شده در هنگام ایجاد متغیر همخوانی داشته باشد. در آنجا عدد 8 انتخاب شده بود.

زی فریم

حال کافیست که بر روی دکمه Preview در منوی اصلی برنامه کلیک کنید تا نتیجه نهایی را مشاهده نمایید. همچنین می توان بر روی متغیر ساخته شده که همان Duration_ID بود هم کلیک کرد و در آنجا مطابق شکل ذیل بر روی گزینه Request From User کلیک نمود:

زی فریم

با کلیک بر روی این Check Box یک کادر جدید گشوده خواهد شد. در آنجا هم بر روی دکمه تأیید کلیک می کنید:

زی فریم

حال اگر بر روی دکمه Preview کلیک کنید، متوجه می شوید که یک کادر جدیدجهت تنظیم مجدد تعداد ستون ها ایجاد شده است. می توان با کم و زیاد کردن این اعداد به نتیجه مطلوب دست یافت:

 
فایل گزارش ایجاد شده می بایست در مسیر WorkSpace > ZF > build > web > ReportRepository > stimul که مسیر build برنامه بود قرار داده شود تا قابل استخراج باشد.
 
زی فریم
 
 
گام چهارم : مشاهده گزارش در زی فریم

تا به حال توانستیم یک گزارش را توسط این برنامه و در محیط ویندوز ایجاد کنیم. حال اگر بخواهیم همین گزارش را در زی فریم هم ببینیم کافیست که به برنامه مراجعه نموده و بر روی دکمه Report List کلیک کنیم:

زی فریم

مشاهده می کنید که کادر سمت چپ تغییر پیدا کرده است. حال کافیست که بر روی دکمه By Stimul Report کلیک کنید و در کادر باز شده، فایل گزارش ساخته شده را انتخاب کنید.

زی فریم

پس از انتخاب فایل و کلیک بر دکمه تأیید، یک کادر جدید گشوده می شود. در این کادر به صورت خودکار پارامتر انتخابی هم آمده است. در این کادر می بایست که یک نام و Caption برای گزارش انتخاب شود و سپس بر روی دکمه Create و بعد آن هم بر روی دکمه تأیید کلیک گردد:

زی فریم

مشاهده می شود که در کادر سمت چپ گزارش وارد شده است. این گزارش فاقد داده و دارای یک پارامتر می باشد:

زی فریم

کافیست در قسمت Properties تغییرات زیر را اعمال نمائید:

زی فریم

حال می بایست به بخش فرم ها مراجعه کنید و فرمی را که می خواهید برایش گزارش نمایش داده شود را انتخاب نمائید. سپس در قسمت Properties تغییرات زیر را اعمال نمائید:

زی فریم

حال با کلیک بر روی دکمه Application Cache Management و بعد از آن کلیک بر روی دکمه Clear Cache Data تغییرات را در برنامه اعمال کنید. سپس با مراجعه به مرورگر و refresh کردن صفحه، می توانید تغییرات را مشاهده نمائید. برای اینکار تنها کافیست تا مشابه با تصویر ذیل، بر روی فرم کلیک نموده و سپس در آنجا بر روی آیکون پرینتر کلیک کنید تا گزارش ایجاد شود:

زی فریم

نتیجه نهایی چیزی شبیه به تصویر ذیل خواهد بود:

زی فریم

همانگونه که مشاهده می کنید، در نوار ابزار موجود گزینه هایی جهت تنظیمات رایج چاپ و ذخیره سازی قرار داده شده است. به عنوان مثال با کلیک بر روی گزینه Print پنجره ذیل باز می شود که قابل تنظیم است:

زی فریم

همچنین می توان با برداشتن تیک از Check Box موجود در فرم تنظیمات متغیر تحت عنوان Request From User که پیشتر درمورد آن توضیح داده شد، تنظیمات ستون ها را از کاربر سلب نمایید.

 
با هر بار build برنامه، تمامی گزارش های ایجاد شده و ذخیره شده در مسیر build پاک می شوند. لذا می بایست یه نسخه از گزارشات ساخته شده در کامپیوتر ذخیره گردد.
 
احراز هویت (Authentication) و مجوز دسترسی (Authorization )

در بسیاری از نرم افزارها به منظور افزایش و ارتقا امنیت، از دو مفهوم احراز هویت (Authentication) و مجوز (Authorization) استفاده می شود. به همین دلیل داشتن آگاهی نسبت به این دو مفهوم و دانستن تفاوت های آنها دارای اهمیت است.
احراز هویت و مجوز (تعریف سطح دسترسی) دو فرآیند حیاتی امنیت اطلاعات هستند که مدیران از آنها برای محافظت از سیستم ها و اطلاعات استفاده می کنند. در فرایند “احراز هویت” به بررسی هویت یک کاربر یا سرویس پرداخته شده، و سپس میزان دسترسی کسانی که هویتشان تایید شده است با استفاده از فرایند “مجوز ” مشخص می شود. برای درک بهتر این موضوع می توان صفحه ورود به پنل کاربری را به عنوان بخشی از فرایند احراز هویت در نظر گرفت، و تعیین آنکه کدام کاربر می تواند به کدام قسمت های پنل دسترسی داشته باشد، نمونه ای از فرایند “مجوز” است. به عنوان مثال در یک وبسایت، نویسنده ها ممکن است تنها به بخش مقالات و پشتیبانی ها تنها به بخش پرسش و پاسخ دسترسی داشته باشند، در حالی که ادمین به همه بخش ها دسترسی خواهد داشت. این مفاهیم را می توان در تمامی نرم افزارهای مرتبط با بانک های اطلاعاتی مشاهده نمود. پس در ابتدا می بایست که یک شناخت کلی نسبت به اینگونه نرم افزارها بدست آوریم.
نرم افزارهای عمومی بانک اطلاعاتی ماکروسافت مانند Access و Excel تفاوت های ساختاری با نرم افزار هایی تخصصی تر از قبیل SQL Qerver ,My SQL و Oracle دارند که در عملکرد آنها بسیار موثر است. نرم افزارهای عمومی بانک اطلاعاتی ماکروسافت از نوع data file یا به تعبیری data bank هستند، در حالی که این تعریف در نرم افزارهای تخصصی پایگاه داده تحت عنوان data base شناخته می شود.
نرم افزارهای عمومی بانک اطلاعاتی ماکروسافت، ساختاری مشابه با یک فایل را دارا بوده که در آن از یک Databank Engine یا موتور پایگاه بانک jet که مخصوص خود ماکروسافت است، استفاده شده است. این موتور  مانند یک موجودیت بیرونی عمل کرده و کار مدیریت پایگاه داده را در بانک های اطلاعاتی ماکروسافت انجام می دهد.
اما در نرم افزارهای تخصصی پایگاه داده، با مدیریت پایگاه داده در سطحی وسیع تر و تحت عنوان DBMS یا همان Management System Database مواجه هستیم. به عبارتی دیگر در اینگونه نرم افزارها، موتور پایگاه داده یا Database Engine به کار رفته است که در آن ابتدا کوئری وارد شده parse می شود و سپس این موتور تشخیص می دهد که این کوئری نیازمند به ارتباط با کدامیک از جداول موجود در پایگاه داده است. محیط موتور پایگاه داده برای اینگونه نرم افزارها از ساختاری پیچیده تر و سه لایه برخوردار است که می توان این ساختار را به صورت شماتیک در شکل زیر مشاهده نمود.

زی فریم
 
 
لایه فایل
هنگامی که توسعه دهنده یک پایگاه داده ایجاد کند، بلافاصله برای آن یک سری فایل در سیستم ایجاد خواهد شد که به آن Data File گفته می شود. به طور معمول، هنگامی که با پایگاه های داده با ابعادی کوچک مواجه هستیم، یک Data File برای هر پایگاه داده کفایت می کند. اما با افزایش حجم یک پایگاه داده، داشتن چندین Data File برای آن پایگاه داده کاملا طبیعی است که به آنها Table Space گفته می شود. تمام این فرایندها حتی روند ساخت Table Space ها نیز به صورت خودکار توسط موتور پایگاه داده انجام می گردد. به عنوان مثال، یک پایگاه داده که در ابتدا در یک Table Space قرار داشت، اکنون می تواند به حدی گسترده شود که حتی یک جدول آن به تنهایی چند Table Space را به خود اختصاص دهد.
 
 
لایه اجرا کننده
لایه اجرا کننده که به آن موتور هم گفته می شود، وظیفه اجرای کوئری های وارد شده را بر عهده دارد.
 
 
لایه امنیت

در لایه امنیت، فرایندهای احراز هویت (Authentication) و مجوز ( Authorization) صورت می پذیرد. این سه لایه درون سیستم در کنار یکدیگر تشکیل یک برنامه زنده داده و یک پورت را نیز درون سیستم کاربر به خود اختصاص می دهند. به عنوان مثال در مورد برنامه SQLServer، کاربران از طریق پورت های ۱۴۳۳ و ۱۴۳۴ به بانک اطلاعاتی سرور دسترسی پیدا می¬کنند. به این پورت ها، اینستنس های پیش فرض گفته می شود و طبعاً قابل تغییر نیز هستند. چنانچه بخواهیم یک موتور پایگاه داده دیگر را در همان سیستم داشته باشیم، چون این پورت ها پیشتر توسط SQLServer اشغال شده اند و هر پورت نیز مختص به یک برنامه است، بنابراین سایر موتورهای پایگاه داده نمی توانند از این پورت ها استفاده کنند. به همین دلیل لازم است تا پورت های آن تغییر یابند. در نتیجه با تغییر این پورت ها، اين قابليت وجود دارد که چندين نسخه از SQL Server به صورت کاملا مستقل بر روی يک ماشين نصب شوند. به هر سیستم SQL Server نصب شده بر روی يک ماشين يک Instance (نمونه) از SQL Server گفته می شود. هر يک از اینستنس ها دارای يک نام مشخص و یک پورت متفاوت است. به اینستنسی که در زمان نصب، نام خاصی به آن اختصاص داده نشده و هم نام با ماشينی است که بر روی آن نصب شده است، Default Instance گفته می شود. تصویر ذیل، نمونه یک Default Instance در زمان نصب SQLServer را نشان می دهد.

زی فریم
 

به این نکته توجه نمایید که Default Instance می تواند دارای عناوین مختلفی باشد، اما طبعاً همه آنها بر روی یک پورت نصب شده اند. در صورت نیاز به یک اینستنس جدید و در نتیجه اشغال یک پورت جدید، نیاز است که مجدداً برنامه SQLServer نصب شده و تغییرات لازم در مرحله نصب اعمال گردد. برای اتصال با Default Instance ، نیاز است که از منوی File، بر روی دکمه Connect Object Explorer کلیک شود تا پنجره Connect to Server باز شود.

زی فریم
 

در این پنجره می توان نحوه اتصال به برنامه (Windows Authentication یا SQL Server Authentication) را تعیین نمود. به صورت پیش فرض، مسئولیت احراز هویت بر عهده ویندوز گذاشته شده است، به این معنا که SQL Server کاربری که درون ویندوز لاگین کرده است را به عنوان شخص معتبر می پذیرد. به عبارتی، SQL Server احراز هویت ویندوز را اولویت قرار می دهد. در نتیجه کافیست نام Default Instance در قسمت Server Name نوشته شده و بر روی دکمه Connect کلیک شود تا ارتباط برقرار گردد. همچنین می توان به جای نام پیش فرض Default Instance هم موارد localhost و یا نقطه را قرار داد.

زی فریم
 

البته اگر با زدن دکمه Connect اتصال صورت نگرفت، دلیلش آن است که در هنگام نصب کاربر از Default Instance استفاده نکرده است و با یک اینستنس ساخته شده توسط خودش وارد شده است. اگر ارتباط با localhost و یا نقطه برقرار شد، همانگونه که در شکل زیر مشاهده می شود، سه Default Instance خواهیم داشت که البته همه آننها در واقع یک اینستنس می باشند. در نتیجه اگر تغییراتی در پایگاه های داده آنها ایجاد شود، بطور مشترک در همه آنها اعمال خواهد شد.

زی فریم
 

همانگونه که پیشتر گفته شد، چنانچه کاربر در هنگام نصب از Default Instance استفاده نکرده باشد و یک اینستنس برای خود ساخته باشد، دیگر با استفاده از localhost نمی تواند با SQL Server ارتباط برقرار کرد. بدین منظور می بایست تغییراتی را در نحوه اتصال به دیتابیس درون SQL Server و نیز نحوه اتصال زی فریم به دیتابیس هنگام تعریف پروژه و اپلیکیشن اعمال کرد. به همین منظور برای اتصال به دیتابیس درون SQL Server، عبارت “\localhost” و یا “\.” را همانند تصویر زیر پیش از نام پیش فرض قرار دهید.

زی فریم
 

همچنین هنگام ساخت پروژه، عبارت وارد شده در کادر ارتباط ADO بدین صورت خواهد شد.

زی فریم
 

و در هنگام ساخت یک اپلیکیشن نیز در کادر های ارتباط با پایگاه داده JDBC و ADO.NET به شکل زیر تغییرات خواهیم داشت.

زی فریم
 

در موارد مطرح شده، فرایند Authentication توسط خود ویندوز انجام شد. چرا که در این موارد SQLServer احراز هویت را به ویندوز سپرده بود و ویندوز هم با عمل لاگین حین ورود به سیستم، این احراز هویت را پیشتر انجام داده بود. اما می توان این مسئولیت را از عهده ویندوز خارج نمود و به SQL Server سپرد. برای این کار کافیست که در کادر بالا و در قسمت Authentication گزینه Authentication SQLServer را انتخاب کرده و سپس نام کاربری و کلمه عبور تعریف شده در SQL Server وارد شود.

زی فریم
Clear Cache Data

از آنجایی که لیست فرم ها و سرویس ها و همچنین مکانیزم کارکرد آنها در موتور اجرایی زی فریم به این صورت طراحی شده اند که اطلاعات و ساختار آنها Cache می شود، بنابراین چنانچه در زی فریم یک فرم و یا یک سرویس جدید توسعه داده شود، حتما باید از پاک کردن Cache اطلاعات در داخل موتور اجرایی زی فریم اطمینان حاصل کرد. برای انجام این کار از منوی Server گزینه Application Cache Management انتخاب می شود تا پنجره زیر باز گردد.

زی فریم

همانطور که در قسمت Debug Server Address در نوار بالای این پنجره مشاهده می شود، URL سامانه اجرایی در این قسمت قرار گرفته است، زیرا در زمان تعریف اپلیکیشن یا سیستم، آدرس URL سامانه اجرایی در آن وارد شده است. چنانچه این کار تا کنون صورت نگرفته باشد آنگاه هیچ آدرسی در قسمت Debug Server Address وجود نخواهد داشت و cache کردن امکان پذیر نخواهد بود. دلیل این امر آن است که این آدرس مسیر ارسال پیام های زیر ساختی به سمت نرم افزار اصلی را برای ZIDE مشخص می کند.

 
چنانچه هیچ آدرسی در قسمت Debug Server Address وجود ندارد (خالی است)، URL سامانه اجرایی را کپی کرده و در این قسمت قرار دهید تا Cache کردن امکان پذیر شود (توجه داشته باشید که هنگامی که پروژه خود را از طریق Net Beans اجرا می کنید، خروجی نرم افزار در مرورگر سیستم شما نمایش داده می شود. منظور از URL سامانه اجرایی همان آدرس موجود در نوار آدرس مرورگر پس از اجرای برنامه است.)
 
زی فریم

در پنجره Application Cache Management برای مدیریت فرایند Cache کردن، دکمه هایی وجود دارد که در ادامه توضیح داده می شوند.

با کلیک بر روی این دکمه، اطلاعات بارگذاری شده سمت سرور پاک شده و موتور اجرایی برای اجرای فرایندها به بانک اطلاعاتی Meta Data رجوع خواهد کرد تا سیستم طبق آخرین تغییرات بارگذاری شود (هر زمان در سامانه تغییراتی اعمال شود، برای مشاهده تغییرات در سامانه خروجی باید بر روی این دکمه کلیک نمود). به این کار در زی فریم Clear Cache گویند.

زی فریم
 
View Cache Data
با استفاده از این دکمه، زی فریم گزارشی از مقادیر بارگذاری شده در قسمت cache مانند تمام مقادیر، نوع مقادیر، میزان حجم بارگذاری شده، زمان اجرا و برخی موارد دیگر ارائه می کند.
 
زی فریم
 
 
 
Application Developer Mode

با کلیک بر روی این دکمه، نرم افزار به حالتی سویچ می کند که دیگر نیازی به پاک کردن اطلاعات cache شده وجود ندارد. زیرا دیگر اطلاعات را cache نکرده و برای بارگذاری هر نوع اطلاعاتی اعم از فرم و سرویس به بانک اطلاعاتی MetaData رجوع می کند.

زی فریم
 
Deactive Developer Mode

با انتخاب این دکمه، سامانه از mode کارکردی در حالت Developer Mode خارج می شود.

 
 
Debug Trace

زمانی که بر روی این دکمه کلیک شود، سامانه کلیه فرایندهایی که اجرا نموده را نمایش می دهد.

زی فریم
 
Query List

زمانی که بر روی این دکمه کلیک شود، یک خروجی شامل لیست Query های اجرا شده در موتور اجرایی به همراه خطاها، زمان اجرا و غیره نمایش داده می شود.

Rest API Statistic

با استفاده از این دکمه می توان اطلاعات آماری در مورد تمامی سرویس های استفاده شده، زمان اجرا و تعداد خطاها را مشاهده نمود.

Form Statistic

با استفاده از این دکمه می توان آمار مربوط به اجرای فرم ها و گزارش های مرتبط با کارایی (Performance) را مشاهده نمود.

 
Excel Report

از این دکمه برای دریافت یک خروجی آماری (در قالب یک فایل اکسل) از تمامی فرمها و سرویس های اجرا شده استفاده می شود.

Set Trace Level

در زی فریم ماژولی وجود دارد که عمل LOG گرفتن از رخدادها را انجام می دهد. این قسمت زمانی کاربرد دارد که یک برنامه نویس بخواهد با استفاده از ابزار جاوا از زیرساخت زی فریم استفاده کند. در زی فریم برای هر پیامی که به ماژول لاگ فرستاده می شود، عددی به عنوان Level در نظر گرفته شده است که درجه بندی آن از کم به زیاد متغیر است. به این معنا که هر چه Level یک پیام کمتر باشد ارزش آن نیز کمتر است و بالعکس.

زی فریم

تصویر بالا نمونه ای از لاگ اجرایی است که توسط زی فریم نوشته شده و در یک فایل در مسیر Application سرور ذخیره می شود. نکته بسیار مهم آن است که اگر سیستم دچار خطا شود، زی فریم بدون توجه به اولویت، آن پیام را نمایش می دهد. به عبارت دیگر، زمانی که پیام از جنس خطا باشد، این پیام بدون هیچ قید و شرطی نمایش داده خواهد شد. در زی فریم می توان برای مدیریت نمایش پیامها بر اساس درجه اهمیت، یک Level مبنا در قسمت Engine Trace Level تعیین نمود. در نتیجه دکمه Set Trace Level سامانه را در حالتی تنظیم می کند که فقط پیام هایی را نشان دهد که مقدار Level آنها از مقدار وارد شده در Engine Trace Level بیشتر باشد. همانطور که در قسمت آموزش نصب و راه‌ اندازی توضیح داده شده است، حالت پیش فرض Trace Level را می توان در فایل Config نرم افزار مقداردهی نمود.

 
مدیریت Log در زی فریم به این حالت محدود نمی شود و می توان از دیگر ابزارهای مدیریت LOG نیز در آن استفاده نمود.
 
best tracker