سؤال

كانت إحدى نقاط البيع الكبيرة التي رأيتها عندما اضطررت إلى شراء Delphi لعملي هي القدرة على دعم الكمبيوتر اللوحي. الآن يريد عميل الشركة حيث أعمل استخدام جهاز كمبيوتر لوحي. لقد كنت أحاول جاهداً العثور على أمثلة من Delphi مع جهاز كمبيوتر لوحي ، لكنني لا أجد أيًا. هل لدى أي شخص خبرة معها؟ أي نوع من البرامج التعليمية أو الأمثلة؟

لا يبدو أنني قادر حتى على إحضار لوحة مفاتيح افتراضية عندما يكتسب مكون التركيز ويخفيه عندما يفقده.

هل كانت مفيدة؟

المحلول

قدمت Delphi 2010 بعضًا من الدعم اللطيف للإيماءات والإيماءات إلى Delphi.

للحصول على مزيد من المعلومات حول هذا الموضوع ، انتقل إلى edn موقع ويب وابحث عن CODERAGE 4 Replays. هناك جلسة بعنوان "يد الإيماءات في VCL"بقلم سيبي بلوم. أيضا في Coderage 5 هناك جلسة بعنوان"إمكانات الإيماءة للتطبيق الجديد والمشاريع الحالية"بقلم فيسبولود ليونوف.

الفصل 6 من ماركو كانتو "كتيب Delphi 2010"يغطي أيضا اللمس والإيماءات في دلفي.

في النهاية ، يمكنك التحقق مدونة كريس بنسن بالنسبة لبعض المنشورات التمهيدية ورمز المصدر التجريبي حول دعم اللمس والإيماءات في دلفي.

لا يبدو أنني قادر حتى على إحضار لوحة مفاتيح افتراضية عندما يكتسب مكون التركيز ويخفيه عندما يفقده.

في Delphi 2010 والإصدارات الأحدث التي تدعم اللمس مكون لوحة المفاتيح متوفر بالفعل. لجعلها مرئية أو إخفاءها عند تغيير التركيز ، يمكنك التعامل معها cm_focuschanged رسالة VCL ، وجعل لوحة المفاتيح مرئية عندما يتم استخلاص التحكم في المكاسب من فئة معينة أو تلبي بعض الشروط الخاصة. هنا رمز عينة:

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    TouchKeyboard1: TTouchKeyboard;
  private
    procedure ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
    procedure CmFocusChanged(var Msg: TCMFocusChanged); message CM_FOCUSCHANGED;
  public
    { Public declarations }
  end;

/// Implementation

procedure TForm1.ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
var
  APoint : TPoint;
begin
  if Control is TCustomEdit then
  begin
    APoint := Control.ClientToScreen(Point(0,0));
    APoint := Keyboard.Parent.ScreenToClient(APoint);
    Keyboard.Left := APoint.X;
    Keyboard.Top := APoint.Y + (Control.Height);
    Keyboard.Visible := True;
  end
  else
    Keyboard.Visible := False;
end;

procedure TForm1.CmFocusChanged(var Msg: TCMFocusChanged);
begin
  ActivateVirtualKeyboard(Msg.Sender, TouchKeyboard1);
end;

الكود أعلاه المكالمات ActivateVirtualKeyboard في كل مرة يتم تغيير التركيز. MSG.Sender هو السيطرة التي اكتسبت التركيز. يقوم ActivateVirtualKeyboard بالتحقق مما إذا كان عنصر التحكم هو سليل tcustomedit (مكونات مثل Tedit أو Tmemo Descend من هذه الفئة). إذا تم اشتقاق عنصر التحكم من tcustomedit ، فإنه يضع لوحة المفاتيح الافتراضية أسفل عنصر التحكم ، ويجعل لوحة المفاتيح مرئية ؛ خلاف ذلك ، فإنه يخفي لوحة المفاتيح.

في رمز العينة لدينا تحرير ، مذكرة ، وزر على Form1. يجب أن تكون لوحة المفاتيح مرئية لـ EDIT1 و MEMO1 ، و HID عندما يكون Button1 التركيز.

الحساب لموضع لوحة المفاتيح على الشاشة ليس ذكيًا ، وقد تنخفض لوحة المفاتيح إذا كان التحكم الذي يتم التركيز عليه قريبًا جدًا من الحافة السفلية للنموذج. على أي حال ، فإن وضع عنصر تحكم على الشاشة خارج نطاق سؤالك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top