[delphi-users:4216] [XE7] FireMonkey タッチ・クリック? イベントについて

258 views
Skip to first unread message

satou

unread,
Jul 26, 2015, 5:32:20 AM7/26/15
to delphi...@freeml.com
みなさんコンニチは
初心者、SATOUです

[XE7] FireMonkeyというか
AndoroidでListBoxやStringGridなど内部がスクロールするようなコントロールに対し みなさんはタップやクリック等、どのようにイベントを拾っていますか?

たとえばStringGridで私は、
StringGridClickでは うまくスクロールできない為、以下のようにしてみましたが
反応がいまいち悪いように感じます。

・StringGridMouseDownでStringGridのCell位置を取得
 SelectCellで選択状態にする

・StringGridTapで、クリックされたと判断し処理


よろしくお願いいたします。










MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
        住友林業『WEB住まい博2015』開催!
      〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
   \\【最大60万円】 家づくりサポートキャンペーン実施中!//
http://ad.freeml.com/cgi-bin/sa.cgi?id=neaF4
        <期間限定>7月3日(金)-8月31日(月)
------------------------------------------------------[freeml byGMO]--

毛利

unread,
Jul 27, 2015, 5:45:21 AM7/27/15
to "delphi-users@freeml.com"
こんにちわ毛利です
StringGridでスクロールしてる時に選択してしまうと言う事でしょうか?
procedure TForm1.StringGrid1SelectCell(Sender: TObject; const ACol,
ARow: Integer; var CanSelect: Boolean);
begin
StringGrid1.Cells[0, ARow] :=
IntToStr(
StringGrid1.ARow);
end;
StringGrid1.OnSelectCell := StringGrid1SelectCell; でも同じでしょうか?


________________________________________
差出人: post-01132886-mori.haruyuki=tetsuji...@post.freeml.com <post-01132886-mori.haruyuki=tetsuji...@post.freeml.com> が の代理で送信satou <delphi...@freeml.com>
送信日時: 2015年7月26日 18:32
宛先: delphi...@freeml.com
件名: [delphi-users:4216] [XE7] FireMonkey タッチ・クリック? イベントについて
MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
【無料で本格コーヒーマシンが使えます】
ご自宅用にもマシンが1台もらえます。
「ネスカフェアンバサダー」
少人数の職場でも大歓迎です。詳しくはWEBサイトをチェック!
http://ad.freeml.com/cgi-bin/sa.cgi?id=nen7V
------------------------------------------------------[freeml byGMO]--

satou

unread,
Jul 27, 2015, 10:25:07 AM7/27/15
to delphi...@freeml.com
毛利さん、前回も助けていただきありがとうございます。
さっそく返信頂いたのですが現在、出張中で試す環境がなく残念です。
もどったら試してみます。

説明が足らず申し訳ありません。
指でスクロールさせたときは、そのままスクロールの動作をして
指でチョンとセルを選択した時は、その位置で選択→指を離したときに次の処理がはしるようにしたかったのですが、この指でチョンと押す・離すの操作でイベントが発生したり・しなかったりと反応が悪いという感じです。
>       ************************
>    \\【最大60万円】 家づくりサポートキャンペーン実施中!//
> http://ad.freeml.com/cgi-bin/sa.cgi?id=neaF4
>         <期間限定>7月3日(金)-8月31日(月)
> ------------------------------------------------------[freeml byGMO]--


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
月額10,778円で全身脱毛が48ヶ所もできる
無料カウンセリングはこちら
http://ad.freeml.com/cgi-bin/sa.cgi?id=nesll
------------------------------------------------------[freeml byGMO]--

じゃぺ

unread,
Jul 27, 2015, 11:30:43 AM7/27/15
to delphi...@freeml.com
こんにちは
川上です

TListBoxであれば、以下の様な感じでしょうか

VCL:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
showmessage(ListBox1.Items[ListBox1.ItemIndex]);
end;

FMX:
procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
const Item: TListBoxItem);
begin
showmessage(item.Text);
end;



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
         悩んでいいる方、将来が不安な方
  ☆ ☆  バイオテックならどなたでも気軽に体験できます  ☆ ☆
     ★☆ 満足度97.2%!発毛育毛専門サロン"バイオテック" ☆★ 
