View Full Version : Forms & Form designer
kia1349
چهارشنبه 18 شهریور 1383, 06:45 صبح
موضوعات مربوط به فرمها و طراحی آن را در این قسمت مطرح کنید
rezamim
پنج شنبه 28 آبان 1383, 11:54 صبح
سلام
آیا تابحال دیده اید که در Grid و یا ListBox اگر از فونت Tahoma استفاده کنید سرعت Scroll بسیار پایین می آید؟ درحالی که اگر از فونت Arial استفاده کنید سرعت بالاتر است؟البته متاسفانه فونت Tahoma زیباتر است.
میخواستم بدانم آیا من درست احساس میکنم و یا نه؟
ممنون از نظراتی که میدهید.
kia1349
دوشنبه 02 آذر 1383, 10:09 صبح
چک میکنیم
موضوع جالبیه
javad_hosseiny
چهارشنبه 02 دی 1383, 10:12 صبح
در مورد حرف گوش نکردن righttoleft=.t. در editbox و یا آبجکت های مختلف در فرم به هنگام تایپ فارسی آن هم فقط در محیط ویندوز اکس پی آیا راه حلی هست؟ چون به هنگام تایپ فارسی مطلب از وسط و آن هم بصورت برعکس از راست به چپ تراز می شود؟
javad_hosseiny
چهارشنبه 02 دی 1383, 10:25 صبح
در مورد تایپ اتوماتیک فارسی (کد api که برای زدن کلید alt+shif) بود که فقط در ویندوز 98 کار می کرد آیا برای محیط ویندوز اکس پی راه حلی پیدا شد ؟!!
آیا برنامه ، سورس، کامپونت و یا ... مشابه کامپونتهای دلفی برای این کار در محیط ویژوال فاکس پرو تاکنون ایجاد نشده (البته منظورم برنامه بدردنخوری مثل پارس پندار نمی باشد)
javad_hosseiny
چهارشنبه 02 دی 1383, 10:32 صبح
سؤال دیگر؟ : حجم انبوهی از اطلاعات را می خواهم در فرمی بصورت لیستی نمایش دهم اما نکته ظریف کار آن است که هر رکورد خود ممکن است چندین سر باشد (یعنی اطلاعات در فیلد memo) می باشد چیزی شبیه richedit ولی با قابلیت اتصال به table (چرا که با دیگر فیلدهای این رکورد نیز در آن فرم کار دارم) به نظر شما بهترین راه حل کدام است؟
1 - در مورد استفاده از list به علت گوش نکردن righttoleft=.t. و نمایش مطالب در سمت چپ لیست و یا حتی در صورت حل این مشکل نمایش چند سطری بودن را چه کنم؟
2 - در مورد استفاده از grid که اولا فیلد memo را نمایش نمی دهد (بصورت جدولی) و ثانیا در صورتی که اطلاعات این table را به جدول دیگری که بصورت فیلد کاراکتری (80 حرفی مثلا) منتقل کنیم تا بصورت لیستی ببنیم مشکل تراز بندی این جدول در فرم های مختلف را داریم؟ به نظر شما برای حل این مشکل چکنیم؟
rezaTavak
چهارشنبه 02 دی 1383, 10:34 صبح
سلام
در مورد سوال اول جای دیگه جواب داده ام.
در مورد سوال دوم هم به جای عدد 401 که کد عربی است از کد 429 استفاده کنید. منظورم تابع LoadKeyboardLayout است. یعنی با استفاده از تابع OS اگر بالاتر از 4 بود یعنی 2000 و ایکس پی عدد شما باید عوض شود.
binyaz2003
چهارشنبه 02 دی 1383, 17:22 عصر
در مورد حرف گوش نکردن righttoleft=.t. در editbox و
با سلام
اولا که شما باید فارسی ویندوز اکس پی تون درست باشه یک جستجو تو این بخش مطلب رو کامل بچه ها توضیح دادن
دوما شما علاوه بر righttoleft باید alignment رو هم right قرار بدین تا همه چیز درست بشه
در مورد تایپ اتوماتیک فارسی
یک کد api دیگه هم برای xp هست که برای کامل بودن برنامه باید از هر دو استفاده بشه
مشکل نمایش چند سطری بودن را چه کنم؟
خاصیت column رو به عدد دلخواه تغییر بدین
در مورد سوال دوم بیشتر توضیح بدین
javad_hosseiny
یک شنبه 06 دی 1383, 11:24 صبح
با سلام
آیا می تونید در مورد کد api دوم کمی بیشتر توضیح بدهید
در مورد نمایش چند سطری که گفته اید که خاصیت column را به عدد دلخواه تغییر دهید منظور چه می باشد؟ و منظور کدام column می باشد columncount, columnline, columnwidths
binyaz2003
یک شنبه 06 دی 1383, 22:13 عصر
آیا می تونید در مورد کد api دوم کمی بیشتر توضیح بدهید
Declare Integer ActivateKeyboardLayout In win32api Integer,Integer
DECLARE LONG LoadKeyboardLayout IN WIN32API STRING pwszKLID,INTEGER Flags
*gotfocus
ActivateKeyboardLayout(1025,0)
lnRetCode = LoadKeyboardLayout('00000429', 1 )
*lostfocus
ActivateKeyboardLayout(1033,8)
lnRetCode = LoadKeyboardLayout('00000409', 1)
اما در مورد دوم من یک اشتباه کردم فکر کردم شما چند ستونی منظورتون هست
اگر بیشتر توضیح بدین بهتره!برای نمایش سطری لیست مشکلی نداره :گیج:
kia1349
دوشنبه 07 دی 1383, 06:19 صبح
با توابع api ورژن ویندوز را چک کنید و اگر ویندوز 9x داشتید از activatekeybordlayout و اگر ویندوز سری nt داشتید از loadkeyboardlayout استفاده کنید
مطالعه بخشهای دیگر این فروم رو جدا به شما توصیه میکنم حتی اگه تکرار این مطالب برای خود ما هم یادآوری کننده باشه
javad_hosseiny
دوشنبه 07 دی 1383, 11:40 صبح
منظورم این است که مثلا اطلاعات ما در فیلد memo است و به طور نمونه در یک رکورد این اطلاعات تقریبا 80 کاراکتر (یعنی حدودا یک سطر) و در یک رکورد دیگر 500 کاراکتر (یعنی حدودا سه سطر) می باشد حالا ما می خواهیم این اطلاعات را به صورت لیستی (listbox, or grid) نمایش دهیم ولی آن object که می خواهیم برای این منظور استفاده کنیم اطلاعات را بصورت سطری (تراز بندی) کند و زیر هم نمایش دهد (مثل موردrichedit) مناسب است ولی با table لینک نیست و ثانیا اول کار باید آن را مقداردهی کنیم ولی برای نمایش مورد مناسبی هست (توضیح کامل) حال درصورت راهنمای متشکر خواهم شد
binyaz2003
جمعه 11 دی 1383, 16:50 عصر
همیشه چیزهایی که جلو چشممون هست رو نمی بینملبته منظورم خودم هست
شما باید بعد از اونیکه گرید تون رو ساختین یکی از این 2 کار رو انجام بدی:
1بیلدر گرید رو اجرا و در صفحه سوم فیلدی که memo هست رو یک کنترل edit براش انتخاب کنید .همین
2-همون کار بالا رو خودتان انجام بدین به این ترتیب که گرید رو ادیت کنید و به اون ستون مخصوص یک کنترل edit اضافه کنید بعد به قسمت data ستون مورد نظر برید و currentcontrol رو edit انتخاب و spares=.f. رو تعیین کنید . باز هم همین
:sunglass:
javad_hosseiny
شنبه 12 دی 1383, 20:03 عصر
با تشکر فراوان از آقای بی نیاز در رابطه با راهنمای خوبشان
سوال؟ چرا در combobox بعضا وقتی به پایین لیست که آمدیم از طریق خط بار (scrool) نمی توان بالا رفت (یعنی از طریق کلیدهای صفحه کلید بالا می رود) ولی از طریق فلش آیکون رو به بالا و یا گرفتن خط بار و حرکت به سمت بالا این کار انجام نمی شود (در vfp6,vfp7) این مشکل وجود دارد؟
binyaz2003
شنبه 12 دی 1383, 21:31 عصر
منم این مشکل رو دارم.زیادم سخت نگیریرد آقا جواد :)
javad_hosseiny
یک شنبه 13 دی 1383, 20:18 عصر
آره من سخت نگرفتم بی نیاز جون مشکل اینجاست که برنامه را تحویل مشتری دادم این ایراد مشتری به من وارد کرده و چون از اول می گفت که برنامه را با دلفی بنویسم و من به زور متقاعدش کردم که با vfp بهتر است (البته من میانم با دلفی بد نیست ولی چون سرعت عمل در دلفی نسبت به فاکس کمتر است من شخصا فاکس را بهتر می پسندم) حالا ایشان هی اعتراض می کند که اگه با دلفی می نوشتی بهتر بود؟
javad_hosseiny
یک شنبه 13 دی 1383, 20:24 عصر
اما سوال جدید ؟
آیا تاکنون با این مشکل در مورد editbox برخورد کرده اید که می خواهیم متن تایپی بصورت افقی اسکرول (پیمایش) شود ولی نمی شود؟ (البته برای افزایش طول متن تایپی از طریق value=space(80) مثلا) این امکان را داده ام اما وقتی تایپ می کنم تا محدوده نمایش خود editbox درست است ولی وقتی خارج می شود متن تایپ می شود ولی نمایش داده نمی شود اگر برخورد کرده اید ممنون می شوم که پاسخ دهید؟
و سوال دوم اینکه:
آیا ocx یا dll و یا از طریق برنامه نویسی امکان این است که بتوانیم در listbox ها و موردهای مشابه از تصویر به جای نوار پیمایش و یا دو فلش رو به بالا و پایین آن استفاده کرده مثل برنامه های آموزشی در محیط دلفی و ...
kia1349
دوشنبه 14 دی 1383, 06:21 صبح
اولا برنامه باید کار مشتری رو راه بندازه و اینکه با چه زبانی تهیه شده اصلا به مشتری ربطی نداره(یکی از قوانین مندرج در مبحث uml)
دوما ادیت باکس بزاس اسکرول عمودی مناسبه و نه افقی
سوما فاکس یه برنامه دیتابیسه و اگر کسی دنباله زیبائی ظاهری برای فرمهاشه باید بره سراغ زبون دیگه ای که اونوقت به خاطر همون ظاهر قشنگش سرعت خوبی توی پروسه دیتابیسها نداره
rezamim
سه شنبه 15 دی 1383, 09:04 صبح
:موفق:
javad_hosseiny
سه شنبه 15 دی 1383, 10:02 صبح
با تشکر از مدیر بخش در رابطه با توضیحاتشان اما من هنوز پاسخ خود در رابطه با اسکرول افقی را نگرفتم آیا object دیگری به این منظور وجود ندارد ؟ !! (یا توسط کدنویسی api)
binyaz2003
سه شنبه 15 دی 1383, 15:13 عصر
می تونی از richtextbox استفاده کنید
javad_hosseiny
چهارشنبه 16 دی 1383, 10:30 صبح
بی نیاز جان اگر منظورت استفاده از Ole (active x)ها می باشد نه من ترجیح می دهم از خود textbox فاکس استفاده کنم آیا برای خود این Object راهی وجود دارد که بتواند بصورت افقی اسکرول کند ( و یا از ابزار خود فاکس راهی برای نمایش یک متن دراز (یعنی یک سطری ولی مثلا 255 کاراکتر) در یک اندازه کوچک (یعنی یه محیط کوچک) وجود دارد؟ با تشکر
binyaz2003
چهارشنبه 16 دی 1383, 11:48 صبح
برای 255 کاراکتر خود تکست فاکس خوبه اما اسکرول نداره
چیز دیگه ای نمی دونم :oops:
javad_hosseiny
پنج شنبه 17 دی 1383, 09:47 صبح
ممنون و متشکر
در رابطه با عوض کردن منوی ok,yes,no,cancel,... در دستور messagebox (تغییر به عبارت فارسی) کار کرده اید؟ ممنون
rezaTavak
پنج شنبه 17 دی 1383, 13:44 عصر
سلام
MessageBox یک فرم ساده است. درست کردن آن با توابع و فارسی کردن یکی مثل آن کاری ندارد. اما یک مشکل اینه که اگه از چیزی جز MessageBox استفاده کنید به هنگام رخدادن خطا (استثناها) برنامه شما ممکنه درست کار نکنه. من توی یکی از برنامه هام از چیز فارسی شبیه اون استفاده کردم اما همین باعث شد Ok و... را به خطای برنامه ترجیح بدم. بالاخره هر کی میدونه Ok,Cancel و... چیه. اصلا کاربرای من از اینکه MessageBox اونها Ok باشه ناراضی نیستند.
binyaz2003
پنج شنبه 17 دی 1383, 16:18 عصر
سلام
من یک دونه دارم که از foxite گرفتم و همچین فارسیش کردم ولی الان 3 شب نخوابیدم باید بگردم پیداش کنم براتون بزارم
هنگام رخدادن خطا (استثناها) برنامه
برای این مشکل کافیه تو برنامه main یک دستور on error do .... بنویسید تا برنامه نمایش خطای شما باز شه
javad_hosseiny
پنج شنبه 17 دی 1383, 19:45 عصر
از اقا رضا ممنون و متشکرم ولی خیلی وقت ها اگر بدنبال مشابه سازی باشیم می توانیم آن را ایجاد کنیم اما تاکید بنده بران است که آیا می توان از خود ان دستور یا ابزار به نحو صحیح تری استفاده کرد یا نه (مثلا در مورد سوال های قبلی بنده (مثل مشکل بالا رفتن اسکرول در combobox و یا استفاده از خود listbox (که درصورت تنظیم یونی کد به زبان عربی راست چین نمایش می دهد بجای listbox مربوط به ole مایکروسافت و... موردهای دیگر ) به هر حال از راهنمای شما نیز متشکرم و
از اقای بی نیاز نیز ممنون هستم من سایت مورد نظر را نگاه کردم ولی کد موردنظر را نیافتم درصورت امکان یا لینک کامل آن را بدهید و یا برسرفرصت کد آن را در این قسمت قرار دهید
javad_hosseiny
پنج شنبه 17 دی 1383, 19:47 عصر
آیا برای راست به چپ کردن در ابزار richedit و treeview کدی هست ؟ ::نوشتن::
binyaz2003
جمعه 18 دی 1383, 02:01 صبح
اینم تابع پیغام فارسی
فقط باید به جای messagebox بنویسید msgbox_ بقیه پارامترها دقیقا همونهاست
javad_hosseiny
یک شنبه 20 دی 1383, 10:05 صبح
ممنون از برنامه قشنگ و زیبایتان
binyaz2003
یک شنبه 20 دی 1383, 15:12 عصر
خواهش می کنم اما من گفته بودم خودم ننوشتم :wink:
پدرخوانده
دوشنبه 04 مهر 1384, 11:40 صبح
برای فراخوانی یک فرم در داخل فرم دیگر برای بار دوم از پارامتر show بعد از نام فرم استفاده می کنم ولیکن برخی موارد جواب نمی دهد (یعنی بعضا درست و بعضا خطا می گیرد)
(توضیح واضح تر : تصور کن سه فرم که در هر کدام لینک به دوم فرم دیگر موجود است با استفاده از متغیر تشخیص می دهیم که فرم دوم آیا برای بار اول است که اجرا می شود یا دوم؟ برای بار اول خوب با استفاده از دستور do form آن را صدا می زنیم و برای بار دوم به بعد از show آن فرم استفاده می کنیم ولیکن پیغام خطای عدم شناسایی متغیر (نام فرم ) را می دهد)
(البته از راه حل public کردن نام فرم نمی خواهم استفاده کنم آیا راه حل دیگری هست؟!)
rezaTavak
دوشنبه 04 مهر 1384, 13:23 عصر
با استفاده از FORMSET هم میشه.
شاگرد آرام
دوشنبه 04 مهر 1384, 15:52 عصر
سلام
برای نمایش فیلد ممو در grid
شما باید کالومن مورد نظر را ادیت کرده در هنگام ادیت یک editbox روس آن drag کنید
بعد اگر در لیست کنترل ها نگاه کنید می بینید زیر مالومن مورد نظر دو کنترل textbox و editbox وجود دارد
حالا باید textbox را انتخاب کرده و روی فرم کلیئ delete را بزنید تا فقط editbox زیر کالومن بماند
حالا اگر نگاه کنید مشکا حل شده
علی کلاهدوزان
یک شنبه 17 مهر 1384, 11:56 صبح
یه نفر که کار کرده به من بگه از چه روشی برای استفاده از چند فرم که اشیای همدیگه رو بشناسند استفاده می کنه و چطوری مثلا توی یه صفحه فاکتور می خواهیم لیست اجناس توی یه فرم دیگه باز بشه .
متشکرم و منتظر
rezaTavak
یک شنبه 17 مهر 1384, 12:53 عصر
سلام
شما باید اگر می خواهید که فرم شما در تمام فاکس پرو شناخته شده باشد این فرم را به اسمی عمومی معرفی کنید مثلا در هنگامی که در Init بنویسید
public frmInput
frmInput = THIS
فرم شما در تمام فاکس پرو شناخته شده و مثلا برای تغییر عنوان آن در هر جا می توانید از
frmInput.Caption
استفاده کنید.
توجه کنید که frmInput در اینجا یک OBJECT است!
علی کلاهدوزان
یک شنبه 17 مهر 1384, 13:12 عصر
با تشکر اگه میشه جواب منه یمی از عزیزان بده
علی کلاهدوزان
دوشنبه 18 مهر 1384, 13:34 عصر
چرا بعضی وقتها فرمهایی که از Public در آنها استفاده شده یا کلا متغیرهای public را ایراد illigal redefine میده گاهی نمیده
binyaz2003
دوشنبه 18 مهر 1384, 14:34 عصر
من تا حالا خیلی استفاده کردم و مشکلی نداشتم احتمالا اشکال از یک جای دیگه است
declare integer MessageBeep in user32 integer
شاید بدرد بخوره
rahro
سه شنبه 19 مهر 1384, 04:30 صبح
ببخشید من فکر میکنم بخاطر این باشه که شما متغیر مربوطه را در بالاترین سطح تعریف نکردید!!
علی کلاهدوزان
سه شنبه 19 مهر 1384, 14:14 عصر
آقا حل شد . فقط یه مشکل دیگه . می خوام سیستم از بوق خود کیس استفاده کنه نه اسپیکر سیستم چیکار کنم ؟؟؟؟؟؟
علی کلاهدوزان
چهارشنبه 20 مهر 1384, 10:34 صبح
میشه یه نفر یه نمونه برنامه برای من بفرسته (سورس) تا من یه خورده از روش چیز یاد بگیرم پول هم بخواد بهش می دم
kia1349
یک شنبه 24 مهر 1384, 09:59 صبح
برات توی مباحث متفرقه سورس گذاشتم اگر فقط توی یک بخش مرتبط دنبال سوال و جوابت باشی خیلی بهتره
علی کلاهدوزان
یک شنبه 24 مهر 1384, 13:45 عصر
دست شما درد نکنه ولی منظورم سورس یه برنامه کامله اگه لطف . من بعضی جاها گیر دارم از شما هم مخ تر پیدا نکردم یه کم منو تحمل کنید ثواب داره .
naghdi
چهارشنبه 21 دی 1384, 16:24 عصر
با درود
نمیدونم سوالم تا چه اندازی ابتدایی هست
من با فیلتر گذاری روی رکوردهایی که از یک شرط خاص برخوردار باشد و نمایش آنها در یک grid
دچار مشکل شدم
binyaz2003
چهارشنبه 21 دی 1384, 17:25 عصر
مشکل دقیق شما چیه؟
naghdi
چهارشنبه 21 دی 1384, 19:27 عصر
مشکل اینجا است که وقتی از فرمان فیلتر برای جداسازی رکوردهایی که به طور مثال
set filter to code=10001
ولی Error 1881 و میدهد
rezaTavak
پنج شنبه 22 دی 1384, 11:59 صبح
سلام
این خطا زمانی رخ میده که شما یک مشخه یا متد یا ... قابل بازگذاری نباشه. شاید با این فیلتر شما همچین مشکلی پیش میاد
rezamim
جمعه 23 دی 1384, 12:27 عصر
FilterString = " Code = 10001"
SET FILTER TO &FilterString
فیلتر رو به این شکل استفاده کن ببین مشکل حل میشه یا نه
rezaTavak
شنبه 24 دی 1384, 10:03 صبح
سلام
از dataenvironment هم می تونی فیلتر کنی.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.