سؤال

قد يبدو من الطبيعي استخدام كنترول + +, كنترول + -, ، و كنترول + 0 كاختصارات لتكبير التطبيق ، والتكبير ، واستعادة الإجراءات الافتراضية (عادة 100 ٪). الآن ، في دلفي ، أنا قادر على التخصيص كنترول + + و كنترول + 0 كاختصارات. السابق ، رغم ذلك ، يتطلب أن يتم استخدام علامة Plus للجزء الرئيسي من لوحة المفاتيح ؛ لا يمكن استخدام علامة plus من لوحة المفاتيح العددية.

ومع ذلك ، تنشأ المشكلة عندما أرغب في التخصيص كنترول + - كاختصار. إنه ببساطة لا يعمل. إذا قمت بتعيين "Ctrl+-" في IDE ، فإن القيمة المخزنة في ShortCut الممتلكات 16495. إذا طرحنا ssCtrl من هذا ، نحصل على 111. وسيعتقد المرء ، ShortCut := 45 + ssCtrl, ، أو مكافئ، ShortCut := Menus.ShortCut(45, [ssCtrl]), ، لان ord('-') = 45. لكن هذا لا يعمل.

ومع ذلك ، فقد وجدت حل عمل: ShortCut := 189 + ssCtrl. اخترت 189 لأن هذا هو الرقم الذي أتلقاه عندما أزعج المفتاح "-" والاستماع إلى KeyDown حدث.

فلماذا لست سعيدًا بهذا؟ حسنًا ، أخشى أن يكون الثابت 189 صالحًا فقط لوحات المفاتيح السويدية. لقد حاولت أن أقرأ عن هذا ، وكالعادة ، وثائق MSDN واضح إلى حد ما ، ولكن بعد ذلك ، من يعرف كيف تتعامل دلفي للأشياء.

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

المحلول

رمز المفتاح 189 هو VK_OEM_MINUS في windows.pas, ، وبالتالي فإن الحل الخاص بك ليس فقط للسويديين.

نصائح أخرى

صحيح لاستخدام اختصار القائمة على اللوحة الرقمية
كنترولNUM + لـ [+
كنترولNUM - ل [-

هناك مساحة بين NUM + و NUM -

لست متأكدًا لماذا تحصل على 16495 كنترول + -. عندما أضيف هذا الاختصار إلى إجراء ما ، فإنه يعطيني 16573 ، ويظهر في القائمة كـ كنترول + -, ، وهذا الاختصار يعمل.

ومع ذلك ، فأنت محق في ذلك Menus.ShortCut(ord('-', [ssCtrl]) لا يعمل. يعطي القيمة 16429 ويظهر في القائمة مثل كنترول + الإقرار, ، و كنترول + الإقرار يعمل كاختصار.

ربما هذه مشكلة مع Delphi 2009 وبعد ذلك منذ أن أضافوا Unicode.

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