AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 マルチタッチディスプレイとマルチモニタ 2010/11/22
 
これまで Delphi2010の各コンポーネントを、ざっとですが見てきました。データベースやIndy、インターネット関連などは省きましたけれども…。あともう1つ、マルチタッチ・ジェスチャの機能もパスしました。Delphi2010では、Windows7の新機能である「マルチタッチ」に対応しているとの事ですが、さすがにこれは、Windows7専用マルチタッチ対応ディスプレイがないとどうしようもありません。
 

という訳で、比較的安価なWindows7専用マルチタッチ対応ディスプレイ、iiyama製「ProLite T2250MTS」を購入し、接続してみました。
 
20インチワイドディスプレイで、解像度は 1920×1080、コネクタ&ケーブルはDVI-DとD-Sub(これまでのアナログ用)の2つが接続できます。スピーカ機能付。但し、ペンは付いてません。
 
取り合えずこのディスプレイをメインにしたいので、これまで接続していたディスプレイを外し、このディスプレイと 付属のディスプレイケーブルを接続し(当方のVGAカードではDVI端子接続可能ですのでそちらにて)、付属のUSBケーブルを接続し、電源ケーブルをさして、電源オン。デバイスドライバのCDやFDは付いてません。Windows7の起動画面が表示され、Windows7が起動。
 

画面の壁紙(デスクトップ)上で右クリックして「画面の解像度」を選択します。機種名、解像度はちゃんと認識されています。
 
さっそくディスプレイを触ってみると、クリックしたりドラッグしたり、という事が可能になっています。ダブルクリックは少しやりにくいですね。2つの指を使った拡大縮小も少し慣れが必要のような気はします。




次に、Windowsメニューから「コントロールパネル」を実行し、「表示方法」を「カテゴリ」から「大きいアイコン」に変更します。
 
その中に「ペンとタッチ」がありますので、これを実行します。




「ペンのオプション」タブ
ペン操作の設定画面です。
 
「ダブルタップ」を選択して[設定]ボタンをクリックします。




ダブルタップ(ダブルクリック操作)の微調整が出来ます。設定をして、画面右下の絵を触ってみて、絵が変わればOK。




「ペンのオプション」タブ
 
「プレス アンド  ホールド」を選択して[設定]ボタンをクリックします。
 
「プレス アンド  ホールド」の微調整が出来ます。設定をして、画面右下の絵を触ってみて、絵が変わればOK。




「フリック」タブ
 
フリックとは、指でダッシュ移動する感じで、指でタッチしてすばやくドラッグしながら離す、というような操作で、ページ移動するような機能です。
標準フリックは4方向で、カスタマイズをして8方向・機能割り当てをする事が出来ます。




「手書き」タブ
 
とりあえずそのままにしておきます。




「タッチ」タブ
 
とりあえずそのままにしておきます。
 
タップというのは、タッチパネルにタッチすることです。
ダブルタップは、2回連続してタッチすることで、ダブルクリック操作です。
 
プレスアンドホールドは、1本の指でタッチしたあと、もう1本の指でもタッチします。すると右クリック操作(コンテキストメニューが出る等)が出来ます。




「パン」タブ
 
とりあえずそのままにしておきます。
 
ジェスチャというのは、
パン:1本又は2本の指での画面移動
ズーム:2本の指での画面拡大縮小
回転:2本の指で回転させて〜
プレスアンドタップ:プレスアンドホールドと同じ
という操作の事のようです。
 
[OK]ボタンを押して「ペンとタッチ」画面を閉じます。
 
例えば、Windowsの「ペイント」を起動して、指で触ってラクガキしてみます。指をちゃんと離す、という事を意識しないと、線がつながってしまう状態になってしまいますね。
 

メモ帳を起動します。

画面内をタッチすると、ソフトキーボードが起動します。
 
指は大きいので、キーボードも大きくしないと、隣のキーも押してしまいます。




ソフトキーボードを手書きモードにも出来ます。文字認識してくれますが、これは指では少し難しいかもしれません。ペンがあったほうがいいでしょうね。




