PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حرفه ای کردن فرم



amirghadiri
2015/05/09, 23:00
با سلام و عرض ادب خدمت تمامی کارکنان سایت
سوال 1 - اینه که یه فرم حاوی 3 کامن باتن که یکیش دکمه ثبت اطلاعات هست حالا میخوام موقعی که رو 2 تا کامن باتن اگر کلیک نشده کاربر خواست دکمه ثبت را بفشارد دکمه ثبت عمل نکنه و پیغام بده تا کاربر مجبور بشه یکی از 2کامن باتن را اجرا کنه.
سوال 2 - پرش روی تکست باکس هایی که روی فرم کامل نشده یعنی در واقع یک فرم که مثلن 4تا تکست باکس داره اگر کاربر تکست 1و3 را بهش داده داد و کاربر خواست دکمه ثبت را بفشارد هم پیغام بده و هم بصورت خودکار ان تکست باکس 2و3 که خالی هستن را کاربر پرکنه و نمایش پیغام بصورت چند ثانیه ایی نمایش دهد نه با کلیک موس پنجره را بست.
سوال 3 - نمایش ساعت روی فرم حتی با ثانیه بدون توقف.
خیلی ممنون که اگر پاسخ میدهید.

Ali Parsaei
2015/05/10, 08:03
سلام،
چرا از خصوصيت visible استفاده نمي کنيد؟ شما مي توانيد آن چيزي که اول از همه مي خواهيد ويرايش شود را در معرض ديد قرار دهيد.
بعد از تکميل آن را با تنظيم خصوصيت ياد شده (توسط کدنويسي) مخفي و مورد بعد را نمايان کنيد.
يعني همه موارد را در فرم پياده سازي مي کنيد و فقط ترتيب نمايش آنها را مرحله به مرحله با کد نويسي مديريت مي کنيد.
در مورد خالي بودن بعضي تکست باکس ها هم مي شود در دگمه ثبت نهايي کدي بنويسيد که رنگ زمينه موارد خالي را عوض کند و سپس تا کاربر آنها را پر نکرده عمليات را متوقف کند. البته اگر اصرار به نمايش پيغام و زمان بندي داريد هم در سايت نمونه هايي وجود دارد.
در مورد سوم پيشنهاد مي کنم از خيرش بگذريد چون تا آنجا که من مي دانم چيز حافظه بر و کند کننده اي است و اصلا" ممکن است کل روند کار را مختل کند (البته اين تجربه شخصي و پيشنهاد من است)

mokaram
2015/05/10, 08:20
با اجازه از محضر استاد پارسا

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

