View Full Version : چگونه یه صفحه splash ایجاد کنیم
javad_hosseiny
چهارشنبه 10 فروردین 1384, 13:10 عصر
در محیط ویژوال فاکس چگونه می توان یک صفحه splash (صفحه کوچک که قبل از اجرای اصل برنامه بصورت یک صفحه تبلیغاتی نمایش داده می شود که معمولا در این فاصله فایلهای موقت مورد نیاز برنامه ایجاد می شود و یا تنظیمات قسمتهای مختلف انجام می شود)
مشکل اصلی تغییر اندازه صفحه screen محیط فاکس به اندازه پنچره مورد نظر می باشد (البته با دستورات _screen.width , _screen.hight اینکار می شود) ولی بزرگ و کوچک صفحه مشهود بود و نمای جالبی ندارد و یا استفاده از خصلت show.window نتوانست کمکی خوبی باشد) ممنون می شوم از راهنمایی دوستان؟
binyaz2003
چهارشنبه 10 فروردین 1384, 14:49 عصر
شما می تونید از یک فرم عادی برای این کار استفاده کنید یا اینکه tools>component gallery>visual foxpro catalog > fundation classes > dialogs > splash screen
یک نمونه درست کنید . فرمی که درست می کنید می تونه خصوصیات زیر رو داشته باشه :
showwindow=2
titlebar=0
desktop=.t.
حالا شما نیاز دارید که یک فایل با اسم config.fpw بسازید با محتوای
screen=off
و اون رو در دایرکتوری جاری قرار بدین حالا در فایل اصلیتون اول فرم معرفی رو اجرا می کنید و بعد از انجام کارها اسکرین رو نمایان می کنید. :sunglass:
javad_hosseiny
چهارشنبه 17 فروردین 1384, 13:35 عصر
و حال امکان این نکته است که مثلا قسمتهای از برنامه که زمان می برد (مثل ایجاد اطلاعات در treeview ها (مثلا بانکی اطلاعات 10000 رکورد) که در قسمت load مربوط به فرم مربوطه صدا زده میشود) را در نمایش این صفحه splash اجرا کنیم بنحوی که در حافظه بماند و به هنگام فراخوانی آن فرم (حاوی treeview) این بخش از آن فرم (بخش load که پر کردن اطلاعات در treeview را انجام می دهد) مجددا اجرا نشده و سریعا نمایش داده شود
binyaz2003
چهارشنبه 17 فروردین 1384, 21:05 عصر
اون فرم اول باید ساخته بشه!
مثلا همه فرم ها رو اجرا کنیم ولی نشون داده نشن و هر وقت خواستیم نشانشون بدیم اما این کار خیلی بدتر از اون مکس کوچیک هست
javad_hosseiny
پنج شنبه 18 فروردین 1384, 09:34 صبح
این کار رو قبلا انجام دادم (هرچند بسیار مشکل بود چونکه هنگام اجرای آن صفحه جدا کردن load فرم و عدم اجرای مجدد آن نیاز به کد نویسی ویژه داشته که یک کم دردسر داشت) اما مشکل اینجا است که چون مقدار زیادی از حافظه اشغال میشه روند کلی کار برنامه کند شده آیا راه حل بهتری سراغ ندارید؟
rezaTavak
پنج شنبه 18 فروردین 1384, 10:29 صبح
سلام
دوست عزیز یک مشکل دیگه اینه که اگر منوی پنجره طراحی کرده باشید تمام فرمهای موجود در حافظه نمایش داده می شوند و قابل دسترسی است. یادتان نرود ویندوز وقایع گرا بوده و نباید کاربر محدود شود به این علت منوی پنجره مهم است.
در واقع فاکس پرو مقدار زیادی حافظه هدر میدهد. میتوانید از روی WinMsg این موضوع را دنبال کنید فقط 7 مگا بایت در شروع کار میخواهد. و ...
اما یک چیزی که در کاهش حافظه مهم است بدانید این است که از کلاسها استفاده کنید چون از یک حافظه مشترک بهره میبرند.
اگر بگذارید یک یا دو ثانیه بیشتر کابر منتظر بماند بهتر از کند شدن کل سیستم است. در نظر بگیرید کامپیوتری که ویروس کشی مثل نورتن دارد اگر برنامه حجم هم در آن لود شود چقدر در کل کند خواهد شد.
binyaz2003
پنج شنبه 18 فروردین 1384, 11:38 صبح
اگر بگذارید یک یا دو ثانیه بیشتر کابر منتظر بماند بهتر از کند شدن کل سیستم است
این بهتره
javad_hosseiny
یک شنبه 21 فروردین 1384, 08:46 صبح
ممنون از راهنمای دوستان
مشابه این کار را در زبانها دیگر (مثلا دلفی یا visual cدیده ام) فکر می کنید الگوریتم مورد استفاده در آنها به چه صورت است؟
rezaTavak
یک شنبه 21 فروردین 1384, 10:12 صبح
سلام
فاکس را اصلا با دیگر زبانها مقایسه نکنید.(مهم) من با ابزارهایی مثل ++SPY و WinMsg تستهایی در مورد فاکس پرو انجام داده ام و نتیجه گرفته ام فاکس پرو بسیار حافظه برای اجرا می خواهد. دلیلش هم مشخص است:
فاکس پرو برخلاف سایر محصولات همه Object ها و ویندوها به غیر از فرم اصلی را خودش میسازد! این دقیقا همان مشکلی است که ما فارسی کارها با آن مواجهیم!
و کنترل روی فاکس پرو هم به همین دلیل مشکل است.
اگر باور ندارید ++SPY را باز کنید و در فاکس پرو یک فرم کنترل قرار دهید سپس ChildWindow های آن فرم را در Spy ببینید.
یک راه آسون دیگه یک Object بوسیله Ole در فرم قرار دهید مانند FM20 و همچنین کنترلهای فاکس با دستور Clear کنترلهای فاکس پرو پاک میشوند و SPy هم child window های FM را نسان میدهد.
آیا مطلب را رسانیده ام؟
javad_hosseiny
یک شنبه 21 فروردین 1384, 12:18 عصر
ممنون از اطلاع رسانی اتان - در رابطه با بحث splash و قیاس با دلفی و... جواب گرفتم به عنوان راه حل برای مدت زمان مکث جهت آوردن لیست treeview در فرم (این زمان برای حجم اطلاعات حدود 15000 رکورد حول و حوش 45 ثانیه (در سیستم 7/1 سلرون و 15 ثانیه در 8/2 فول کش) می باشد) به نظرتان راه حلی برای پایین آوردن این زمان هست ؟ (مثلا از objectمشابه treeview ولی با قابلیت خواندن مستقیم از table مشابه listbox,gird در خود ویژوال؟
javad_hosseiny
سه شنبه 23 فروردین 1384, 10:41 صبح
دوستان در رابطه با بحث object ی مشابه treeview ولی با قابلیت خواندن مستقیم از table مشابه listbox,gird کسی راهنمایی نداره؟!!!
binyaz2003
سه شنبه 23 فروردین 1384, 13:29 عصر
در مورد شی مثل tree نمیدونم :sorry:
اما برای پایین آوردن زمان می تونید برای بار اول که نشان داده میشه فقط شاخه های اصلی رو از بانک لود کنه و بعد که رو هر کدوم کلیک شد شاخه های زیری رو بیاره!
می تونید یک کلاس بسازید و ازش استفاده کنید.چطوره؟
rezaTavak
سه شنبه 23 فروردین 1384, 18:22 عصر
سلام
این راه حل آفای بینیاز هم خیلی عالیه!!
اما من در مورد این مقدار رکورد و سرعت واقعا تعجب کردم نباید اینقدر طول بکشد :گیج:
با این حساب شاید راه حل ارائه شده توسط اقای بینیاز در عرض کمتر از یک ثانیه جواب دهد.
البته یک مشکل وجود دارد و آن این است که حتما + در صورتیکه زیر مجموعه دارد نمایش داده شود. و این مستلزم این است که یک رویه برای آن تعریف کنید که اگر زیر مجموعه دارد این + نمایش داده شود.
javad_hosseiny
چهارشنبه 24 فروردین 1384, 09:53 صبح
ممنون از راهنمای دوستان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.