2013-04-18 6 views
5

नीचे दिए गए लिंक में, माइक्रोसॉफ्ट टैबलेट पर एप्लिकेशन स्क्रीन के घूर्णन को सीमित करने के दो तरीकों का वर्णन करता है।स्क्रीन को स्वचालित रूप से टेबलेट पर घूमने से कैसे रोकें?

http://msdn.microsoft.com/en-ca/library/windows/apps/hh700342.aspx

क्या हो रहा है कि डेल्फी के (XE3) TRibbon अच्छी तरह से रोटेशन हैंडल नहीं करता है। यह लटका हुआ है।

जैसा अपेक्षित होगा, एमएस वेब साइट का वर्णन एमएस विकास उत्पादों से कैसे किया जाए। मैं नहीं देखता कि मैं अपने डेल्फी प्रोजेक्ट में यह कैसे कर सकता हूं।

विधि 1:

अपने appxmanifest फ़ाइल से जोड़ें:

<InitialRotationPreference> 
    <Rotation Preference="landscape"/> 
    <Rotation Preference="landscapeFlipped"/> 
</InitialRotationPreference> 

मैं अभी तक नहीं मिला है जहां/कैसे appxmanifest आवेदन के हिस्से तो मैं में यह कर सकते हैं होना चाहिए डेल्फी।

विधि 2:

कोड के साथ कॉल करें:

Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = 
      Windows.Graphics.Display.DisplayOrientations.Landscape; 

इस विस्थापित करने के लिए डेल्फी के लिए, मैं तो मैं कुछ इसी तरह कर सकता है एपीआई DLL जानकारी पता करने की जरूरत होगी।

कोई विचार?

क्या कोई COM ऑब्जेक्ट या DLL हो सकता है जो हमें इस तक पहुंच प्रदान करता है?

+0

हालांकि बहुत संदिग्ध, मैं अभी भी उस दिन का इंतजार कर रहा हूं कि डेल्फी को माइक्रोसॉफ्ट के लिए पर्याप्त रूप से उनकी अन्य प्राथमिक भाषाओं की तरह कोड उदाहरण प्रदान करने के लिए पर्याप्त मान्यता मिली है। –

+0

क्या आप कृपया यह स्पष्ट कर सकते हैं कि आप इसे विशेष रूप से विंडोज 8 पर लागू करना चाहते हैं या नहीं? AFAIK, यह विंडोज 7+ पर लागू है, लेकिन मुझे लगता है कि यह XP + –

+0

से हो सकता है, मैंने केवल Win8 के साथ काम करने की अपेक्षा की थी। धन्यवाद! जिम मैकेथ ने नीचे एक समाधान दिया है। –

उत्तर

6

उन कॉलों को विंडोजआरटी एप्लिकेशन (एफकेए मेट्रो) के लिए रोटेशन को अक्षम करना है जिसे आप डेल्फी (अभी तक) के साथ नहीं बना सकते हैं। यहां तक ​​कि एक मेट्रोपोलिस ऐप अभी भी एक डेस्कटॉप ऐप है। solution on the Intel site है।

मैं कोड साफ X-Ray से प्रतिक्रिया के आधार पर:

unit MetroDisplayRotation; 

(* 
* Usage: TMetroDisplayRotation.SetDisplayAutoRotationPreferences(
*   TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE or 
*   TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED); 
*) 

interface 

type 
    TMetroDisplayRotation = class 
    public const 
    ORIENTATION_PREFERENCE_NONE = $0; 
    ORIENTATION_PREFERENCE_LANDSCAPE = $1; 
    ORIENTATION_PREFERENCE_PORTRAIT = $2; 
    ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = $4; 
    ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = $8; 

    class procedure SetDisplayAutoRotationPreferences(ORIENTATION_PREFERENCE: Integer); 
    end; 

implementation 

uses 
    SysUtils, Windows; 

{ TMetroDisplayRotation } 

class procedure TMetroDisplayRotation.SetDisplayAutoRotationPreferences(
    ORIENTATION_PREFERENCE: Integer); 
type 
    TSDARP = procedure(ORIENTATION_PREFERENCE: Integer); stdcall; 
var 
    UserHandle: THandle; 
    SDARP: TSDARP; 
begin 
    UserHandle := GetModuleHandle('User32.dll'); 
    @SDARP := GetProcAddress(UserHandle, 'SetDisplayAutoRotationPreferences'); 
    if Assigned(SDARP) then 
    SDARP(ORIENTATION_PREFERENCE); 
end; 

end. 

आप सुनिश्चित करें कि आप केवल Windows 8 पर इस फोन के बाद से यह प्रक्रिया कहीं और मौजूद नहीं है बनाने के लिए चाहते हैं।

उपयोग: TMetroDisplayRotation.SetDisplayAutoRotationPreferences(TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE or TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED);

एक और खराब विकल्प संपूर्ण टेबलेट के लिए उसे निष्क्रिय करने के लिए है। रजिस्ट्री में बस HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation पर जाएं और Enable से पर बदलें।

+0

धन्यवाद, जिम! Stdcall जोड़ने के लिए था और फिर यह काम किया। इसके अलावा कुछ अन्य मामूली सुधार भी किए। इसे पूरी तरह से परीक्षण करने और इस पर विचार करने के बाद कि आप इसका परीक्षण नहीं कर सकते हैं, मुझे लगा कि इस परिवर्तन को शामिल करने के लिए आपकी टिप्पणी संपादित करना सही था। डेल्फी समुदाय के लिए आप क्या करते हैं इसके लिए धन्यवाद! –

+0

@ एक्स-रे: मेरे कोड को संपादित करने के लिए स्वतंत्र महसूस करें। हाँ, मैं पूरी तरह से StdCall दूरी पर। –

+0

जिम: मेरे परिवर्तन दिखाई नहीं दे रहे हैं।स्टैक ओवरफ्लो ने कहा कि परिवर्तनों को "सहकर्मी समीक्षा" की आवश्यकता होगी और तब तक केवल मैं परिवर्तन देख सकता हूं। अब भी मुझे अपने बदलाव नहीं दिख रहे हैं, ऐसा लगता है कि ऐसा कभी नहीं हुआ। धन्यवाद! एमपी –

संबंधित मुद्दे