ورود

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



پدرخوانده
دوشنبه 10 بهمن 1384, 18:28 عصر
صفحات ریپورتی طراحی کرده ام که به صورت نرمال با استفاده از دستور REPORT و با پارامتر PRIVIEW نمایش داده می شود (ولی خوب مشکل کلی ویژوال فاکس را دارد ) (عدم نمایش درست فونت های فارسی)
جهت تصحیح این مشکل از کلاس ریپورت لیستنر استفاده کرده ام وقتی فرم را در داخل محیط ویژوال فاکس اجرا می کنم مشکلی ندارد ولی وقتی از برنامه خروجی (EXE) می گیریم و برنامه EXE را اجرا می کنم پیش نمایش ریپورت را نمایش نمی دهد (البته شمارش رندر صفحات را نمایش می دهد ولی وقتی به انتها رسیده و می خواهد صفحه را نمایش دهد خارج می شود (البته نه از برنامه بلکه بخش پیش نمایش چاپ)
جهت اطمینان از ایجاد شیء از نوع ریپورت لیستنر نوع آن را چک کرده که از نوع آبجکت باشد مشکلی نداشت و موارد تست دیگر را نیز انجام دادم ولی متاسفانه به جواب نرسیدم



oListener = CREATEOBJECT("ReportListener")
IF TYPE('oListener') <> 'O'
OK= MESSAGEBOX('سیستم قادر به ایجاد آبجکت از نوع ریپورت لیستنر نیست',0+16,'اخطار')
RETURN
ENDIF
oListener.ListenerType = 1
REPORT FORM BOOK_A4 OBJECT oListener
*

البته در پروجکت مربوط به برنامه اجرایی کلاس _REPORTLISTNER اضافه شده است

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

binyaz2003
چهارشنبه 12 بهمن 1384, 15:13 عصر
سلام
آیا جدول یا کرسر شما رکوردی داره یا نه؟
آیا بدون لیسنر جواب میده؟

پدرخوانده
پنج شنبه 13 بهمن 1384, 11:35 صبح
بله جدول دارای رکورد هست
حتی اگر همان ریپورت را بدون قابلیت ریپورت لیستنر می خوانم نمایش می دهد.
جالب تر اینکه وقتی در محیط داخلی فاکس آن را اجرا می کنم (با ریپورت لیستنر) نمایش می دهد ولی پس از exe سازی نمایش نمی دهد (حتی عملیات رندر (wait window) را نمایش می دهد ولی پس از پایان رندر به صفحه فرم باز می گردد)
به احتمال زیاد اشکال از نوع exe و یا نبودن یک فایل در پروجکت هست (البته کلاس مربوطه _reportlistner داخل پروجکت موجود است) exe برنامه با نسخه 9 هست
ممنون میشم اگر نمونه مشابه ای (فایل پروجکتی کوچکی که امکان فراخوانی یک ریپورت که برای نمایش از ریپورت لیستنر استفاده کرده را داشته باشد) دارید (و حالت اجرایی آن نیز درست کار می کند) برایم بفرستید

شاگرد آرام
سه شنبه 18 بهمن 1384, 09:11 صبح
سلام outputtype رو باید مشخص کنید توی راهنمای برنامه هست

پدرخوانده
یک شنبه 23 بهمن 1384, 12:14 عصر
outputtype را تنظیم کردم (مشابه مثال موجود در خود راهنمایش)


_REPORTOUTPUT ="ReportOutput.app"

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

javad_hosseiny
دوشنبه 24 بهمن 1384, 11:29 صبح
شما باید تنظیم مربوط به محل نمایش پرویو در ریپورت لیستنر را مشخص کنید
در سورس کد نمونه ایی که توسط خود فاکس ارائه شده (مثل بخش سولیشن) از متغیر _ReportPreview بصورت دستور (روتین) استفاده کرده که به هنگام اجرا در محیط داخلی فاکس بدون مشکل است ولی به هنگام استفاده در فایل اجرایی مشکل ایجاد می کند (که در خیلی مواقع باعث سردرگمی برنامه نویس می شود) مثل:

do (_ReportPreview) with loPreview
در این متغیر loPreview یک متغیر بولین بوده (یا خالی) و یا متغیری تعریف شده بصورت لوکال
برای رفع این مشکل باید خودتان این متغیر را با توجه به کلاس frxPreview ایجاد کنید بصورت کد زیر:

loPreview = newobject("frxPreviewProxy","frxPreview.vcx")
و سپس متغیر فوق را به عنوان پارامتر PreviewContainer (محل نمایش خروجی پیش نمایش) از آبجکت ریپورت لیستنر معرفی کنید. به سورس زیر که متناسب با نمونه سورس اولیه خودتان تنظیم شده دقت نمایید:

loPreview = newobject("frxPreviewProxy","frxPreview.vcx")
oListener = CREATEOBJECT("ReportListener")
oListener.OutputType = 1
oListener.PreviewContainer = loPreview
oListener.ListenerType = 1
report form book_a4.frx object oListener

bahryvfp
دوشنبه 19 تیر 1385, 12:23 عصر
سوالی داشتم اینکه در حالت preview گزارش باز در نشان دادن حروف فارسی مشکلاتی به وجود می آید مثل اینکه کلمات کشیده شده و در جای خودشان قرار نمی گیرد متشکرم میشود اگر کسی بتواند جواب من را بدهد

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

mehran_337
چهارشنبه 21 تیر 1385, 08:14 صبح
یا مثلا اینکه اگه از قلم B ویندوز ایکس پی استفاده می شه حروف انگلیسی رو نشون نمی ده. اینو شماها چیکار می کنید؟

kia1349
دوشنبه 09 مرداد 1385, 07:33 صبح
یرای درست شدن فونت از دستور SET REPORTBEHAVIOR 90 استفاده کنید و تنها از فونتهای خود ویندوز استفاده کنید(این دستور تنها با لیستنر کار میکند و برای حالت عادی کارائی ندارد) با استفاده از این دستور gdi+ به رندر بهتر محیط گرافیک کمک میکنه
فونتهایی که دوستان از ویندوز 98 پارسا به انتقال میدهند معمولا با مشکل مواجه میشه

علی اکبر
دوشنبه 09 مرداد 1385, 21:02 عصر
فکر کنم مشکل پدرخوانده را هم من چندروز پیش داشتم
یعنی report در حالت عادی مشکلی نداشت اما وقتی exe می شد نمایش داده نمی شد
اما ایراد کار من این بود شاید پدرخوانده هم همین مشکل را داشته باشد
من dll فاکس را ازورژن اولیه فاکس 9 برداشته بودم وهروقت exe می کردم ازهمین dll استفاده می کردم درحالیکه وقتی ازسورس استفاده می شد ازdll جدید استفاده می شد ومشکلی نداشت با حذف dll قدیم این مشکل حل شد شاید شما هم؟؟؟؟

mehran_337
شنبه 14 مرداد 1385, 08:13 صبح
سلام
1 - در ریپورت از 2 ستونی استفاده کردم اما موقع پیش نمایش fatal error میده و خارج می شه . بنظر شما مشکل از سرویس پکه؟ چون هنوز نصبش نکردم
2 - برای درست کردن یک برگه مثلا برگه مرخصی که فقط یک صفحه هست و هیچ detail هم نداره فقط باید header ریپورتمو رو بزرگ کنم و اونو تو هدر ریپورت قرار بدم.؟
3 - برای صفحه چاپ کاغذ b4 می خوام اما تو page setup همه چیز هست بجز b4 چیکار باید بکنم؟
4- وقتی گزارش چند ستونی درست می کنم کل صفحه از چپ به راست نمایش داده می شود. مثلا ستون سمت چپ اول ردیف ها را می زند بعد ستون سمت راست. راه حلی داره؟

mehran_337
یک شنبه 15 مرداد 1385, 08:38 صبح
مشکل اول حل شد با نصب sp1
اما موارد بعدی واقعا حیاتیه مثل سایز b4 و مهمتر از اون راست به چپ شدن کاغذ.
Help me

kia1349
یک شنبه 15 مرداد 1385, 16:48 عصر
در قسمت setting وارد بخش پرینتر میشی.پرینتر رو های لایت میکنی یعنی انتخاب میکنی.از منوی فایل گزینه server properties را انتخاب میکنی و چک باکس مربوط به create a new form را تیک میزنی و یک ابعاد برای کاغذت تعریف میکنی و به یک نام ذخیره اش میکنی.
حالا ریپورت را باز میکنی و از منوی فایل گزینه page setup را انتخاب میکنی . در تب page layoutبازهم page setup را انتخاب میکنی و در قسمت size باید نامی که برای سایز خود در نظر گرفته ای را انتخاب کنی و ............... بقیه اش رو هم که استادی
قسمت دوم سوالت رو هم اصلا نفهمیدم

mehran_337
یک شنبه 22 مرداد 1385, 14:51 عصر
معرکه بود . دستت درد نکنه
من چند روز نبودم . اما واقعا از سایت داشتم نا امید می شدم چون دوباره باز نمی شد . بگذریم
ممنونم اقا رضا. بخش دوم سوالم را دوباره مطرح می کنم:
پیش فرض صفحه ریپورت از چپ به راسته مثلا در بخش detail من دو ستون تعریف می کنم:
page setup\number column =2
(مثل وورد که چند ستون در یک صفحه تایپ م کنیم اصطلاحا روزنامه ای)

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

kia1349
سه شنبه 24 مرداد 1385, 09:06 صبح
خوب این خودش یه هنره

mehran_337
سه شنبه 24 مرداد 1385, 12:06 عصر
ممنونم . راستی آقا رضا راهی نداره؟؟

kia1349
سه شنبه 24 مرداد 1385, 13:07 عصر
تا حالا امتحان نکردم
البته اگر برنامه رو برام بفرستی بهتر میتونم نظر بدم(فقط همون قسمتی که مشکل داره و برای اجرا ناقص نباشه)