MSFlexGridへの直接書き込みについて – プログラミング – Home

MSFlexGridへの直接書き込みに...
 
通知
すべてクリア

[解決済] MSFlexGridへの直接書き込みについて


こうじ
 こうじ
(@こうじ)
ゲスト
結合: 24年前
投稿: 23
Topic starter  

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


引用未解決
トピックタグ
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 25年前
投稿: 76
 

グリッドではありませんが、リストボックスで似たようなことを
した経験があります。そのときのソースをみてみると、

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

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


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

実際のエディットボックスの位置と、対象となるセルの位置には
どれくらいの誤差があるのでしょうか。

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


返信引用
こうじ
 こうじ
(@こうじ)
ゲスト
結合: 24年前
投稿: 23
Topic starter  

EIJIさん,sugarさん,早速のレスありがとうございます.

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

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

以上.


返信引用
こうじ
 こうじ
(@こうじ)
ゲスト
結合: 24年前
投稿: 23
Topic starter  

こんな感じでとりあえずは適正表記できました.しかし,まだ問題はあります.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();


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました