アプリ実行中のDBGrid表のハミ出し表示を避けるには

解決


hakkei  2012-03-02 19:06:22  No: 41747

delphi6のアプリ実行中に、DBGrid表の上(枠外)に突然2行ほどハミ出し
表示されます。内容はDBGrid表のものとダブっています。
表全体を検索中に起きるようです。
アプリは実行できるのですが、ハミ出し表示は消えません。
これを避ける方法はないでしょうか。


igy  2012-03-02 20:03:58  No: 41748

>DBGrid表の上(枠外)に突然2行ほどハミ出し表示されます。

これは、今まで表示されていなくて、環境が変わったり、ソースコードを
変更してから出たのですか?
それとも、単純にDBGridを使ったテストプログラムでも発生しますか?

>表全体を検索中に起きるようです。

この部分は、具体的には、ソースコードではどのような記述をしていますか?

他に・・・
OnDrawColumnCellイベントで何か処理をしていますか?
Delphi6は最新のUpdateは適用していますか?


hakkei  2012-03-02 20:16:45  No: 41749

>>DBGrid表の上(枠外)に突然2行ほどハミ出し表示されます。

>これは、今まで表示されていなくて、環境が変わったり、ソースコードを
>変更してから出たのですか?
>それとも、単純にDBGridを使ったテストプログラムでも発生しますか?

WindowsXPで開発した時は問題なかったのですが、Windows7に移してから
気づきました。ソースコードは変更していません。

>>表全体を検索中に起きるようです。

>この部分は、具体的には、ソースコードではどのような記述をしています
>か?

function BRChosa(BTO: Integer): Integer;
var
  N: Integer;
  TNB: Integer;
begin
  for N := 1 to 10 do
    begin
      BRT[N,1] := 0;
    end;
  with  DataModule1.DBISAMQuery2 do
  begin
    TNB := Fields[0].AsInteger;
    N := 0;
    while not EOF do
    begin
      if Fields[6].AsInteger = BTO then
      begin
        N := N + 1;
        BRT[N,1] := Fields[0].AsInteger; // TNB
        BRT[N,2] := Fields[2].AsInteger; // TES
        BRT[N,3] := Fields[3].AsInteger; // COL
        BRT[N,4] := Fields[4].AsInteger; // PST
      end;
      Next;
    end;
    Result := N;
    First;
    MoveBy(TNB - 1); // カーソル戻し
  end;
end;

>OnDrawColumnCellイベントで何か処理をしていますか?

していません。

>Delphi6は最新のUpdateは適用していますか?

していません。

  for N := 1 to 10 do
    begin
      BRT[N,1] := 0;
    end;
  with  DataModule1.DBISAMQuery2 do
  begin
    TNB := Fields[0].AsInteger;
    N := 0;
    while not EOF do
    begin
      if Fields[6].AsInteger = BTO then
      begin
        N := N + 1;
        BRT[N,1] := Fields[0].AsInteger; // TNB
        BRT[N,2] := Fields[2].AsInteger; // TES
        BRT[N,3] := Fields[3].AsInteger; // COL
        BRT[N,4] := Fields[4].AsInteger; // PST
      end;
      Next;
    end;
    Result := N;
    First;
    MoveBy(TNB - 1); // カーソル戻し
  end;
end;


igy  2012-03-02 20:25:05  No: 41750

>>Delphi6は最新のUpdateは適用していますか?
>
>していません。

どのDBGridでも起こるようでしたら、
最新のUpdateを適用してみたり、Windows7のディスプレイドライバが最新か
確認したり、はいかがですか?


hakkei  2012-03-03 01:47:24  No: 41751

>どのDBGridでも起こるようでしたら、
>最新のUpdateを適用してみたり

どのDBGridでも起こるようです。
delphi6のUpdate2とGeneral Update2は適用しましたが、Update3はzip
フォルダで、中を見ても.exeファイルがなく、どう適用するのかわかり
ません。


igy  2012-03-03 03:33:25  No: 41752

>delphi6のUpdate2とGeneral Update2は適用しましたが、Update3はzip
>フォルダで、中を見ても.exeファイルがなく、どう適用するのかわかり
>ません。

そのUpdate3というのが、
http://www.codegear.com/jp/downloads/regusers/delphi
にある、
Delphi 6 Runtime Library Update 3
のことでしたら、リンク先に
>詳細は、こちらのファイルをご覧ください。 
と説明がありますので、それをご確認ください。


hakkei  2012-03-03 04:43:29  No: 41753

>そのUpdate3というのが、
>http://www.codegear.com/jp/downloads/regusers/delphi
>にある、
>Delphi 6 Runtime Library Update 3
>のことでしたら、リンク先に
>>詳細は、こちらのファイルをご覧ください。 
>と説明がありますので、それをご確認ください。

Update3も適用しましたが、変わりはありませんでした。

>Windows7のディスプレイドライバが最新か
>確認したり、はいかがですか?

未熟者で、どのサイトで確認・更新すべきか分かりません。


hakkei  2012-03-03 15:12:14  No: 41754

下記のソースコードで、*印の2行を追加したところ
解決しました。
お世話になりました。

function BRChosa(BTO: Integer): Integer;
var
  N: Integer;
  TNB: Integer;
begin
  for N := 1 to 10 do
    begin
      BRT[N,1] := 0;
    end;
  with  DataModule1.DBISAMQuery2 do
  begin
*  Form2.DBGrid2.Datasource := nil;
    TNB := Fields[0].AsInteger;
    N := 0;
    while not EOF do
    begin
      if Fields[6].AsInteger = BTO then
      begin
        N := N + 1;
        BRT[N,1] := Fields[0].AsInteger; // TNB
        BRT[N,2] := Fields[2].AsInteger; // TES
        BRT[N,3] := Fields[3].AsInteger; // COL
        BRT[N,4] := Fields[4].AsInteger; // PST
      end;
      Next;
    end;
    Result := N;
    First;
    MoveBy(TNB - 1); // カーソル戻し
*  Form2.DBGrid2.Datasource := DataModule1.DataSource2;
  end;
end;


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

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






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