[delphi-users:3779] Re:Re: FireMonkeyのTEditの見た目について

284 views
Skip to first unread message

レオン

unread,
Apr 22, 2014, 10:38:38 AM4/22/14
to delphi...@freeml.com
細川さん、こんにちは。
ご本人からのお返事をいただけるなんて感激です。

実は
http://www.gesource.jp/weblog/?p=6377

こちらのブログを参考に、背景色を付けた後でTEditを置いたら
設計画面では白抜きの四角だったのに、
ビルドして実機に送ってみたらアンダーバーになっていて
ちょっと驚いたもので。
iOSは試したことがないんですが、こちらでも
アンダーバーになっているんでしょうか?

もちろんWindowsの作法を持ち込まずに作ろう、という
お話の意図は理解しているつもりです。

そもそも「いくつかの数字を入力してもらって、結果を表示する」
ようなサンプルを作っていたんですが
TEditとボタン、という組み合わせ自体がWindowsっぽいかもしれません。
もっとスマホ向きの画面デザインを考えなくてはいけませんね。

ActivityとFormの関係や、Intentの部分など
資料は非常に参考になりました。
WindowsAPIを知っていると役に立ったように
Androidの仕組みも知っておくべし、ということですが
これはAndroidの仮想マシンの動作の仕方と、Javaでのコーディングの資料も
参考にしたほうがよい、と解釈してよろしいでしょうか?




> 團さん
>
> こんにちは。
> 細川です。
>
> 基本的には Android / iOS の場合、スタイルを変更できません。
> それは、見た目が合わないと Android / iOS で不都合がでるためです。
>
> 逆に Android に慣れたユーザーですと、非常な違和感を感じると思います。
>
> それを承知の上で、変更するというのならば、TStyleBook をダブルクリックした画面
> で、editstyle を編集してください。
> ただし、editstyle を編集すると「全て」の TEdit の見た目が変更されます。
> Mobile 開発では、カスタムスタイルは作れません(裏技的に作る事はできますけどね……)。
>
> > 「Windowsのことはすべて忘れよ!」
> > とのお言葉があったので、プロパティを触っていれば
> > わかるかと思ったんですが、無理でした。_| ̄|○カ゛ックリ・・
>
> これを言ったのは僕ですが、Windows の作法を全て忘れて組んだ方がいい、という意味
> です。
> つまり、Android の TEdit (→ android.widget.EditText) がアンダーラインの見た目
> であり、それが作法なのだから、Windows の作法を入れてはいけない、という意味です。
>
>
>
> Regards,
> HOSOKAWA Jun
> [S/G] SERIALGAMES Inc.
> TEL: 03-5812-0980
> FAX: 03-5812-0970
> twitter: http://twitter.com/serialgames
> twitter: http://twitter.com/flaver_sg
> mailto: j...@serialgames.co.jp
> fla:ver http://flaver.jp/


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

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lh5xF
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Apr 23, 2014, 3:40:46 AM4/23/14
to delphi...@freeml.com
團さん

こんにちは。
細川です。

> 設計画面では白抜きの四角だったのに、
> ビルドして実機に送ってみたらアンダーバーになっていて
> ちょっと驚いたもので。
> iOSは試したことがないんですが、こちらでも
> アンダーバーになっているんでしょうか?

iOS は iOS の見た目になっています。
ですので、いわゆる枠はあります。

ところで、TStyleBook を配置されていますか?

> そもそも「いくつかの数字を入力してもらって、結果を表示する」
> ようなサンプルを作っていたんですが
> TEditとボタン、という組み合わせ自体がWindowsっぽいかもしれません。
> もっとスマホ向きの画面デザインを考えなくてはいけませんね。

どのような画面なのかを見ていないので、何とも言えませんが、
Edit や Button といったコントロール(android.Widgets)は、ごく一般的に使
われるものです。

> ActivityとFormの関係や、Intentの部分など
> 資料は非常に参考になりました。
> WindowsAPIを知っていると役に立ったように
> Androidの仕組みも知っておくべし、ということですが
> これはAndroidの仮想マシンの動作の仕方と、Javaでのコーディングの資料も
> 参考にしたほうがよい、と解釈してよろしいでしょうか?

もちろん、そこまで理解していれば最強ですが、そこまで理解しなくても大丈夫
です。
Android の大まかな仕組み(Activity Stack, Intent etc)がわかっていれば大
丈夫です。

それと、もしも、Android や iOS の実機をお持ちでないのであれば、ぜひ、
「日常的に」使ってみてください。
肌で、文化を知ることができます。

「Windows を使ったことがない人が、Windows のアプリケーションを組む」こと
ができるのか?ということと同じ話だとお考えください。
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhEZf
------------------------------------------------------[freeml byGMO]--

レオン

unread,
Apr 27, 2014, 8:30:24 PM4/27/14
to delphi...@freeml.com
細川さん、こんにちは。

スマホはDroidを使っているんですが、(Galaxyです)
正直使いやすいと思ったことがないんです。

ソフトの用意するボタンと、ハード側にある
いわゆる戻るボタンのようなものの使い分けが感覚的にわかりづらくて
ついていけないんです。

