DBGRIDの縦スクロールバーが消える

解決


なんば  2008-04-01 00:15:20  No: 30328

DBGRIDの縦スクロールバーが最初は出ているのですが、
何度もEmptyDataSet;とかを繰り返すと、表示する場合と非表示の場合があります。
強制的に縦スクロールバーを出す方法はありますか。


Ru  2008-04-01 05:42:24  No: 30329

>EmptyDataSet;とかを
『とかを』とありますが他に何かしているのでしょうか?
下記ボタンイベントを交互にしている動かしている限りでは
縦スクロールバーが消失することはありませんでした。

Delphi7
WindowsXP SP2

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientDataSet1.EmptyDataSet;
end;


めじな  2008-04-22 23:41:25  No: 30330

今更ながらですが・・・
しかも不確かな情報ですが・・・

以前 Win2000+Del7 環境で同様の現象が出た事がありました。
その時は検索する度に縦スクロールバーが交互に出たり消えたりしていました。
原因は分からなかったのですがXP機でコンパイルすると発生しない現象だった
ため、以後 Win2K機 を使わずに開発を進めた経験があります。

ご参考になれば。


なんば  2008-04-23 02:28:11  No: 30331

めじなさんのおっしゃる通りなんです。
WinXP+Del7で開発していますが、いまだ起こります。
      CDSMei.DisableControls;
      CDSMei.EmptyDataSet;
      CDSMei.First;
            :
            : 
      CDSMei.Append;
            :
            : 
      CDSMei.First;
      CDSMei.EnableControls;

上記の記述をしています。

以前は下のように書いていましたが、今は逆(上のよう)にかえました。これで消える頻度が落ちたかなといったレベルです。
  
      CDSMei.EmptyDataSet;
      CDSMei.DisableControls;

来月から本格的に動かします。実際のところ逃げ道を探しています。


igy  2008-04-23 03:48:57  No: 30332

Delphi5のときで、垂直スクロールバーが表示しないことがあったときは、
以下のように感じで対応した記憶があります。

procedure TForm1.DataSource1DataChange(Sender: TObject;
  Field: TField);
var
    siv: TScrollInfo;
    hWnd: THandle;
begin
    hWnd := DBGrid1.Handle;

    // SB_VERT 情報取得
    siv.cbSize := sizeof(siv);
    siv.fMask  := SIF_ALL;
    GetScrollInfo(hWnd, SB_VERT, siv);
    
    if (siv.nMin = 0) and (siv.nMax = 100) and (siv.nPage = 0) and (siv.nPos = 0) then
    begin
        // SB_VERT 情報更新
        with siv do
        begin
            nMin  := 0;
            nMax  := 0;
            nPage := 1;
            nPos  := 0;
        end;
        SetScrollInfo(hWnd, SB_VERT, siv, True);
    end;
end;


なんば  2008-04-25 00:49:24  No: 30333

igy様
なんとお礼を申し上げれば良いか。
頂いたコードで全てが解決しました。
今はスクロールバーが消える事もなく動作しております。

コードまでご提示いただき、心から感謝しております。
ありがとうございました。


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

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






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