PDA

View Full Version : سوال: حرکت با TAB در میان کنترلها



حسین محمدی
دوشنبه 30 اردیبهشت 1387, 10:34 صبح
با سلام

من در یک پروژه از نوع Dialog چند EditCtrl دارم و به راحتی در میان آنها حرکت می کنم ولی در یک پروژه دیگر از نوع MDI با زدن TAB آنرا در EditCtrl چاپ می کند و به کنترل بعدی نمی پرد.

چگونه باید این مشکل را حل کنم؟

A_Salimi
دوشنبه 30 اردیبهشت 1387, 11:19 صبح
. . . در اونجا از ctrl+D استفاده میکنید یا نه ؟ چون با استفاده از این دو کلید نحوه حرکت با tab تعیین میشود .

حسین محمدی
چهارشنبه 01 خرداد 1387, 11:46 صبح
من در جایی از برنامه از Ctrl + D استفاده نمی کنم.

A_Salimi
پنج شنبه 02 خرداد 1387, 10:48 صبح
ولی در یک پروژه دیگر از نوع MDI با زدن TAB آنرا در EditCtrl چاپ می کند و به کنترل بعدی نمی پرد.


دقیقا منظورتون چیه ؟ چیزی که گفتم مربوط به دیالوگ هاست . . . چون شما اشیا و ابزار رو روی دیالوگ می چینید . . . منظورم از ctrl+D انجام این کار در حین طراحی پروژه بود و نه بعد از اجرای برنامه . احتمالا این روش رو می دونید اما برای یادآوری میگم :
عکس زیر رو ببینید :

http://i29.tinypic.com/1z1g4qo.jpg

شما می تونید نحوه حرکت با tab رو حالا به راحتی معین کنید .

امیدوارم بدردتون خورده باشه . . .

حسین محمدی
یک شنبه 26 خرداد 1387, 18:59 عصر
برنامه من ديالوگ نيست و از نوع MDI مي باشد. در واقع كنترلها را توسط كد ايجاد كرده ام و براي هر كنترل با استفاده از style ها يك سري خواص تنظيم كرده ام. مثلا WS_CHILD و WS_BORDER و ...
ولي در style ها چيزي براي تنظيم Tab Order پيدا نكردم و هنگامي كه كليد tab را مي زنم به جاي آنكه به كنترل بعدي پرش كند آنرا در TextBox (منظورم همان CEdit است) چاپ مي كند.

البته براي امتحان يك پروژه از نوع dialog نيز ساختم و موارد را بررسي كردم و دقيقا مانند آنچه شما گفته ايد مي توان ترتيب براي حركت در ميان كنترلها مشخص كرد .ولي متوجه نشدم كه اين كار را چگونه در يك پروژه mdi پياده سازي كنم.

Nima_NF
دوشنبه 27 خرداد 1387, 00:53 صبح
معمولا به جای استفاده مستقیم از تولید کنترل با کد، آن ها را در یک دیالوگ قرار می دهند و سپس آن را به پنجره به صورت Child متصل می کنند. این طوری همه خواص دیالوگ از جمله Tab در دسترس قرار می گیردو کارها بسیار راحت می شود.
در غیر این صورت شما باید خودتان از طریق SetFocus این کار را انجام دهید تا focus بر روی آن کنترل ها قرار گیرد، مثلا در win32 به این شکل:



case WM_KEYDOWN :
if (wParam == VK_TAB)
{
SetFocus ( /* ... */) ;
}

ضمنا اگر با کد کنترل را می سازید یک style با نام WS_TABSTOP را نیز فراموش نکنید، برای قابلیت Tab برای کنترل ها لازم هست، ترتیب ساخت کنترل ها نیز مهم هست. (هر چند که تمامی پروژه هایی که تا کنون دیدم وقتی از کد استفاده کرده اند از همان SetFocus برای کنترل Tab استفاده کردند )