MSFlexGridのアライメント設定の異常

[戻る]
たいちう 2003/02/18(火) 16:24:49
お世話になります、たいちうです。

MSFlexGridのセル内のセンタリングを行ないたく、
SetColAlignmentやSetCellAlignmentで設定をしているのですが、
固定行がある場合、1番左上のセルについては、
defaultの左寄せ以外で表示できません。

プロパティの「スタイル」 - 「書式」でも右寄せできませんし、
OnInitDialog() での設定も無効のようです。

仕様またはバグのため、不可能なのでしょうか?
それとも何か方法があるのでしょうか?
ご存知の方いらっしゃいましたら、宜しくお願いします。


【環境】Windows NT4, Visual C++ 6.0 + Service Pack 5
 
MSFlexGridについては、下記のHPを参考にさせてもらい、
CHogeDlg::OnInitDialog() で、
m_ctlFGrid.SetRow(0);
for (i=0;i<4;i++) {
    m_ctlFGrid.SetCol(i);
    m_ctlFGrid.SetCellAlignment(4);
}
m_ctlFGrid.SetColAlignment(0, 4);
等と設定しています。

【参考にしたHP】
http://ayusya.hp.infoseek.co.jp/Main.html   (トップ)
http://ayusya.hp.infoseek.co.jp/VCGrid.html (トップからの辿り方がわかりませんでし
た)

けみ [E-Mail] 2003/02/25(火) 18:50:46
for (int i=0;i<4;i++) {
    m_ctlFGrid.SetRow(i);
    m_ctlFGrid.SetCol(i);
    m_ctlFGrid.SetText("A");
    m_ctlFGrid.SetCellAlignment(4);
}

左上の位置というのが固定行含むなのか分かりませんが、上記で
試したところ私の環境では表示している文字は全てセンタリング
されました。

固定行・列は1
行・列は10で、それ以外は特にプロパティは変えていません。
WIN2000 VS6 SP5
FlexGridのバージョンは 6.0 です。

SetFixedAlignment (固定行の配置位置)
なんてのもありますので試してみてはどうでしょう。


#m_grd.SetColAlignment(0, 4);
#もうまくいってしまったので別の原因かもしれませんけど。。

たいちう 2003/02/25(火) 19:35:58
[[解決]]
けみ様

回答有り難うございます。

SetTextの後でなら、SetCellAlignmentもSetColAlignmentも使えました。
SetFixedAlignmentは何故か使えませんでした。

ソースはこのようになりました。

m_ctlFGrid.SetRow(0);
for (int i=0;i<4;i++) {
    m_ctlFGrid.SetCol(i);
    if (i==0)
        m_ctlFGrid.SetText("地域");
    m_ctlFGrid.SetCellAlignment(4);
}

"地域"というのは、コントロールのプロパティで設定していたものを再設定しています。
再設定をしない元のソースでは、やはりセンタリングできません。

少なくとも私の環境ではMSFlexGridのバグと認識し、
SetTextを余分に入れることにします。

有り難うございました。

けみ [E-Mail] 2003/02/26(水) 00:51:59
解決されたようですが、気になったので試してみました。

MSFlexGridのプロパティ->スタイル->書式に
|A|B|C
地域
テスト
C
を記述(書式の欄を使ったことがないので正しいかは分かりません)

   m_grd.SetColWidth(0,800);     // スタイルに書くと幅が狭くなってしまうので
   m_grd.SetCol(0);
   m_grd.SetRow(0);
   m_grd.SetCellAlignment(4);

で左上"地域"がセンタリングできました。
たいちうさんの環境ではどうでしょうか?

たいちう 2003/02/26(水) 09:57:28
解決しました。

TRACE(":%s:\n", m_ctlFGrid.GetText());
で確認したところ、このような出力となりました。
:地域    :

空白有りの文字列でセンタリングをしていたためのようです。
プロパティの書式で、コラムの幅を調整するために

地域     |テスト   |C

このように設定してたためだと思います。
でも、テストは ":テスト:" と表示されるし、
センタリングもできるんですけどね。

ここの書式はあまり当てにしないほうが良いようです。
">" を使っての地域の右寄せもできませんし。

古いスレッドには追加発言できません。