شمس العلما (http://forum.exceliran.com/member.php/9-shamsololama) زحمت آموزش اینکار را در تاپیک زیر کشیدند جالبه اگه نگاهی بندازید ( فقط به دقت تاپیک را مطالعه کنید تا احیانا مشکلی پیش نیاد )


وارد کردن فایل فلش به یوزر فرم (http://forum.exceliran.com/showthread.php/43-%D8%B3%D8%A7%D8%AE%D8%AA-Splash-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D9%84)

Ali Parsaei
2015/05/10, 08:26
يک کار ديگري هم که مي توانيد انجام دهيد اين است که به ازاي هر کامند باتن يک تکست بکس در فرم قرار دهيد و وقتي کامند باتن کليک مي شود کدي بنويسيد که در تکست بکس متناظر آن مثلا" عدد يک درج گردد.
بعد در کامند باتن سوم يک شرط قرار دهيد که اگر هر کدام از تکست باکسهاي مذکور خالي بود يک پيغام دهد که بايد کامند باتن مربوطه را کليک کند و ....
بعد براي زيبايي فرم آن دو تا تکست بکس را مخفي کنيد، ضمنا" توجه داشته باشيد که بايد کدي بنويسيد که در موقع بالا آمدن فرم محتواي تکست باکس ها را پاک کند.

s.cheraghi
2015/05/10, 09:21
با سلام و عرض ادب خدمت تمامی کارکنان سایت
سوال 1 - اینه که یه فرم حاوی 3 کامن باتن که یکیش دکمه ثبت اطلاعات هست حالا میخوام موقعی که رو 2 تا کامن باتن اگر کلیک نشده کاربر خواست دکمه ثبت را بفشارد دکمه ثبت عمل نکنه و پیغام بده تا کاربر مجبور بشه یکی از 2کامن باتن را اجرا کنه.
سوال 2 - پرش روی تکست باکس هایی که روی فرم کامل نشده یعنی در واقع یک فرم که مثلن 4تا تکست باکس داره اگر کاربر تکست 1و3 را بهش داده داد و کاربر خواست دکمه ثبت را بفشارد هم پیغام بده و هم بصورت خودکار ان تکست باکس 2و3 که خالی هستن را کاربر پرکنه و نمایش پیغام بصورت چند ثانیه ایی نمایش دهد نه با کلیک موس پنجره را بست.
سوال 3 - نمایش ساعت روی فرم حتی با ثانیه بدون توقف.
خیلی ممنون که اگر پاسخ میدهید.

با سلام و اجازه از اساتید
1- از یک متغیر Logical که دامنه آن در حد ماژول هست استفاده کنین. این متغیر باید در هنگام فشردن هر یک از این دو دکمه مقدار true رو بگیره و در نهایت این متغیر در هنگام فشردن دکمه نهایی بررسی بشه. اگه false باشه پیغام خطا اعلام شود.

2- روش مخفی کردن کنترل ها و نمایش گام به گام آنها روش جالبی هست اما میزان کدزنی را افزایش میدهد.
برای برش بر روی کنترل هایی که مقدار نگرفته اند و یا شرط مورد نظر رعایت نشده اند:
در ابتدا سعی کنید که با استفاده از خصوصیت های هر کنترل، این شرایط را اعمال کنید. به عنوان مثال حداقل کارکتری که باید درون تکس باکس نوشته بشه، نوع کارکتر و ...
برای پرش به هر یک از کنترل هایی که شرایط را رعایت نکرده اند، پیشنهاد میکنم که یک تابع عیب یابی بنویسین که شرایط شما (که نتوانسته اید با خصوصیات هر کنترل اعمال کنید) را بررسی کند. در نهایت با استفاده از یک حلقه، تمام شروط را بررسی کنید و اگه شرط برقرار نشد، نام و یا شماره کنترل را در یک آرایه ذخیر نمایید و با استفاده از دستور Select کنترل مربوطه را فعال کنید.
در مورد نمایش پیغام حرفه ای ترین راه ایجاد یک Balloon Tip هست که چنین بالونی را ایجاد کرده و به صورت notification به شما پیام می دهد.
راه دیگر استفاده از Splash Userform هست که در سایت نمونه های مشابه آورده شده است.

3- شما میتونین یک لیبل روی فرمتون بذارین و مقدار Caption آن را برابر ساعت سیستم بذارین و با استفاده از application.ontime مقدار آن را هر ثانیه به روز کنید. اما همینطور که اساتید فرمودن مشکل کاهش سرعت به وجود میاد.

میتونید برای یادگیری بیشتر به بخش یوزرفرم (http://forum.exceliran.com/showthread.php/6912-%D9%BE%DA%A9%DB%8C%D8%AC-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-user-form)برید.

موفق باشید

amirghadiri
2015/05/10, 10:03
با سلام علی اقای پارسا بنده موافق مخفی نیستم یعنی نباید مخفی باشند بلکه غیر فعال باشند یعنیاگر کاربر رو سه کامند باتن کلیک نکرده حالت دکمه ثبت غیر فعال بشه تا زمانی یکی از سه کامن باتن ها کلیک شده باشه توسط کاربر .ممنون

abootorab
2015/05/10, 11:12
با درود
ضمن تشکر از همه اساتید و دوستان به نظر بنده بهترین راهکار استفاده از Tag یک کنترل است. بعنوان مثال فرض کنیم که دو کلید A و B داشته باشیم و میخواهیم تا زمانیکه کلید A فشرده نشده کلید B عملی انجام ندهد و پیغام بدهد:

برای اینکار در رویداد کلیک کلید A دستور زیر را اضافه می کنیم:



Private Sub CommandButton1_Click()
Me.CommandButton1.Tag = "pushed"
.
.
.
End Sub


حال زمانیکه کلید B فشرده میشود رویداد کلیک کلید B بصورت زیر کنترل میکنیم، به این صورت که اگر Tag کلید A برابر "pushed" بود که ادامه عملیات دهد در غیر اینصورت پیغامی مبنی بر فشردن کلید A ظاهر شود و از ادامه عملیات جلوگیری شود و در نهایت پس از اجرای عملیات کلید B ، می بایست Tag کلید A رو به حالت قبل یعنی "" برمیگردانیم:




Private Sub CommandButton2_Click()
If Me.CommandButton1.Tag <> "pushed" Then
MsgBox "First pressed 'A' button!"
Exit Sub
End If
.
.
.
Me.CommandButton1.Tag = ""
End Sub


امیدوارم مطلب رو رسونده باشم.

amirghadiri
2015/05/10, 11:44
سلام بی نهایت تشکر از جوابیه شما.
پیروز و سربلند باشید ان شاءالله.