TextFlowBox内の文字列変更について - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: TextFlowBox内の文字列変更について (/showthread.php?tid=269) |
TextFlowBox内の文字列変更について - onyo - 09-06-2011 ひょっとしたらすごく簡単なことなのかもしれませんが・・・ TextFlowBoxの文字列を変更する必要があるとき TextFlowBox.clear 後 TextFlowBox.add を使うのが一般的でしょうか? clear を使用してしまうと、指定していたオプションまで消えてしまうのですが なにか方法はありませんでしょうか。 Code: {let tfb:TextFlowBox = {TextFlowBox RE: TextFlowBox内の文字列変更について - ashimo - 09-07-2011 addの戻り値が追加されたオブジェクトだからだとすれば、 これならどうでしょう 。 Code: {let tfb:TextFlowBox = {TextFlowBox RE: TextFlowBox内の文字列変更について - onyo - 09-08-2011 ashimo様 確かに正しく表示されました。 が、なぜなのかイマイチ納得ができておりません。 これでもうまくいきました。 Code: {let tfb:TextFlowBox = {TextFlowBox (09-07-2011, 09:23 AM)ashimo Wrote: addの戻り値が追加されたオブジェクトだからだとすれば、 Visual.addのHELPを参照すると、 Quote:目的: 子アイテムを Visual に追加します。 とありますが、addメソッドの戻りを受けとらないと(ashimo様のソースであればvalueマクロ?)、 適切な値に強制変換されちゃう過程(恐らくサブタイプでなく Visual) でオプションも消えちゃうよってことでしょうか??? RE: TextFlowBox内の文字列変更について - Yuhki - 09-08-2011 (09-08-2011, 10:03 AM)onyo Wrote: 適切な値に強制変換されちゃう過程(恐らくサブタイプでなく Visual)私も最初実行してびっくりしましたが上記の理由ではないようです。 理由としてはオブジェクトの各インスタンスは、グラフィック階層において 1 度だけ生成されるためです。 (ヘルプ:グラフィカル ユーザー インターフェイス>グラフィカル オブジェクト>グラフィック階層>グラフィック階層のオブジェクトのインスタンス 参照) [addメソッドで返されるオブジェクト]=[tfbが内部でもつオブジェクト]=["ここまで\n→こっから"という文字列]であるため、 表示された際に、[addメソッドで返されるオブジェクト]として表示され、実はtfbは中身が表示されずに画面には (上記ソースの場合は文字列の横に)存在しています。 下記ソースで試すとわかりやすいかもしれません。 Code: {let tfb:TextFlowBox = {TextFlowBox RE: TextFlowBox内の文字列変更について - onyo - 09-08-2011 Yuhki様 当方、ashimo様の回答を読み違えてたみたいです。 addの戻りを表示してしまっていたのが原因ってことだったのですね。。。 わかりやすい解説有難う御座いました! 因みに、Yuhki様の、サンプルコードは私が一番初めに なんでだーっ!とハマッていたのと全く同じやつです。 改めて見ると、なるほど、そういうことかと思いました。 RE: TextFlowBox内の文字列変更について - onyo - 09-08-2011 実は元々悩んでいたのは、CommandButton の改行を含むテキストラベルを 動的に変えるにあたってどうすればいいのかでした。 CommandButton.label 内では text-preserve-whitespace? は有効ではないようですが 他に、簡潔な書き方がありますでしょうか? Code: {let hoge:String = "こっから→\nここまで"} RE: TextFlowBox内の文字列変更について - fukuta - 09-08-2011 (09-08-2011, 06:20 PM)onyo Wrote: CommandButton.label 内では text-preserve-whitespace? が効かないのではなくて、CommandButton ではデフォルトで text-breakable?=false だからです。 Code: {CommandButton RE: TextFlowBox内の文字列変更について - onyo - 09-08-2011 fukuta様 (09-08-2011, 07:01 PM)fukuta Wrote: text-preserve-whitespace? が効かないのではなくて、CommandButton ではデフォルトで text-breakable?=false だからです text-breakable?を参照させて頂きました。 なるほど、ディフォルト false だったのですね。。。 有難う御座いました! |