タブレットのペンを使って手書きをして認識したところです。
やはり、指/ペンをきっちり離す、という意識は必要であると感じます。(多少、指が浮いていても拾ってしまう感覚)
 
 

以前のディスプレイも、VGAカードのもう1つのコネクタ(※当方のVGAカードは元々2つのコネクタを搭載しています)に接続して、ついでにマルチモニタにしてみました。これを左側において・・・
 
この左側に作成したプログラムを移動すると、予想通り、水平位置(Leftプロパティ)はマイナス値になります。
 
テスト27として新規作成します。
メモ Memo1 とタイマー Timer1 を配置します。

<オブジェクトインスペクタ>にて、Timer1 の Enabled プロパティは「False」にしておきます。フォームの OnShowイベントハンドラ、Timer1 の OnTimerイベントハンドラを記述します。
procedure TForm1.FormShow(Sender: TObject);
var
 i : integer ;
 s : string ;
begin
 Memo1.Lines.Clear ;
 s := 'モニタ数:' + IntToStr(Screen.MonitorCount);
 Memo1.Lines.Add(s);
 for i:=0 to Screen.MonitorCount-1 do begin
  s := 'No.' + IntToStr(Screen.Monitors[i].MonitorNum) + ':' ;
  s := s + IntToStr(Screen.Monitors[i].Left) + ',' ;
  s := s + IntToStr(Screen.Monitors[i].Top) + ',' ;
  s := s + IntToStr(Screen.Monitors[i].Width) + ',' ;
  s := s + IntToStr(Screen.Monitors[i].Height) ;
  if (Screen.Monitors[i].Primary) then
   s := s + '[メインモニタ]';
  Memo1.Lines.Add(s);
 end;
 
 Memo1.Lines.Add('デスクトップ画面:');
 s := ' ' + IntToStr(Screen.DesktopLeft) + ',' ;
 s := s + IntToStr(Screen.DesktopTop) + ',' ;
 s := s + IntToStr(Screen.DesktopWidth) + ',' ;
 s := s + IntToStr(Screen.DesktopHeight) ;
 Memo1.Lines.Add(s);
 
 Timer1.Interval := 500 ;
 Timer1.Enabled := True ;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Timer1.Enabled := False ;
 
 Caption := IntToStr(Left) + ',' + IntToStr(Top)
   + ' モニタ番号:'+IntToStr(Form1.Monitor.MonitorNum);
 
 Timer1.Interval := 500 ;
 Timer1.Enabled := True ;
end;
これを保存・コンパイル(再構築)・実行をします。下記のような画面が表示されます。画面を移動すると、フォームのタイトルバー(キャプション)に位置とモニタ番号が表示されます。

 
という訳で、TScreenオブジェクトの各プロパティを取得することで、マルチモニタの各値の状態がわかります。また、フォームが複数あるアプリケーションの場合は、メインフォーム以外のフォームの DefaultMonitorプロパティで、フォームが表示されるモニタを指定する事が出来ます。以下、ヘルプより。
dmDesktop特定のモニタにフォームを位置付ける試みは行われない
dmPrimaryフォームは,グローバルな画面オブジェクトの Monitors プロパティにリストされている最初のモニタに位置付けられる
dmMainFormフォームはアプリケーションのメインフォームと同じモニタに表示される
dmActiveFormフォームは現在アクティブなフォームと同じモニタに表示される
デフォルト設定は「dmActiveForm」になっています。フォームの位置を保存・呼び出しをしている場合には、マルチモニタを意識したアプリケーションを作成する場合には、これを「dmDesktop」にしておく方が良いかもしれません。
 
 
マルチモニタについては、これくらいにしておいて、次回からマルチタッチの機能について見ていきたいと思います。
 
なお、このディスプレイは WindowsVistaでも「マルチタッチ」ではありませんが(※マルチタッチはWindows7の新機能の為)タッチパネルとして認識され利用出来ます。
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/11/21
 2010/11/22
▼2010/11/23
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.