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

نام تاپیک: حرکت کردن از یک Edit به Edite با کلید Enter

  1. #1

    حرکت کردن از یک Edit به Edite با کلید Enter

    سلام:
    چجوی میشه با کلید Enter از Edite1 به Edite2 و از Edite2 به button1 رفت.

  2. #2

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    سلام.
    در رویداد OnKeyPress روی کنترل مورد نظرتون SetFocus کنید.
    آخرین ویرایش به وسیله یوسف زالی : شنبه 01 مرداد 1390 در 12:51 عصر
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    متشکرم از راهنمایی تون

  4. #4

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

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

  5. #5

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    تو رویداد OnKeyDown به صورت زیر باید بررسی کنی وقتی Enter زده شد به Edit مورد نظر فکوس کنی :

    if Key = vk_Enter then
    Edit2.SetFocus;

  6. #6

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    من کار رو انجام دادم ولی رو vk_Enter خطا می گیره!

  7. #7
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran_Yazd
    پست
    254

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط hasandrw مشاهده تاپیک
    من کار رو انجام دادم ولی رو vk_Enter خطا می گیره!
    دستوره درسته
    به جاي vk_Enter بنويس 13
    يا در رویداد OnKeyPress بنويس if key=#13 then edit2.SetFocus

  8. #8

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    احتمالا در KeyPress گذاشتید.
    در KeyPress باید 13# بگذارید.
    در KeyDown باید 13 بگذارید (یا همون VK_RETURN)
    دوستمون اشتباهی گفتند VK_ENTER
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  9. #9

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    از این کد هم میتونید استفاده کنید.
    در رویداد onkeypress :

    if (key=#13) then
    begin
    Key := #0;
    Perform (CM_DialogKey, VK_TAB, 0);
    end;

    اینطوری عملکرد enter مثل Tab میشه.

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran_Yazd
    پست
    254

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط mahsara مشاهده تاپیک
    از این کد هم میتونید استفاده کنید.
    در رویداد onkeypress :

    if (key=#13) then
    begin
    Key := #0;
    Perform (CM_DialogKey, VK_TAB, 0);
    end;

    اینطوری عملکرد enter مثل Tab میشه.
    فقط يه مشكل كوچولو داره حتما" بايد taborder ها به ترتيب باشه

  11. #11

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط hasandrw مشاهده تاپیک
    من کار رو انجام دادم ولی رو vk_Enter خطا می گیره!
    VK_Return ...

  12. #12
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    من کار رو انجام دادم ولی رو vk_Enter خطا می گیره
    به جاش بنویسید 13

  13. #13

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    سلام
    من این پست رو خوندم ، یه سوال تو ذهنم بود که نتونستم جوابشو پیدا کنم، گفتم شاید دوستان بتونن کمک کنن:

    در KeyPress باید 13# بگذارید.
    در KeyDown باید 13 بگذارید (یا همون VK_RETURN)
    و

    از این کد هم میتونید استفاده کنید.
    در رویداد onkeypress :

    if (key=#13) then
    begin
    Key := #0;
    Perform (CM_DialogKey, VK_TAB, 0);
    end;

    اینطوری عملکرد enter مثل Tab میشه.
    حالا اگر من بخوام تو رویداد KeyDown همین کد رو بنویسم به جای Key := #0 چی باید بزارم
    if (key=VK_RETURN) then
    begin
    ؟؟؟؟؟؟؟؟؟؟؟
    end;
    و چرا کد زیر همون کار رو نمیکنه؟
    چون من از کد بالا برای شبیه سازی tab استفاده کردم که روی ادیت دینگ دینگ میکرد که با کد Key := #0 درست شد
    حالا برای دکمه میخوام توی KeyDown همون کار رو بکنم که نمیشه و دینگ دینگ میکنه
    if (key=13) then
    begin
    Key := 0;
    end;

  14. #14
    کاربر دائمی آواتار MohsenB
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایرانم
    پست
    601

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    سلام به همه دوستان و برنامه نویسان زیان شیرین دلفی


    من یه راه خیلی ساده و کلی براتون میگم :

    خاصیت KeyPreview از فرم رو به True تغییر بدین و فقط کد زیر رو تو رویداد KeyPress از فرم بذارین . دیگه هیچ جای دیگه هیچ کدی نمیخواد :

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    if Key= #13 then begin
    keybd_event(VK_TAB,1,0,0);
    keybd_event(VK_TAB,1,KEYEVENTF_KEYUP,0);
    Key:= #0;
    end;
    end;


    فقط توضیح یا نکتش اینه که باید TabOrder کنترل ها رو به همون ترتیبی شماره گذاری کنید که می خواید .



    اگه یه جاهایی با این کد به علت گرفتن عمومی اینتر مشکل دارین بگین براتون یه روش کلی دیگه بگم .

    در جواب پست قبلی هم بگم که شما باید کلید اینتری که فشار داده شده رو خنثی کنید تا صدا نکنه مثل کد Key:= #0 تو کد بالا .


    موفق و پیروز و سربلند باشید .

  15. #15
    کاربر دائمی آواتار سيد مجتبي هاشمي
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    استان فارس - شهرستان رستم - شهر مصیری
    سن
    38
    پست
    265

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    دوست عزیز باید در رویداد On key perss مربوط به Edit مورد نظرت دستور زیر رو بنویسی. مثلا اگه بخوای از Edit1 به Edit2 بری به شکل زیر هست.

    if key = char(VK_Return) then
    begin
    Edit2.setfocuse;
    end;


    این یعنی اینکه اگه کلید فشار داده شده کلید اینتر بود روی Edit2 قرار بگیره. تازه میتونی به جای دستور Edit2.setfocuse هر دستور دیگه ای هم بنویسی یا تعداد دستوراتت رو بشتر بکنی. مثلا اگه Edit2 غیر فعال باشه کد رو میتونی به شکل زیر بنویسی.

    if key = char(VK_Return) then
    begin
    Edit2.Enable := True;
    Edit2.setfocuse;
    end;

    این دستور رو من خودم تو برنامه هام استفاده میکنم و کاملا درست عمل میکنه.
    آخرین ویرایش به وسیله سيد مجتبي هاشمي : دوشنبه 10 مرداد 1390 در 10:32 صبح دلیل: تصحیح کد

  16. #16
    کاربر دائمی آواتار hsn_abieteh
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    نزدیک امام رضا!
    پست
    136

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    دوستان این فقط برا این بود که بریم به کنترل بعدی
    اما اگر بخواهیم با کلید بالا برگرده به کنترل قبلی چه کدی باید در keypress نوشته بشه؟

  17. #17

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    دوست من اینهمه راهنمایی کردند دوستان چی بود پس؟
    خب کمی تلاش کن هر جا نتونستی در خدمتیم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  18. #18
    کاربر دائمی آواتار hsn_abieteh
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    نزدیک امام رضا!
    پست
    136

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    چشم دوست عزیز
    حرف شما کاملا درسته.
    راستش من برا رفتن به کنترل بعدی از این کد استفاده می کردم قبلا
    if Key = #13 then
    Self.Perform(WM_NEXTDLGCTL, 0, 0)
    ولی صدای دینگ میداد که با راهنمایی دوستان درستش کردم.

    خوب برا رفتن به کنترل قبل هم میشه کنترل قبلیش رو set focus کرد. ولی می خوام که برا همه ی edit ها تعریف نکنیم تا set focus بره رو کنترل قبلی. شاید صد تا edit داشتیم.
    خواستم ببینم تو دلفی تابعی وجود نداره که خودش این کارو کامل انجام بده و با هر بار کلید بالا که زده میشه یا هر کلیدی که براش تعریف کنیم یکی از taborder کم کنه و در نتیجه بره کنترل قبلی و قبلی و قبلی و ....

  19. #19

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    خواستم ببینم تو دلفی تابعی وجود نداره که خودش این کارو کامل انجام بده و با هر بار کلید بالا که زده میشه یا هر کلیدی که براش تعریف کنیم یکی از taborder کم کنه و در نتیجه بره کنترل قبلی و قبلی و قبلی و ....
    اگر نظرتون این موردی هست که اشاره کردید پیاده کردنش کار چند دقیقه هست ولی سناریو شما مشکل داره ، مثلا الان من روی Edit شماره 23 هستم حالا با موس روی Edit شماره 70 کلیک میکنم و بعد دکمه مورد نظر شما رو فشار میدم تا به کنترل قبل برم ، بر اساس سناریو شما یکی از Tab Order کم میکنیم که میشه 69 و روی Edit شماره 69 فکوس میکنیم در صورتی که شماره Edit قبلی ما 23 بود !

  20. #20
    کاربر دائمی آواتار hsn_abieteh
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    نزدیک امام رضا!
    پست
    136

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط مجتبی تاجیک مشاهده تاپیک
    اگر نظرتون این موردی هست که اشاره کردید پیاده کردنش کار چند دقیقه هست ولی سناریو شما مشکل داره ، مثلا الان من روی Edit شماره 23 هستم حالا با موس روی Edit شماره 70 کلیک میکنم و بعد دکمه مورد نظر شما رو فشار میدم تا به کنترل قبل برم ، بر اساس سناریو شما یکی از Tab Order کم میکنیم که میشه 69 و روی Edit شماره 69 فکوس میکنیم در صورتی که شماره Edit قبلی ما 23 بود !
    خوب درست میگین. خوب یه راهنمایی می کردید:p
    خوب باید آدرس آخرین فکوس رو پیدا کنیم.
    تو keypress تعریف کنیم که اگه کلید بالا زده شد برو به آخرین فکوس قبلی
    یه رویدادی هت به نام focused
    از اون نمیشه استفاده کرد.
    چون ب گذشته اشارهمیکنه فکر کردم شاید آدرس آخرین فکوس رو بهمون میده

  21. #21

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    خوب درست میگین. خوب یه راهنمایی می کردید:p
    در قسمت Private کلاس فرمتون متغییر های ActiveControl و PreviousControl را به صورت زیر تعریف کنید :

    ActiveControl, PreviousControl: TWinControl;


    و در قسمت Public کلاس فرمتون تابع ActiveControlChanged را به صورت زیر اعلان کنید :

        procedure ActiveControlChanged(Sender: TObject);


    و به صورت زیر تعریفش کنید :

    procedure TForm1.ActiveControlChanged(Sender: TObject);
    begin
    PreviousControl := ActiveControl;
    ActiveControl := Self.ActiveControl;
    end;


    حالا در رویداد OnCreate فرم برنامتون تابعی که نوشتید رو به رویداد OnActiveControlChange اختصاص بدید :

    Screen.OnActiveControlChange := ActiveControlChanged;


    حالا شئ PreviousControl حاوی شئ قبلی که Focus رو در اختیار داشته هست و میتونید مثلا به صورت زیر ازش استفاده کنید :

      if Key = VK_UP then
    PreviousControl.SetFocus;


    این نمونه که براتون نوشتم فقط میتونه 1 کنترل رو در حافظه نگه داری کنه ، یعنی مثلا با 2 بار زدن کلید Up به 2 کنترل قبلی که Focus داشتن بر نمیگردید ، برای اون کار هم میتونید همین پیاده سازی رو داخل یک پشته انجام بدید .

  22. #22
    کاربر دائمی آواتار سيد مجتبي هاشمي
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    استان فارس - شهرستان رستم - شهر مصیری
    سن
    38
    پست
    265

    Question نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط hsn_abieteh مشاهده تاپیک
    راستش من برا رفتن به کنترل بعدی از این کد استفاده می کردم
    if Key = #13 then
    Self.Perform(WM_NEXTDLGCTL, 0, 0)
    ولی صدای دینگ میداد که با راهنمایی دوستان درستش کردم.
    ببخشید دوست عزیز این مشکل رو چه طور حل کردین؟ من هم بعضی مواقع که از کدی که براتون نوشتم استفاده میکنم یه صدای دینگ میده.

    لطفا راهنمایی کنید چیکار کنم که این مشکل حل بشه.

  23. #23
    کاربر دائمی آواتار MohsenB
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایرانم
    پست
    601

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    نقل قول نوشته شده توسط mojtaba_ha2007 مشاهده تاپیک
    ببخشید دوست عزیز این مشکل رو چه طور حل کردین؟ من هم بعضی مواقع که از کدی که براتون نوشتم استفاده میکنم یه صدای دینگ میده.

    لطفا راهنمایی کنید چیکار کنم که این مشکل حل بشه.
    تو پست 14 توضیح داده شد .

  24. #24

    نقل قول: حرکت کردن از یک Edit به Edite با کلید Enter

    سلام
    میدونم این پاسخ خیلی دیره اما شاید جوابم به این پست به درد کسی بخوره.
    در قسمت type فرم مربوط این procedure رو اضافه کنید :
    procedure EditEnterKeyPress(Sender: TObject; var Key: Char);

    و در قسمت متغیر های فرم متغیر خودتون رو تعریف کنید:
    var
    EditEnter:TEdit;


    حالاprocedure رو که تعریف کردبن کدش رو در Unit مربوط وارد کنید:
    procedure TMyForm.EditEnterKeyPress(Sender: TObject; var Key: Char);
    begin
    if key = #13 then key := #0;
    end;


    این کد رو هم باید در قسمت OnKeyDown فرم خودتون وارد کنید :
    procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);var
    ACtrl: TWinControl;
    k: TKeyPressEvent;
    begin
    if key = 13 then
    begin
    ACtrl := ActiveControl;
    if ACtrl is TEdit then
    begin
    if assigned(TEdit(ACtrl).onKeyPress) then
    k:= TEdit(ACtrl).OnKeyPress;
    TEdit(ACtrl).OnKeyPress := EditEnterKeyPress;
    end;
    repeat
    ACtrl:= FindNextControl(ACtrl,true,true,false);
    until (ACtrl is TCustomEdit) or
    (ACtrl is TCustomComboBox) or
    (ACtrl is TCustomListBox) or
    (ACtrl is TCustomCheckBox) or
    (ACtrl is TRadioButton);
    if ACtrl is TEdit then
    begin
    if assigned(K) then
    TEdit(ACtrl).OnKeyPress:=EditEnter.OnKeyPress;
    end;
    ACtrl.SetFocus ;
    end;
    end;


    حتما فراموش نکنید که
    خاصیت KeyPreview فرم رو به True تغییر بدین.
    پیروز باشید.

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

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