全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2313
推到 Plurk!
推到 Facebook!

Grid index out of range 的問題 D6,D7都有的DEBUG

尚未結案
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-11 14:26:50 IP:218.162.xxx.xxx 未訂閱
1.在GIRD中將最右邊個的那個COLUMN拉到跟整個GIRD一樣大時,如果在繼續拉大超過一定距離後(例如:拉大到2)就會出現Grid index out of range
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-11 21:47:23 IP:202.39.xxx.xxx 未訂閱
小弟試了一下, 不會有 error 訊息 第一次 run 的時候, 真地把 column 拉到跟 Grid 一樣大就調不會回來 可是關掉 ap 再重 F9 run, 就可以了 真怪!  ---
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-11 23:11:28 IP:218.32.xxx.xxx 未訂閱
shinhrn 你好:    讓 Column Width 有"極大值", 試試看.    
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, Math;    type
  TDumGrid = class(TDBGrid)
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
  end;
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Button1: TButton;
    Table1: TTable;
    DataSource1: TDataSource;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
begin
  with TDumGrid.Create(self) do begin
    Parent := Self;
    DataSource := DataSource1;
  end;
end;    { TDumGrid }    procedure TDumGrid.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
var i,MaxWidth : integer;
begin
  if FGridState = gsColSizing then begin
    inherited;
    MaxWidth := ClientWidth-ColWidths[0]-GridLineWidth;
    for i := 0 to Columns.Count-1 do
     Columns[i].Width:= min(MaxWidth,Columns[i].Width);
  end
  else inherited;
end;    end.
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-12 08:13:49 IP:218.163.xxx.xxx 未訂閱
剛剛試了一下, 不用另外 override MouseUp procedure 也可以:    直接在 DBGrid OnMouseUp Event :
type TDumGrid1=class(TDBGrid);
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i,MaxWidth : integer;
begin
  with TDumGrid1(Sender) do begin
    MaxWidth := ClientWidth-ColWidths[0]-GridLineWidth;
    for i := 0 to Columns.Count-1 do
     Columns[i].Width:= min(MaxWidth,Columns[i].Width);
  end;
end;
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-12 11:20:26 IP:218.162.xxx.xxx 未訂閱
引言: 小弟試了一下, 不會有 error 訊息 第一次 run 的時候, 真地把 column 拉到跟 Grid 一樣大就調不會回來 可是關掉 ap 再重 F9 run, 就可以了 真怪! --- >< face="Verdana, Arial, Helvetica"> 要拉GIRD中 ''最右邊'' 個的那個COLUMN 才會error喔!!!!
系統時間:2024-07-08 9:44:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!