喫茶XRAYトップページ

[スレッド全体
]

[10997] TSplitterをタッチ操作で動かしたい・・・返信 削除
2017/3/31 (金) 22:20:31 Sara
みなさん こんばんわ。

最近Windowsタブレットを手に入れたので、自作のソフトを入れて

動かしたところ、TSplitterがタッチ操作で動かしづらい・・・

うまく動くこともあれば、何度やっても動かないことも・・・


例えば、マスター作のTplExplorerFolderTree(alLeft)をFormの左端に置き、

次にTSplitterを配置、さらにTShListView(alClient)などを配置して

実行時にTplExplorerFolderTreeの幅を変えたいという場合、

マウス操作であれば、何事もなくTSplitterをドラッグすればOKですが、

Windowsタブレットでタッチ操作で行う場合一般的には

どのような方法になるのでしょうか?(プログラム的に)

TShListViewのOnGestureで無理やりTShListViewの幅を変えれば見栄えはともかく

目的は達成されますが・・・できれば、Splitterをタッチ操作で動かしたい。

なにか良い方法はありませんでしょうか?



[11059] Re:TSplitterをタッチ操作で動かしたい・・・返信 削除
2017/4/8 (土) 18:15:22 taka
▼ Saraさん
> 目的は達成されますが・・・できれば、Splitterをタッチ操作で動かしたい。
>
> なにか良い方法はありませんでしょうか?
>


ヘルプを見ると
Vcl.Controls.TControl.OnGesture にハンドラがあるので

フリー版なのでソースコードがないので実態がわかりませんが、
非表示になっているだけですので
イベントを手動で代入して、ジェスチャーに反応するか試してみましたか?

  published
    procedure Splitter1Gesture(Sender: TObject;
                             const EventInfo: TGestureEventInfo; var Handled: Boolean);

procedure TForm1.FormCreate(Sender: TObject);
begin
  Splitter1.OnGesture := Splitter1Gesture;
end;

procedure TForm1.Splitter1Gesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
  // コード
  // showmesageとかなにかいれれば、反応をみれるかも?
end;


[11097] Re2:TSplitterをタッチ操作で動かしたい・・・返信 削除
2017/4/13 (木) 22:53:59 Sara
▼ takaさん

こんばんは。 ありがとうございます。

> ヘルプを見ると
> Vcl.Controls.TControl.OnGesture にハンドラがあるので
>
> フリー版なのでソースコードがないので実態がわかりませんが、
> 非表示になっているだけですので
> イベントを手動で代入して、ジェスチャーに反応するか試してみましたか?
>
>   published
>     procedure Splitter1Gesture(Sender: TObject;
>                              const EventInfo: TGestureEventInfo; var Handled: Boolean);
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
>   Splitter1.OnGesture := Splitter1Gesture;
> end;
>
> procedure TForm1.Splitter1Gesture(Sender: TObject;
>   const EventInfo: TGestureEventInfo; var Handled: Boolean);
> begin
>   // コード
>   // showmesageとかなにかいれれば、反応をみれるかも?
> end;


これは、試していません。

ただ、実際にタブレットで使ってみると、Windows10のExplorerがタッチで
Splitter以外の部分で自由自在(?)にサイズ変更等ができるのですが、
その使用感に合わせようとすると、Splitterではなく、TreeViewやListview
のスクロールバー付近等で反応するようにしないといけないかなと・・・
となると、ジェスチャーでは厳しそうなのですよね・・・

なので、WM_TOUCHを駆使して各コンポーネントの座標をもとに動作するように
したほうがよさげと言う・・・めんどくさそうですが・・・

でも、まぁ せっかく情報を頂けたので、WM_TOUCHを試す前に試してみます。
(もっとも、Splitterの幅的な問題で、ジェスチャーが反応しない可能性が・・・
 Splitterの幅をスクロールバー程度まで太くすればいけるか?
 ダメもとでスクロールバー以上の幅にしたときもSplitterは上手く
 動かなかったんですよね・・・(^^; )

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82