たとえば、背後に回ったアクティビティは消されても仕方ありませんが
とあるアプリから呼び出されたアクティビティだった場合は
アプリのプロセスは残ったままと考えていいんでしょうか?

ユーザーとしてみると、そこまで考えなくて済むんですが、
いざ開発となると、そうもいかなくて
タスクマネージャと格闘しながら使っています。



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

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=liLpi
------------------------------------------------------[freeml byGMO]--

たにかわ

unread,
Apr 27, 2014, 9:22:06 PM4/27/14
to delphi...@freeml.com
こんにちは、たにかわと申します。

> そこでなんですが、このTEditの見た目を
> 箱型にすることはできないんでしょうか?

既に解決済みかもしれませんが、AndroidでしたらAndroidDiamondスタイルを適用すると、TEditはWindowsに近い印象になると思います。以下のリンクの、一番左下の画像が参考になるかと…

http://blogs.embarcadero.com/sarinadupont/2013/09/25/firemonkey-xe5-premium-style-pack-is-now-available/

使用方法は以下の通りですが、プロジェクトリソースから動的にロードすると起動が遅いような印象を受けたので、私はTSyleBookを貼り付けて設計時に読み込んで使っています。

http://docwiki.embarcadero.com/RADStudio/XE5/ja/%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%81%8A%E3%82%88%E3%81%B3%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0_FireMonkey_%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%AE%E5%8F%96%E3%82%8A%E6%89%B1%E3%81%84


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

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=liMck
------------------------------------------------------[freeml byGMO]--

レオン

unread,
Apr 27, 2014, 9:40:25 PM4/27/14
to delphi...@freeml.com
たにかわさん、こんにちは。
細川さんがスタイルのお話をしていたのはそういうわけだったんですね!

先ほど書きこんでから、トピックと話題がずれてしまったかな?と
思っていたんですが、スタイルの件はいくつかチェックしただけでした。
話題が広がりすぎた先ほどの私の発言は
別のスレッドにしたほうがよかったかもしれませんね。

当初のトピックの内容は、たにかわさんのお話で解決しました。
どうもありがとうございます!




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

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=liMtz
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Apr 29, 2014, 10:25:28 PM4/29/14
to delphi...@freeml.com
團さん

こんにちは。
細川です。

Activty については、下記にまとめてあるので、1度ご覧いただければと思いま
す。

http://www.slideshare.net/pik256/android-34105130

Galaxy は Android といえないレベルの改造が施されているので、より使いづら
いかもしれません。
このあたりについては、下記の記事をご覧ください。

----------------------------------
サムスンが活用したのは「タッチウィズ」という自社端末専用スキン。これをア
ンドロイド上のすべてのソフトウエアの動きにかぶせ、アンドロイドとは認識で
きないようにした

それにより悪化してしまったことがある。サムスンは電話のダイヤル機能やカレ
ンダー、電子メールソフト、連絡先、お知らせ機能、音楽・動画プレーヤー、音
声認識などソフトウエアの大部分を自社のアプリに切り替え、アンドロイドの性
能を落とし始めた

アンドロイドに対抗するOS「Tizen(タイゼン)」を構築し始めた。タイゼン
はタッチウィズのインターフェースのおかげで、一般のユーザーにとってはほと
んど同じに見える

■グーグル、モトローラ使ってサムスンに2度の打撃
http://www.nikkei.com/article/DGXNASFK19033_Z10C14A2000000/
----------------------------------


> ソフトの用意するボタンと、ハード側にある
> いわゆる戻るボタンのようなものの使い分けが感覚的にわかりづらくて
> ついていけないんです。

基本的には「戻る」ボタンは、ハードのものだけ使用していれば良いです。
ですが、ソフト側に「戻る」ボタンがあるものは、

1)iPhone と同じ見た目にこだわったしきたりを知らない者が作った
2)iOS/Android クロス開発環境で作った
3)Unity などの 1 Activity だけしか使えない環境で作った

のいずれかになると思います。

1については、もう論外ですが、3については仕方ありません。

重要なのは2です。Delphi も何も考えずに作ると、そうなる可能性が高いです。
Delphi では TForm が Activity になるので、本来ソフトウェアの戻るボタンは
必要ありません。

ですが、画面遷移のアニメーション効果などを考えたときに、1枚の TForm で
済ませることは良くあります。
1枚の TForm で作ると、ハードウェアの戻るボタンは Activity を1枚戻すだ
けなので、TForm の状態はそのままで、前の Activity に戻ります。
次に、Delphi のアプリを立ち上げると(プロセスが残っていれば)以前の状態
が表示されてしまいます。

これを防ぐためには、状態を保存しておき OnShow/OnActivate などで表示を初
期状態に戻すなどの工夫が必要です。
(NativeActivity ではなく普通の Activity では onNewIntent が使えます)

ちなみに、Galaxy では Android に対して極悪非道な改造が施されているので、
static 変数は使用できないに等しいですが、Delphi は Native なため、Dalvik
周りの改造の影響を考えなくて済みます。
ですので、静的変数に状態を保存しておけます。

