いつもお世話になっております。
早速質問させていただきます。
VC++6.0 WINDOWS XPで製作しています。
MSFlexGridで、各セルの表示文字数を指定し、それを超えたら;をつけて続きがあるこ
とを明示したいのですが皆目検討がつかず、困っております。
どうか、ご存知の方分かりやすく教えていただけないでしょうか??
追加です
Win32
MSFlexGridのバージョンが6.0です
・セルに渡す文字列の長さをチェック
・規定文字数を超えていたら文字列を加工する
・SetTextMatrix
で実現可能と思いますが的外れだったらごめんなさい。
.さんご回答ありがとうございます。試して見ます。
いろいろ試してみたのですが、どれも自分にあった処理ができず困っています。
できれば、グリッドのセルにカーソルを移動したら全文が表示されるようにしたいので
すが、そのようなことはできるのでしょうか??
>全文が表示されるようにしたいので
どこに全文が表示されるようにしたいのですか?
セルの幅が延びるとか、ツールヒントのように
別のウィンドウが出てきて全文表示されるとか。
#問題が2つになってますけど、.さんの方法は
#なにか問題がありましたか?
にさん回答ありがとうございます。返答が遅くなって申し訳ありません。
>どこに全文が表示されるようにしたいのですか?
にさんがおっしゃる通り、セル幅が伸びて全文表示できるようにしたいのですが、それ
は可能ですか?
>#問題が2つになってますけど、.さんの方法は
>#なにか問題がありましたか?
.さんの方法だと私には、省略してしまった文字が確認できなくなってしまったので、全
文が確認できるようにしたいと考えたのですが。
> にさんがおっしゃる通り、セル幅が伸びて全文表示できるようにしたいのですが、
> それは可能ですか?
部分的に見るとそういう挙動なんでしょうけれど、
例えば特定のセルが横方向に伸びたとしてそのセルと同じカラムにあるセルも
影響を受けてしまうと思いますけれど、本当に良いのでしょうか?
ツールチップのような方法で表示をする方が多分他のセルに影響が出ないので
良いような気もしますけれど。
それともセルの幅を伸ばすと全文が表示されると言うイメージなんですか?
もしかして他のセルを選択するとそれにあわせてセルの幅が勝手に変わるとか
そういう仕様なんですかねぇ。
> .さんの方法だと私には、省略してしまった文字が確認できなくなってしまったので、全
> 文が確認できるようにしたいと考えたのですが。
.さんの方法は、セルに引き渡す文字列はグリッド以外の所できちんと全て保持している事が
前提だと思いますよ。そうしないと引き渡す文字列を編集して対処すると言うのは無理だと
思います。gridに全文渡して表示だけを変えるような事をするのであれば、描画部分を
乗っ取って処理しないと無理でしょう。
そこまでしたく無いのであれば、元の情報はきちんと取っておいた上で表示上の文字列
だけを編集してしまう方が手段としては楽だと思います。
PATIO さんご回答ありがとうございます。
>ツールチップのような方法で表示をする方が多分他のセルに影響が出ないので
>良いような気もしますけれど。
とありますが、ツールチップとは一体どういったものなのですか?無知ですいません。
えーと、まずはツールチップでgoogleとかで検索してほしいです。
多分質問するよりも検索して調べた方がよっぽど早いですし。
掲示板の場合、レスポンスを待つしか方法が無いので
調べる方法としてはもっとも消極的な方法ですし、
どんぴしゃなレスポンスが付くとは限りません。
レスポンスにしても何の保障も無い情報です。
結局は自分で情報の真偽を確認する必要があります。
検索を進めるのは結果を得られるまでのスピードが検索の方が
早い可能性が結構あるからです。
エクスプローラーのフォルダーの所でフォルダー名が少し隠れるように
幅を狭くしてみて、そのフォルダー名の上にマウスを持ってくると表示される物が
それになります。確認してみてください。
PATIO さん本当に無知ですいません。
>ツールチップのような方法で表示をする方が多分他のセルに影響が出ないので
>良いような気もしますけれど。
はじめそのように考えていたのですが、どう手をつけてよいか分からず、ここに質問し
たところ、.さんや、にさんのアドバイスを取り入れつつ、試行錯誤してきました。
ツールチップをGoogleで検索したところ、
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TOOLTIP.html
参考になるサイトがあったのでもう一度挑戦してみたいと思います。
また分からないところがあったらその時は、お願いします
ツールチップで、10文字以上だったらツールチップを表示させたいのですが、
文字数をカウントする関数などってあるのですか?教えてください。
>文字数をカウントする関数
文字数なのか、バイト数なのかどっちでしょうか?
VC6の場合,デフォルトの設定ならば、CStringのGetLengthメソッドで
バイト数が取得できます。(もしくはstrlen)
文字数を取りたいのであれば、_mbslenを使うことになるでしょう。
# というか strlen なんてC言語の初歩中の初歩ですけど。
CString s(あいうえお);
CString buff;
buff.Format(バイト数: %d\n文字数:%d,
s.GetLength(), _mbslen((const unsigned char*)((LPCTSTR)s)));
AfxMessageBox(buff);
UNICODEの場合は、CP932(Shift_JIS)に変換してstrlenを使えばバイト数
が取れます。
Blue さんありがとうございます。
まだCを始めて2週間だらずの超初心者なもので・・・
分かりやすいアドバイスありがとうございます。
C言語とかC++言語とか言語レベルの知識が無いのであれば、
そっちの勉強からしないと多分、へんな所でハマってしまって
先に進めない状態になりかねないと思いますよ。
ウインドウ周りのプログラミングは言語の知識の上にさらに
ウインドウ周りの知識まで必要になりますから
いっぺんにやろうとすると2倍、3倍の苦労をするハメになります。
できれば、言語の勉強をきちんとしてからウインドウ周りに
手を出した方が良いと思いますよ。