Gridの幅の限界?

解決


nish  2005-09-08 13:41:53  No: 17470  IP: 192.*.*.*

StringGridに3つの項目「A」「B」「C」とします。
「C」の幅を一定の大きさまで広げると
「グリッドインデックスが範囲を超えています」と
エラーになります。
が、項目「A」「B」の幅をいくら広げても同エラーはおきません。

Gridの一番右の列の幅には制限があるのですか?
Delphi6.0 Pro使用です。

編集 削除
広げるにも程がある  2005-09-08 14:37:52  No: 17471  IP: 192.*.*.*

いったいどこまで広げたのかな?
カラム幅を32000以上に広げると Gridの表示がおかしくなってしまうげど、それでもエラーは出ない。

編集 削除
nish  2005-09-08 15:29:50  No: 17472  IP: 192.*.*.*

まずStringGrid自体はサイズ変更不可で幅は300位です。
「C」を900位まで広げます。
それで「C」の幅を一気に500位広げます。
ここで200位だとエラーおきません。
500位広げる感じでやるとでます。

リスト幅300 _____________________↓ここから画面の端まで広げる
C幅900位    |  C                |→→→→→→→→→→→
            |  スクロールバー   |

わかります?
エラーでませんか?

編集 削除
nish  2005-09-08 17:10:15  No: 17473  IP: 192.*.*.*

わかったような・・・
幅にもMax値があるようでMax値を超えると
次のカラムの幅も変更するみたいですね!?
次のカラムがないのでインデックスエラーと。。。

誰か〜あってます???

編集 削除
Basser  2005-09-08 18:07:22  No: 17474  IP: 192.*.*.*

>次のカラムの幅も変更するみたいですね!?
>次のカラムがないのでインデックスエラーと。。。

変更しません。

Grid.pas の TCustomGrid.CalcSizingState を見てみると、
特定条件で最終列の幅がグリッドの幅を超えている場合に、
カラムインデックスの取得ができず(-1が返っている)に起こるようです。

編集 削除