2010-11-29 99 views
4

當我不得不爲我的工作購買delphi時,我看到的一大賣點是支持平板電腦的能力。現在我工作的公司的客戶想要使用平板電腦。我一直在努力尋找與平板電腦德爾福的例子,但我沒有找到任何。有人有經驗嗎?任何類型的教程或例子?Delphi 2010平板電腦支持

我似乎甚至不能在組件獲得焦點時帶上虛擬鍵盤,並在它丟失時隱藏它。

+1

搜索`touch`和`gesture`,這些是支持平板電腦編程的基本功能。 – 2010-11-29 12:24:05

回答

7

Delphi 2010爲Delphi引入了一些很好的觸摸和手勢支持。

要獲得更多信息,請訪問EDN網站並查找CodeRage 4回放。有一個會議題爲「手中的手勢在VCL」由塞皮布盧姆。同樣在CodeRage 5中,有一個標題爲「新應用程序和當前項目的手勢功能」的會議由Vesvolod Leonov提供。

第6章馬可坎圖的「德爾福2010手冊」也涵蓋了德爾福的觸摸和手勢。

最終,你可以檢查Chris Bensen's weblog一些關於在Delphi中觸摸和手勢支持的入門文章和演示源代碼。

我似乎不能夠,甚至帶來 虛擬鍵盤當組件 獲取焦點,並隱藏它,當它失去 它。

在Delphi 2010及更新版本中,已啓用觸控的keyboard component已可用。爲了在焦點改變時使其可見或隱藏,您可以處理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等組件從此類中下載)。如果控件是從TCustomEdit派生的,那麼它將虛擬鍵盤置於控件下方,並使鍵盤可見;否則,它隱藏鍵盤。

在示例代碼中,我們在Form1上有一個編輯,備忘錄和一個按鈕。對於Edit1和Memo1,該鍵盤應該可見,並且在Button1具有焦點時隱藏該鍵盤。

屏幕上鍵盤位置的計算並不那麼聰明,如果焦點控件非常接近表單的底部邊緣,則鍵盤可能會太低。無論如何,將控件放置在屏幕上不在你的問題的範圍之內。

+1

和DR。鮑勃鏈接:http://www.drbob42.com/examines/examinB6.htm – 2010-12-09 00:37:10