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

نام تاپیک: استفاده از کلید Alt در فرم

  1. #1

    استفاده از کلید Alt در فرم

    در فرم About دلفی اگر کلید Alt را به همراه مثلا کلمه Team وارد کنید اسامی گروه سازنده دلفی نمایش داده می شود. سوال من این است که چطور می توانم پس از فعال کردن گزینه KeyPreview در فرم، کلید ALT را هم تشخیص دهم یا حتی مثلا کلید Shift به همراه یک کلمه.


    با تشکر :wink:

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1383
    پست
    181
    از پارامتر Shift در رویدادهاى OnKeyDown یا OnKeyUp مى‌تونى استفاده کنى، یا از رویداد OnShortcut.

  3. #3
    در قسمت OnKeyDown میتوانی از این کد برای کنترل استفاده کنید
      If (Shift=[ssCtrl] )  And (Key=VK_UP)  Then
    Begin
    End;

  4. #4
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    این هم تقریبا شبیه کد بالایی است

    if (Key=Ord('T')) and (ssAlt in Shift) then
    begin
    key:=0;
    کد مورد نظر
    end

  5. #5
    با سلام
    حالا اگه بخواهیم بر اساس اینکه کاربر کلید Alt را گرفته و کلمه Test را تایپ کند یک پیغام داده شود چجوری باید کد بالا را تنظیم کرد؟
    با تشکر

  6. #6
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    احتمالا بتوانی با یک Edit که مخفی است این کار را انجام بدهی یعنی یه And اضافه می کنی و چک کنی که اگه شرط

    Edit.text:='Test';

    برقرار است کد انجام شود :موفق:

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1383
    پست
    181
    این کد امتحان نشده، ولى اون چیزى که مى‌خواى باید یه همچین چیزى باشه.


    // Global Variable
    var HiddenText: AnsiString = '';

    // OnKeyDown Event (e.g procedure SomeForm.OnKeyDown)
    if ssAlt in Shift then
    HiddenText := HiddenText + UpCase(AnsiChar(Key));
    else
    HiddenText := '';
    if AnsiSameStr(HiddenText, 'TEST') then
    // Show Message.
    // ~OnKeyDown Event

  8. #8
    کدی که hps ارائه دادند، جوابگو نیست.

    البته کد زیر هم کار می کند ولی برای یک حرف:
    if ((ssAlt in Shift) and (Chr(key)='A')) then
    showmessage('A');


    من با کدی که نوشتم راه حل آن را پیدا کردم ولی 1 مشکل: اصدای بیپ از اسپیکر شنیده می شود.

    کد مورد نظر:

    public
    { Public declarations }
    ch:String;

    c:Integer;
    ----
    ----
    ----
    procedure TForm1.FormActivate(Sender: TObject);
    begin
    ch:='mohammad';
    c:=1;
    end;
    ---
    ---
    ---
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    begin
    if ((ssAlt in Shift) and (AnsiChar(Key)=(UpCase(ch[ c]))) and (c<=length(ch)))then
    c:=c+1
    else
    c:=1;
    if c=length(ch)+1 then
    begin
    showmessage('True');
    c:=1;
    end;
    end;

    با تشکر

  9. #9
    کاربر دائمی آواتار Mahdi_S_T
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    خراسان رضوی
    پست
    1,039
    با استفاده از کد زیر احتمالا صدای بیپ برطرف شود یعنی بعد از فشار هر دکمه کد زیر اجرا شود :

    key:=0;

  10. #10
    امتحان کرده بودم قبلا ولی باز هم قطع نشد :(

  11. #11
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    این رو امتحان کنید:
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    procedure FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    public
    HiddenText: String;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    begin
    if (ssAlt in Shift) and (Char(Key) in ['A'..'Z','a'..'z']) then
    HiddenText := HiddenText + UpCase(Char(Key))
    else
    HiddenText := '';

    if AnsiSameStr(HiddenText, 'TEAM') then
    begin
    ShowMessage('Hidden Message');
    HiddenText := '';
    end;
    end;

    end.

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

    برای تست در حین نگه داشتن کلید Alt کلمه Team را تایپ کنید.

  12. #12
    با تشکر از شما جناب آقای کرامتی
    کدی که من نوشته بودم هم همین کار را انجام می داد. :oops:
    چه با کدی که شما نوشته اید و چه با کدی که خودم نوشتم، صدای بیپ از اسپیکر شنیده می شود. لطفا برای این مشکل راهی بیابید.

    با تشکر :wink:

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

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