トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     DataGridのheaderStyleを、_globalですべてのDataGridに設定したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tamakawa
Åê¹ÆNo.18243
投稿日時: 2005-6-21 15:10
新米
居住地:
投稿: 5
使用環境:
WinXP,Flash MX2004Proffesional
DataGridのheaderStyleを、_globalですべてのDataGridに設定したい

いつも勉強させていただきます。

表題の通り、DataGridのheaderStyleを、_globalですべてのDataGridに設定したいと考えております。

サイト内検索したところ、同じような問題を投稿された方がいましたが、解決策が見つかっていないようでした。

DataGridのスタイルを、すべてに設定する場合、ヘルプを確認したところ、以下のようにすると、設定することが出来ました。


import mx.styles.CSSStyleDeclaration;

if (_global.styles.DataGrid == undefined) {
  _global.styles.DataGrid = new CSSStyleDeclaration();
}
_global.styles.DataGrid.setStyle("alternatingRowColors", Array(0xFFF9F0, 0xFFFFFF));


このコードを参照して、DataGridのheaderStyleにも設定しようと、以下のコードを書きました。


import mx.styles.CSSStyleDeclaration;

headerStyles = new CSSStyleDeclaration();
headerStyles.setStyle("color", "0x993300");
headerStyles.setStyle("textAlign", "center");
headerStyles.setStyle("fontSize", 12);

if (_global.styles.DataGrid == undefined) {
  _global.styles.DataGrid = new CSSStyleDeclaration();
}
_global.styles.DataGrid.setStyle("headerStyle", headerStyles);


このようにコードを記述しても、スタイルの設定は出来ませんでした。

ちなみに、「_global」ではなく、「インスタンス名.setStyle」では、うまくいきました。

もし、解決された方がいましたら、よろしくお願いします。
野中文雄
Åê¹ÆNo.18438
投稿日時: 2005-6-28 1:14
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: DataGridのheaderStyleを、_globalですべてのDataGridに設定したい
遅レスのうえ、お役には立ちませんけど、現象を確認しました。確かに、"headerStyle"を_global.styles.DataGridに設定しても、効果はありませんでした。

場外でyouichさんにも確認していただいたところ、DataGridインスタンスのスタイル設定を外すと、_global.styles.DataGridが反映されることは判明しました。もっとも、すべてのDataGridインスタンスにその処理を行うのは、インスタンスに個別のスタイル設定をするのと変わりませんね。
引用:
tamakawaさんは書きました:
import mx.styles.CSSStyleDeclaration;

headerStyles = new CSSStyleDeclaration();
headerStyles.setStyle("color", "0x993300");
headerStyles.setStyle("textAlign", "center");
headerStyles.setStyle("fontSize", 12);

if (_global.styles.DataGrid == undefined) {
  _global.styles.DataGrid = new CSSStyleDeclaration();
}
_global.styles.DataGrid.setStyle("headerStyle", headerStyles);
インスタンス.setStyle("headerStyle", undefined);
このようにコードを記述しても、スタイルの設定は出来ませんでした。

ちなみに、「_global」ではなく、「インスタンス名.setStyle」では、うまくいきました。

FLASH-DBに、類似の投稿がありました。しかし、やはり解決には至らなかったようです。


----------------
 

tamakawa
Åê¹ÆNo.18441
投稿日時: 2005-6-28 9:56
新米
居住地:
投稿: 5
使用環境:
WinXP,Flash MX2004Proffesional
Re: DataGridのheaderStyleを、_globalですべてのDataGridに設定したい
野中様、ご返信ありがとうございます。

引用:
遅レスのうえ、お役には立ちませんけど、現象を確認しました


とんでもないです。いろいろと調べていただいて、ありがとうございました。

「出来ない」ということがわかりましたので、また別の方法をいろいろ試してみたいと思います。


次のヴァージョンで、Flashコンポーネントも、もっと軽くなり、このような痒いところに手が届くようになることを祈ります。
youich
Åê¹ÆNo.18450
投稿日時: 2005-6-28 16:32
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: DataGridのheaderStyleを、_globalですべてのDataGridに設定したい
引用:

「出来ない」ということがわかりましたので、また別の方法をいろいろ試してみたいと思います。

「出来ない」ということじゃないですよ、UIComponentのソースもあるし、
丁寧にコードを読んでいけば解決法が解るはずです。

今見た所では、まず
DataGridのheaderSyleは
HaloThema.fla -> FlashUIComponents2 -> Themes ->MMDefault -> DataGridAssets ->assetsレイヤーで

#initclip 1
mx.controls.DataGrid.prototype.headerStyle = _global.styles.dataGridStyles;  
#endinitclip
と一度定義されています。

で、最終的にstyleを適用する時にスタイルの値を得る為のDataGridColumn.getStyle -> DataGrid.getStyle (UIObject.getStyle)は以下のようになっていますが

//UIObject#getStyle
function getStyle(styleProp:String)
{
	var v = undefined;

	_global.getStyleCounter ++;

	// see if it is in-line
	if (this[styleProp] != undefined)
	{
		return this[styleProp];
	}

ここでthis['headerStyel'] != undefined となるので_global.styles.DataGrid.setStyleの変更が反映されないんじゃないかと思います。
これがなんでこうなるのか、もともとこれが期待する動作?ちょっと解りません。

_global.styles.DataGrid.setStyle("headerStyle", headerStyles);
とやった時に呼ばれる_level0.notifyStyleChangeInChildrenがおかしいのかな。。。

とりあえず、↓でもいいと思うんですけどどうでしょう?問題あるかな?

import mx.styles.CSSStyleDeclaration;
headerStyles = new CSSStyleDeclaration();
headerStyles.setStyle("color", "0xFF0000");
headerStyles.setStyle("textAlign", "center");
headerStyles.setStyle("fontSize", 18);
if (_global.styles.DataGrid == undefined) {
	_global.styles.DataGrid = new CSSStyleDeclaration();
}
mx.controls.DataGrid.prototype.headerStyle = undefined;
myDP = new Array({name:"Chris", price:"Priceless"}, {name:"Nigel", price:"Cheap"});
myDataGrid.dataProvider = myDP;
_global.styles.DataGrid.setStyle("headerStyle", headerStyles);
/*
this.onEnterFrame = function() {
	mx.controls.DataGrid.prototype.headerStyle = _global.styles.dataGridStyles;
	delete this.onEnterFrame;
};
*/

どなたかお暇な方詰めてくださいー(笑)


----------------
- yo

tamakawa
Åê¹ÆNo.18631
投稿日時: 2005-7-6 9:20
新米
居住地:
投稿: 5
使用環境:
WinXP,Flash MX2004Proffesional
Re: DataGridのheaderStyleを、_globalですべてのDataGridに設定したい

youichさん、返信ありがとうございます。遅くなって申し訳ありませんでした。

引用:
「出来ない」ということじゃないですよ、UIComponentのソースもあるし、丁寧にコードを読んでいけば解決法が解るはずです。


自分で解析するのは難しいそうですが、上記のyouichさんの途中経過を参考にしながら、挑戦したいと思います!

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops