MSFlexGridへの直接書き込みについて

[戻る]
こうじ 2002/01/28(月) 01:31:57
VC初心者です.MSFlexGridのセルに,EditBoxで直接入力を試みています.
GetCellLeft()等を使って,セル位置の数値を取得できているようなのですが,
EditBoxをその位置に出現させることができません.因みに,EditBoxの座標位置
の変更はMoveWindow()でやっています.
 どなたかご存知の方,ご教授下さい.

EIJI 2002/01/28(月) 11:19:07
グリッドではありませんが、リストボックスで似たようなことを
した経験があります。そのときのソースをみてみると、

CEditに対して、
MoveWindow( &r, FALSE );
SetWindowText( "テキスト" );
ShowWindow( SW_SHOW );
SetFocus();
SetModify( FALSE );
SetLimitText( 長さ制限 );
SetSel( 0, -1 );

てな具合に操作してました。
なので、MoveWindow()でうまくいくはずです。

sugar 2002/01/28(月) 15:03:05
実際のエディットボックスの位置と、対象となるセルの位置には
どれくらいの誤差があるのでしょうか。

座標系(スクリーン座標/クライアント座標)という観点では、間違いありませんか?
クライアント座標の場合、どのウィンドウにおける座標なのか、ということも含めて。

こうじ 2002/01/28(月) 19:06:24
EIJIさん,sugarさん,早速のレスありがとうございます.

>実際のエディットボックスの位置と、対象となるセルの位置には
>どれくらいの誤差があるのでしょうか。
>座標系(スクリーン座標/クライアント座標)という観点では、間違いありませんか?

sugarさん,相当ずれるというか画面から消えてしまいます.GetCell..で得た値を15で割る
と,結構いいところにでてきます.ご指摘のように座標系に何らかの問題があると思うのです
が,勉強不足のため何をどうすればいいのかわかりません.もうちょっと勉強してみます.

以上.

こうじ 2002/01/29(火) 21:23:59
[[解決]]
こんな感じでとりあえずは適正表記できました.しかし,まだ問題はあります.MSFlexGeidの
スクロールバーを動かして,Gridの上部が画面からみえなくなったとき,Editboxがずれてしま
います.まだまだ勉強すべき課題が多いようです.
アドバイスして下さった皆さん,どうもありがとうございました.

//セルの位置(Grid の左上が 0), twips単位
    long x = m_fx.GetCellLeft();
    long y = m_fx.GetCellTop();
    long h = m_fx.GetCellHeight();
    long w = m_fx.GetCellWidth();



    //1インチ当りのピクセル数
    CDC* pGridDC = m_fx.GetDC();
    long pixelsx = pGridDC->GetDeviceCaps(LOGPIXELSX); //横方向
    long pixelsy = pGridDC->GetDeviceCaps(LOGPIXELSY); //縦方向

    //セルの位置(Grid の左上が 0),pixel単位
    x=x*pixelsx/1440, y=y*pixelsy/1440,
    h=h*pixelsy/1440,w=w*pixelsx/1440;
    

      m_edit.MoveWindow(x+11,y+11,w,h,true);
      m_edit.SetFocus();

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