StringGridのスクロールバーのページサイズを変更するには

解決


ゆゆ  2005-10-27 10:17:33  No: 18292

StringGridのスクロールバーを、他のコンポーネントのスクロールバーの様に
全体の行数に応じて大きさが変わるようにできないでしょうか?

例えば、RowCountが100行のときに表示されている行数が20行の場合に20%の
サイズになる様にしたいのですが。


えーと  2005-10-27 11:19:34  No: 18293

こことか

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=065498

めんどくさそうですね。


マージ・ジルマ・マジ・ジンガ  2005-10-27 12:46:43  No: 18294

こんなのでどうでしょう?
フォームにStringGrid1とTutton1を配置し、Button1のクリックイベントを
下記の様に記述。

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    initMax:integer;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  SI: TScrollInfo;
begin
  SI.cbSize := SizeOf(TScrollInfo);
  SI.fMask := SIF_RANGE or SIF_PAGE;
  GetScrollInfo(StringGrid1.Handle,SB_VERT,SI);

  SI.nPage := StringGrid1.VisibleRowCount;
  SI.nMin  := 0;
  SI.nMax  := StringGrid1.RowCount + StringGrid1.VisibleRowCount;

  SetScrollInfo(StringGrid1.Handle,SB_VERT,SI,true);
end;


ゆゆ  2005-10-28 09:13:56  No: 18295

マージ・ジルマ・マジ・ジンガさん、ありがとうございます。
このプログラムのままだと、一番下までスクロールできないので、

  SI.nMin := 0 の部分を

  SI.nMin := StringGrid1.FixedRows と変更すると

うまく動きました。

ただ、RowCountの値を変更してしまうと変な動きになってしまいます。
他にもいろいろなタイミングでスクロールバーの設定が変になってしまいます。

どなたかいい方法をご存じないでしょうか?


通りすがり  2005-10-28 09:22:55  No: 18296

>うまく動きました。

>ただ、RowCountの値を変更してしまうと変な動きになってしまいます。

うまく動いてないじゃん!


えーと  2005-10-28 09:34:38  No: 18297

なんで無視されるかなぁ・・・ちゃんと動くのに


通りすがり  2005-10-28 10:42:49  No: 18298

>なんで無視されるかなぁ・・・ちゃんと動くのに
意味がわからない・・・


ゆゆ  2005-10-28 10:51:47  No: 18299

>なんで無視されるかなぁ・・・ちゃんと動くのに
無視しているわけじゃないんですよ。情報ありがとうございます。

ただ、初心者なもんで内容が理解できずに途方に暮れていたところで
マージ・ジルマ・マジ・ジンガさんがサンプルソースをつけてくれたもの
ですから、そちらを頼りに進めていました。

お礼が遅れてごめんなさい。


Delphi初心者  2005-10-28 19:08:41  No: 18300

Delphian Worldにそんなコンポーネントありますよ。
http://www6.airnet.ne.jp/~sone_san/delphi/


ゆゆ  2005-10-31 23:33:04  No: 18301

ありがとうございます。さっそく使いました。うまく動いています。
ソースを見たけどかなり大変なことをやっているみたいですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加