PDA

View Full Version : یک سوال پیش پا افتاده Focus



ساران سافت
شنبه 08 آذر 1382, 11:05 صبح
آقا یک سوال پیش پا افتاده:
فرض کنیم چند text box و Combo box و ... در یک فرم داریم.خب
چجوری می شود بدون کد نویسی برا هر ابجکت با زدن کلید Enter از هر Object فکوس پذیری به بعدی رویم
و هر زمان که به بعدی رفتیم آن متن درون ابجکت های لایت شود.

هرکی می تونه جواب بده؟ 8)

ساران سافت
یک شنبه 09 آذر 1382, 12:12 عصر
هیچ کس نمی تواند کمک کند! :(

A.Noor
دوشنبه 10 آذر 1382, 13:39 عصر
در VB6 اگر پراپرتی KeyPreview فرم را True کنیم هر کلیدی که روی فرم و در هر آبجکت روی آن زده شود قبل از هر جا رویداد KeyPress و KeyDown فرم فراخوانی میشود . در آنجا می‌تونید این شرط را بگذارید که اگر کلید شما مثلا VBkeyReturn ( برای کلید Enter ) بود بجای آن با تابع Sendkeys کلید Tab ارسال بشه.

ساران سافت
سه شنبه 11 آذر 1382, 10:28 صبح
این راه را که خودم بلد بودم :lol:
من گفتم بدون برنامه نویسی. :? مثلاً Addins یا چیزی یا حتی ocx . چون اگر اشتباه نکرده باشم دلفی هم چین چیزی دارد.
می دانید چرا می گویم بدون برنامه نویسی چون:
من برنامه های دارم که در فرم ورود اطلاعات آن شاید بیش از 70-80 تا تکست باکس و ... وجود دارد. حال برای هر کدام باید کد نوشت که اگر کلید enter بود برو به آبجکت فلان.(تا اینجا بماند که چقدر کد و زمان زیادی باید صرف کرد) حال گاهی پیش می آمده که مجبور می شدم جای آنها را روی فرم تغییر دهم. پس بایید تمام کد ها را کامل تغییر دهم. :cry:

شما را بخدا اگر کسی بلد است کمک کند هم در VB و هم در .NET :cry: :oops:

A.Noor
سه شنبه 11 آذر 1382, 14:19 عصر
جواب شما نشون میده که منظور من را متوجه نشدید. عرض کردم که این کد را صرفا در رویداد KeyDown فرم بنویسید یعنی در سابروتین Form_KeyDown و مهم نیست که شما چند آبجکت روی فرم گذاشته باشید.
اگر هم ترتیب آنها را در فرم عوض کنید فقط باید Tabindex آنها را به ترتیب شماره بندی کنید.

ساران سافت
پنج شنبه 13 آذر 1382, 10:31 صبح
ممنونم. 8)

جعفر88
سه شنبه 19 اردیبهشت 1391, 10:23 صبح
سلام
با اينكه زمان زيادي از طرح سوال گذشته ولي فكر كنم براي دوستان بعدي كه اين موضوع را احتمالا مشاهده خواهند كرد پاسخ به اين سوال مفيد باشه . دوستان اين درخواست رو بارها مطرح كردن . اگه اشتباه نكنم در زمان طرح اين سوال نسخه آفيس 2000 بود و قابليت Conditional Formatting رو هم داشت . در هر صورت همان طور كه دوستان مطلع هستن با اين قابليت شما مي تونين در نماي طرح فرم (Design Form) روي هر كنترلي قابليت فوق رو به گزينه Field Has Focus تنظيم كنين و رنگ دلخواتون (و همچنين هر قالب (Format) دلخواهي) رو زماني كه كنترل فوكوس را دريافت مي كنه براش اعمال كنين .

ROSTAM2
سه شنبه 19 اردیبهشت 1391, 11:18 صبح
آقا یک سوال پیش پا افتاده:
فرض کنیم چند text box و Combo box و ... در یک فرم داریم.خب
چجوری می شود بدون کد نویسی برا هر ابجکت با زدن کلید Enter از هر Object فکوس پذیری به بعدی رویم
و هر زمان که به بعدی رفتیم آن متن درون ابجکت های لایت شود.

هرکی می تونه جواب بده؟ 8)

بــــــــــــــــــــــــ ـله


در VB6 اگر پراپرتی KeyPreview فرم را True کنیم هر کلیدی که روی فرم و در هر آبجکت روی آن زده شود قبل از هر جا رویداد KeyPress و KeyDown فرم فراخوانی میشود . در آنجا می‌تونید این شرط را بگذارید که اگر کلید شما مثلا VBkeyReturn ( برای کلید Enter ) بود بجای آن با تابع Sendkeys کلید Tab ارسال بشه.

بــــــــــــــــــــــــ ـــــــله


ممنونم. 8)

......


سلام
با اينكه زمان زيادي از طرح سوال گذشته ولي فكر كنم براي دوستان بعدي كه اين موضوع را احتمالا مشاهده خواهند كرد پاسخ به اين سوال مفيد باشه . دوستان اين درخواست رو بارها مطرح كردن . اگه اشتباه نكنم در زمان طرح اين سوال نسخه آفيس 2000 بود و قابليت Conditional Formatting رو هم داشت . در هر صورت همان طور كه دوستان مطلع هستن با اين قابليت شما مي تونين در نماي طرح فرم (Design Form) روي هر كنترلي قابليت فوق رو به گزينه Field Has Focus تنظيم كنين و رنگ دلخواتون (و همچنين هر قالب (Format) دلخواهي) رو زماني كه كنترل فوكوس را دريافت مي كنه براش اعمال كنين .

بازم ......

اما با این روش می شه که از event یک control/object برای تمام object ها با همون نوع یا لا اقل دارای همون نوع event استفاده می کنم


بالاخره : در استفاده از event --> keydown/keyup/keypress بعداز بالفرض مثال : Private halaharchi_keydown(args) handles TextBox1.KeyDown,TextBox2.KeyDown, یا هر ایونت از هر شی دیگه که لا اقل با ورودیای این رویداد همخونی داره