……・・………・・・無料体験のお申込はこちらから・・……・・・………
http://ad.freeml.com/cgi-bin/sa.cgi?id=nesHA
------------------------------------------------------[freeml byGMO]--

satou

unread,
Jul 31, 2015, 1:18:14 AM7/31/15
to delphi...@freeml.com
こんにちわ
初心者SATOUです。

毛利さんからアドバイス頂いたStringGrid1SelectCellを試したのですが
選択状態になる前に次の処理(画面表示)へ進んでしまいます。
また次画面から戻ると選択されている状態になってはいます。

動き的には、モバイルでYahooホームページを見た時のように

・指で押したときに選択状態、離したときに次処理
・指で押したときに選択状態、長押しの時の処理
・スクロールした時は、選択状態を解除

を下記イベントで何とかできないか試行錯誤しています。

・指で押したときに選択状態、離したときに次処理
->MOUSEDOWN, MOUSEUP OT Tap?

・指で押したときに選択状態、長押しの時の処理
 ->MOUSEDOWN + タイマー OR longTap?

・スクロールした時は、選択状態を解除
->VScroolChange

このような考え方で実装している方は、いますか?


よろしくお願い致します。
>       ************************
>    \\【最大60万円】 家づくりサポートキャンペーン実施中!//
> http://ad.freeml.com/cgi-bin/sa.cgi?id=neaF4
>         <期間限定>7月3日(金)-8月31日(月)
> ------------------------------------------------------[freeml byGMO]--


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
        住友林業『WEB住まい博2015』開催!
      〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
   \\【最大60万円】 家づくりサポートキャンペーン実施中!//
http://ad.freeml.com/cgi-bin/sa.cgi?id=nfdYj

毛利

unread,
Aug 1, 2015, 12:46:29 PM8/1/15
to "delphi-users@freeml.com"
> ・指で押したときに選択状態、離したときに次処理
OnMouseDownで
TStringGrid(Sender).SelectRow(StringGrid1.RowByPoint(X, Y));

> ・指で押したときに選択状態、長押しの時の処理
http://blogs.embarcadero.com/teamj/2013/08/15/4032/

> ・スクロールした時は、選択状態を解除
Button1.SetFocus;//別のオブジェクトにフォーカス

こんな感じでどうでしょうか?


■■■■■■■■■■■■ 告知 ■■■■■■■■■■■■
第8回 RAD Studio勉強会@Osaka 2015-08-29(土)13:00 - 17:00
https://rad-studio-osaka.doorkeeper.jp/events/27236



________________________________________
差出人: post-01132886-mori.haruyuki=tetsuji...@post.freeml.com <post-01132886-mori.haruyuki=tetsuji...@post.freeml.com> が の代理で送信satou <delphi...@freeml.com>
送信日時: 2015年7月31日 14:18
宛先: delphi...@freeml.com
件名: [delphi-users:4220] Re:Re: [XE7] FireMonkey タッチ・クリック? イベントについて

こんにちわ
初心者SATOUです。

毛利さんからアドバイス頂いたStringGrid1SelectCellを試したのですが


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
         悩んでいいる方、将来が不安な方
  ☆ ☆  バイオテックならどなたでも気軽に体験できます  ☆ ☆
     ★☆ 満足度97.2%!発毛育毛専門サロン"バイオテック" ☆★ 
……・・………・・・無料体験のお申込はこちらから・・……・・・………
http://ad.freeml.com/cgi-bin/sa.cgi?id=nfyXD
------------------------------------------------------[freeml byGMO]--

satou

unread,
Aug 5, 2015, 11:01:26 PM8/5/15
to delphi...@freeml.com
こんにちは、初心者SATOUです。
アドバイスを頂いたあと、色々しらべ以下のコードで
押す・離すの選択状態が変わるところまで何とかなったのですが
---
procedure TForm1.ListBoxItemMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
ClickInterval := 0;
Timer1.Enabled := TRUE;
end;
---
procedure TForm1.ListBoxItemMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
if ClickInterval < LONG_TIME then
begin
Timer1.Enabled := FALSE;
ClickInterval := 0;
end;
ListBox1.ItemIndex:=-1;
end;
---
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ClickInterval := ClickInterval + 1;

