نمایش نتایج 1 تا 7 از 7

نام تاپیک: مشکل در شبیه سازی کلید Tab

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52

    مشکل در شبیه سازی کلید Tab

    با سلام

    آیا می توان با فشار دادن کلید Enter در هنگام اجرای برنامه مثلا در داخل یک Panel عملکرد کلید enter را طوری تغییر داد که همانند کلید Tab عمل کند ؟ یعنی کد مربوطه را در خصوصیات onKeyPress قرار ندهیم.
    من از کد زیر در پروپرتی onKeyPress استفاده می کنم ولی باید برای تمامی اشیا ایم کار را انجام بدهم . در برنامه بزرگتر که کلی اشیا استفاده می شود مشکل است :

    <span dir=ltr>If Key=#13 then
    ( postmessage(handle,wm_nextdlgctl,0,0);</span>

    در ضمن چگونه می توان با کلید ترکیبی مثلا با زدن کلید <span dir=ltr>Enter + Shift</span>
    - Focus را به قبل برد یعنی به صورت معکوس حرکت کرد ؟ :?: :?: :?:

    لطفا مرا راهنمایی کنید.

  2. #2
    از رویداد OnKeyPress خود فرم استفاده کن.
    اگه می خوای وضغیت shift رو بررسی کنی باید از رویداد onkeyDown استفاده کنی مثلا دستور زیر:
    If &#40;Shift=ssShift&#41; and &#40;key=vk_return&#41; then


    در ضمن حتما مقدار KeyPreview فرم را روی True قرار بده. :)

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52
    جناب آقای SalarSoft
    با تشکر و قدردانی از راهنمایی شما

    قطعه کدی که در بالا اشاره کرده بودید گره کار مرا باز نمود . واقعا از پاسخ شما به این سوال متشکرم. در ضمن کدی که نوشته بودید یک کمی باید بصورت زیر تغییر کند تا جواب بدهد :

    <span dir=ltr>If (Shift=[ssShift]) and (key=vk_return) then </span>

    اگر ممکن باشد بفرمایید چگونه و با چه دستوری می توانم به جای حرکت به جلو به صورت tab معکوس عمل کنم؟؟؟ :?:

  4. #4
    If Key=#13 then
    postmessage&#40;handle,wm_nextdlgctl,-1,0&#41;;

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52
    :flower:
    1- اگر برایتان امکان داشته باشد می توانید بیشتر توضیح دهید چگونه می توانم از قطعه که بالا در Onkeydown استفاده کنم. امتحان کردم متاسفانه به نتیجه نرسیدم.

    2- چگونه می توانم کلید میانبر برای رفتن به فرمها در برنامه تعریف بکنم. مثلا زمانی که کلید f2 را فشار می دهم در هنگامی که برنامه اجرا شده است بلافاصله فرم فعلی را بسته و فرم مورد نظر را باز کند. یا مثلا با زدن کلید F1 در هر قسمت از برنامه صفحه راهنما به نمایش درآید

  6. #6
    برای هر یک از اشیای صفحه که قرار است با Tab یا Shift+Tab یا Enter حرکت کند (چه به جلو و چه عقب) باید کد فوق را بنویسید.
    کدی که من در بالا نوشتم (#13) مربوط به Enter‌بود. برای حرکت توسط Shift+Enter باید به صورت زیر بنویسی:
    If &#40;Shift=&#91;ssShift&#93;&#41; and &#40;key=vk_return&#41; then
    postmessage&#40;handle,wm_nextdlgctl,-1,0&#41;;

    ---------------------------
    procedure TForm1.FormKeyDown&#40;Sender&#58; TObject; var Key&#58; Word;
    Shift&#58; TShiftState&#41;;
    begin
    if Key=VK_F2 then
    begin
    Form1.Hide;
    Form2.Show;
    end;
    end;

    ضمنا خاصیت keyPreview‌ مربوط به فرمی که قرار است در آن کلید F2 فشرده شود هم باید True شود.
    :sunglass:

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52
    از جوابتان متشکرم

    البته کد بالا با کمی تغییر بصورت زیر درست کار می کند :

    • <span dir=ltr> If (Shift=[ssShift]) and (key=vk_return) then
      PostMessage(Handle, WM_NextDLGCTL, 1, 0)
      else
      if key=vk_return then postmessage(handle,wm_nextdlgctl,0,0);</span>


    این کد را در OnkeyDown خود فرم (نه در تک تک اشیا) قرار دادم مشکلم حل شد : اگر کلید Enter زده شود به سمت جلو و اگر کلید ترکیبی Shift + Enter زده شود به سمت عقب حرکت خواهد کرد. <span dir=ltr></span>

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •