Spread

Q

15

配列化されたTabForm上でのSpreadシートに対するSetLabelの注意点
[内容]
配列化されたTabForm上でSpreadSheetに対するSetLabelを行うと、
最後に追加したLabelの内容が0番目の配列のLabelにも反映されてしまう


A 15
[解決方法]
配列化されたSpreadColumnのTitleプロパティやWidthプロパティなど、
“個々の配列要素(=セル)に適用されないプロパティ”は、内部的に共有されます。
これは、メモリ使用量を削減するために配慮された動作です。
しかし、Tab配列にSpreadを配置すると、すべての配列間で上記の共有状態となってしまうため
最後に追加したLabelの内容が 0番目のLabelにも反映されてしまいます。

これは、Biz/Browserの既知の問題点でございますが、過去のアプリケーションとの
互換性を維持するため今後修正される予定はございません。

この現象を回避するためには、以下のようにTab配列とSpreadを分離して定義するように
していただくようになります。


[サンプルコード]
TabFrame TabFrame1{
	Width = 350;
	Height = 250;
	TabWidth = 60;					
	TabForm TabForm1[] {
	}					
}						
	:
	:					
TabFrame1.TabForm1.insert();
var new_tab = 
	TabFrame1.TabForm1[TabFrame1.TabForm1.length-1];
	new_tab.get("sp.crs");  /* 分離して定義 */
	:					
	:					
						
-----以下 sp.crs -----
						
Spread Spread1{						
	X = 0;					
	Y = 0;					
	Width = 341;					
	Height = 224;					
	SpreadRow SpreadRow1[0]{
		Height=20;				
		SpreadColumn SpreadColumn1{Width = 50;};
		SpreadColumn SpreadColumn2{Width = 50;};
		SpreadColumn SpreadColumn3{Width = 50;};
		SpreadColumn SpreadColumn4{Width = 50;};
		SpreadColumn SpreadColumn5{Width = 50;};
		
	}
}
管理番号:Spd_015
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