if ( ClickInterval = LONG_TIME ) then
begin
Timer1.Enabled := FALSE;
ListBox1.ItemIndex:=-1;
end;
end;
---
procedure TForm1.ListBox1ViewportPositionChange(Sender: TObject;
const OldViewportPosition, NewViewportPosition: TPointF;
const ContentSizeChanged: Boolean);
begin
ListBox1.ItemIndex:=-1
end;
--
スクロールした時にViewportPositionChangeが発生するので
ここで選択を解除したいのですが
ListBox1.ItemIndex:=-1が効いていないようです。
毛利さんにアドバイス頂いた別のオブジェクトにフォーカスを当てても
選択は解除されませんでした。


よろしくお願い致します。




MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
【温泉】≪1泊2食付500円!?≫京都・軽井沢・南房総・箱根
・伊豆高原!!組数限定!特別価格!!【部屋数限り!】急いで!
◆大感謝プラン(1):【平日】  ¥500~
◆大感謝プラン(2):【土・連休】¥1,500~
http://ad.freeml.com/cgi-bin/sa.cgi?id=ngvds
------------------------------------------------------[freeml byGMO]--

毛利

unread,
Aug 6, 2015, 11:51:56 PM8/6/15
to "delphi-users@freeml.com"
> procedure TForm1.ListBox1ViewportPositionChange(Sender: > TObject;
> const OldViewportPosition, NewViewportPosition: TPointF;
> const ContentSizeChanged: Boolean);
> begin
> ListBox1.ItemIndex:=-1
> end;
僕の環境 android nexus6だとスクロールさせれば選択が外れます。
他のEventの影響はないでしょうか?

毛利


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
月額10,778円で全身脱毛が48ヶ所もできる
無料カウンセリングはこちら
http://ad.freeml.com/cgi-bin/sa.cgi?id=ng9B2
------------------------------------------------------[freeml byGMO]--

satou

unread,
Aug 7, 2015, 2:25:59 AM8/7/15
to delphi...@freeml.com
初心者 SATOUです。
毛利さん
連絡ありがとうございます。

自分の環境 IS05(Android 2.3.4)と、かなり古い機種でテストしています。
環境によって動作が異なるということでしょうか

他の機種が自宅にありますので動作確認してみて、報告させて頂きます。




MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
         悩んでいいる方、将来が不安な方
  ☆ ☆  バイオテックならどなたでも気軽に体験できます  ☆ ☆
     ★☆ 満足度97.2%!発毛育毛専門サロン"バイオテック" ☆★ 
……・・………・・・無料体験のお申込はこちらから・・……・・・………
http://ad.freeml.com/cgi-bin/sa.cgi?id=ngBx6
------------------------------------------------------[freeml byGMO]--

satou

unread,
Aug 7, 2015, 9:49:03 AM8/7/15
to delphi...@freeml.com
初心者 SATOUです。
他の機種 LaVieTab PC-TE510S1(Android 4.2.2)で試しました。

>>スクロールさせれば選択が外れます。

指で押して選択後に上下スクロールするため指を動かすと最終的に指が
画面から離れる為、MouseUpイベントで選択が消えます。
※これは、IS05でも同じでした。

毛利さんが言われたのは、このような操作でしょうか?
また、前回のせたソースだけのテストPGため、他のEVENTの影響はないです。

実際にやりたいのは、指で押して選択状態になった後に画面を押したまま
指を動かしたり・スクロールした時に選択が解除されるようにしたいです。

現状では選択状態のまま、リストがスクロールされたり他のアイテムが選択
されたりします。

FireMonkey難しいですね...

よろしくお願いいたします。




MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
        住友林業『WEB住まい博2015』開催!
      〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
   \\【最大60万円】 家づくりサポートキャンペーン実施中!//
http://ad.freeml.com/cgi-bin/sa.cgi?id=ngHzp
Reply all
Reply to author
Forward
0 new messages