Curl Global Community
Worksheetオブジェクトのセルに複数のTextFieldを入れたい - 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: Worksheetオブジェクトのセルに複数のTextFieldを入れたい (/showthread.php?tid=404)



Worksheetオブジェクトのセルに複数のTextFieldを入れたい - usami - 02-08-2012

Worksheetオブジェクトの1つのセルに、TextFieldを縦に2つ配置したいのですが、
どのように配置すればよいのでしょうか?
2行のセルにそれぞれTextFieldオブジェクトを設定し、行の結合を行えばできるかと思いますが、
なるべく1つのセルに入れたい考えです。Worksheetのイメージは添付ファイルのとおりです。



RE: Worksheetオブジェクトのセルに複数のTextFieldを入れたい - dankom - 02-14-2012

WorksheetオブジェクトとはCurl External Libraryに含まれている、
Worksheetクラスのことでしょうか。

それならば、単純にVBoxでくくったTextFieldを入れてやればいいのではないでしょうか。
こんな感じで…


{import * from COM.CURL.EXT.WORKSHEET}
{Worksheet
4, 2, {widths 60pt, 1in},
font-size = 10pt, font-family = "Tahoma",
scrollable? = false,
border-width = 1px,

row = 0, col = 0,
row-height = .25in, colspan = 2, {big Sample Worksheet},

row = 1, col = 0, "Quantity", {input-cell domain = int, 0},

row = 2, col = 0, row-height = 1in,
{VBox
"Price",
{TextField width = 50pt, value = "test1"},
{TextField width = 50pt, value = "test2"}
},

{input-cell domain = DataSource.currency-domain, 0.0},

row = 3, col = 0,
{value-cell halign = "right", "Total"},
{formula-cell
domain = DataSource.currency-domain,
{proc {destBig GrinataRef, aBig GrinataRef, bBig GrinataRef}:void
set dest.value = a.as-double * b.as-double
},
{RelativeCellRef -2, 0},
{RelativeCellRef -1, 0}
}
}


RE: Worksheetオブジェクトのセルに複数のTextFieldを入れたい - usami - 02-14-2012

ありがとうございます。

この例では、Quantityにカーソルがある状態でtabキーを押したときにtest1,test2,priceの順に遷移させたいですが、tabキーを押して遷移させてもtest1やtest2の項目には行きません。
また、Quantityにカーソルがある状態でtest1にマウスクリックしてもQuantityに戻ってしまいます。
input-cellのui-specプロパティにこんな感じにVBoxでも入れることができれば実現できそうな感じですが、入れるとアサーションの失敗でエラーになってしまいます。
{input-cell ui-spec =
 {VBox
  "Price",
  {TextField width = 50pt, value = "test1"},
  {TextField width = 50pt, value = "test2"}
 },""}



RE: Worksheetオブジェクトのセルに複数のTextFieldを入れたい - dankom - 02-16-2012

あーなるほど、入力させることも視野にいれてるんですね。

ちょっとソースコード見てみましたが、今のWorksheetのつくりでは難しいような
気がします。



{input-cell ui-spec =
{proc {cv:CellValue}:Visual
set cv.spec._locked? = true
{return

{VBox

"Price",

{TextField width = 50pt, value = "test1"},
{TextField width = 50pt, value = "test2"}
}
}
}
},
""
}

ui-specの指定でこのようにprocを指定してVisualを返すことができ、
その中でCellSpecの_locked?プロパティを変えてやるとアサーションエラーは
発生しませんが、勿論tabキーでの遷移はうまくいきません。

どうもフォーカスが当たったときに編集用のエディタにはValueControlしかダメなようで、
今回のようにVBoxなどのVisualではあくまでも表示用ということになり、
フォーカスが当たらず遷移対象から無視されるみたいです。