> たとえば、背後に回ったアクティビティは消されても仕方ありませんが
> とあるアプリから呼び出されたアクティビティだった場合は
> アプリのプロセスは残ったままと考えていいんでしょうか?

呼び出し元のアプリのプロセスは残ったままになるかもしれませんし、
LowMemory 状態であれば、消えているかもしれません。
そのために、onActivityResult があります…が、TForm では onActivityResult
は見せて貰えていません(com.embarcadero.FMXNativeActivty には
onActivityResult があり、たとえば TTakePhotoFromLibraryAction では、この
あたりの仕組みを使っています)。

で、ここが公開されていないので正攻法では、ほかのアプリケーションから値を
受ける事ができません。
面倒ですが、1クッション挟んで、Java の Activity(transparent)を
startActivity で呼び出して、そこからさらに startActivity をする、といっ
た面倒な手順が必要です。

ほかの Activity などが含まれた classes.dex を Delphi アプリケーションに
組み込む方法は、下記のエンバカデロ・Team Japan のブログにあります。

http://blogs.embarcadero.com/teamj/2014/03/12/4356/
Regards,
HOSOKAWA Jun
[S/G] SERIALGAMES Inc.
TEL: 03-5812-0980
FAX: 03-5812-0970
twitter: http://twitter.com/serialgames
twitter: http://twitter.com/flaver_sg
mailto: j...@serialgames.co.jp
fla:ver http://flaver.jp/


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

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=ljr0n
------------------------------------------------------[freeml byGMO]--

レオン

unread,
May 5, 2014, 8:36:26 AM5/5/14
to delphi...@freeml.com
細川さん
ご親切にありがとうございます。

アクティビティ・スタックというのは初めて知りました。
バックボタンとアクティビティの関係もなんとなく見えてきました。

また、SAMSUNGの端末が変わり種であることもよくわかりました。
嫁さんがiPhoneで私がGalaxyなので、別のSIMフリーの端末の
使用も検討してます。

JavaのActivityの使い方や
classes.dexのマージについては、もう少し勉強しますが
Delphiで開発していて立ち止まってしまったことがあります。
複数画面(フォームを持ったActivity)を作りたいときFMのMobileアプリを
指定した後、フォーム追加で追加されるのは、初期フォーム(Activity)とは
違うものなんでしょうか?
ShowModalを使って表示しようと思っても、Galaxyに転送して実行すると
「ご使用の端末ではサポートされていない」旨のエラーが出て、
2つ目のフォームが表示されません。

複数の画面を用意するには、新規作成の時に候補にある
スマートフォン用マスタ/詳細のように、TabControlにするしかないんでしょうか?
たとえばカード型UIを提供する場合などの例です。


>ですが、画面遷移のアニメーション効果などを考えたときに、1枚の TForm で
>済ませることは良くあります。

このお話のくだりは、自分のアプリから、ほかのアプリのアクティビティを
呼び出した場合、と解釈したのですが、正しいですか?

いろいろあって申しわけありません。



2014年4月30日 11:25 hosokawa <delphi...@freeml.com>:



--
 
 ====================================================
  Masashi DAN
  masas...@gmail.com
  http://camaieu.oniromancie.com/
  http://camaieu-blog.oniromancie.com/
                          All of Me Jazz Ensemble
====================================================

な~んち

unread,
May 6, 2014, 10:12:49 PM5/6/14
to delphi...@freeml.com
レオンさん

横から失礼します。な~んちといいます。
私のほうでは、showmodalではなくshowでやっています。
手元の2台のAndroidでは動作しています。
正しいのかどうかはわかりませんが、情報提供として。
http://ad.freeml.com/cgi-bin/sa.cgi?id=lkMfv
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
May 6, 2014, 11:54:05 PM5/6/14
to delphi...@freeml.com
團さん

こんにちは。
細川です。

> 複数画面(フォームを持ったActivity)を作りたいときFMのMobileアプリを
> 指定した後、フォーム追加で追加されるのは、初期フォーム(Activity)とは
> 違うものなんでしょうか?
> ShowModalを使って表示しようと思っても、Galaxyに転送して実行すると
> 「ご使用の端末ではサポートされていない」旨のエラーが出て、
> 2つ目のフォームが表示されません。

Activity(TForm)に対して、ShowModal は使えません。
Show を使ってください。
Activity は、そもそも1画面に1枚しか表示されないので、ShowModal である
必要が無いのです。

> >ですが、画面遷移のアニメーション効果などを考えたときに、1枚の TForm で
> >済ませることは良くあります。
>
> このお話のくだりは、自分のアプリから、ほかのアプリのアクティビティを
> 呼び出した場合、と解釈したのですが、正しいですか?

自分自身の話です。

TForm1 → TForm2 を呼び出す時に、アニメーションをつけられません。
そのため、スライドしながら表示するといった事をしたい場合に、Panel を複数
並べたりします。
そうすると、TForm1 しか存在しないので、状態を自分で管理する必要があると
いうことです。



On Mon, 5 May 2014 21:36:24 +0900 (JST)
http://ad.freeml.com/cgi-bin/sa.cgi?id=lkNDc
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages