DBGrid如何讓左邊第一列作鎖定。 |
答題得分者是:RootKit
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
Dear RootKit 大大。
謝謝您,您所提供這則討論正是我想知道的資訊,可是,不好意思,我嘗試將 這則碼,放入的我的form程式中,似乎run起來,都有錯,是否是放錯位置,或是其他方法去呼叫。 TDBGrid = Class(DBGrids.TDBGrid) protected function SelectCell(ACol, ARow: Longint): Boolean; Override; end; TForm1 = class(TForm) ... implementation function TDBGrid.SelectCell(ACol, ARow: Longint): Boolean; begin Result := inherited SelectCell(ACol, ARow); // 第二欄不讓它選 if ACol = 2 then Result := False; end; 可否告訴我該如何去使用。麻煩您。thks |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
Dear RootKit 大大,您好:
我如嘗試這樣放, ColumnMoved及OnEnter沒有變,但TitleClick可以。 如下。 //表單有個重新整理buttom(sbtResh02)。 procedure TfrINVR003.sbtResh02Click(Sender: TObject); procedure GetMPSDATA(); begin with dmMPS.adoSQL02 do begin Close; SQL.Clear; SQL.Add(' SELECT ZG002,ZG003,ZG004,ZG005,ZG006,ZG007,ZG008,ZG009,ZG010,ZG011,ZG012,ZG013,ZG001 FROM MOCZG '); SQL.Add(' WHERE ZG001 = ''' medtPDATE.Text ''' '); SQL.Add(' ORDER BY 1,2 '); Open; end; dmMPS.ds02.DataSet := dmMPS.adoSQL02; dbgMPS.DataSource := dmMPS.ds02; : : : : end; begin GetMPSDATA; TStringGrid(dbgMPS).FixedCols := 2; end; //ColumnMoved事件 procedure TfrINVR003.dbgMPSColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer); begin TStringGrid(dbgMPS).FixedCols := 2; end; //OnEnter事件 procedure TfrINVR003.dbgMPSEnter(Sender: TObject); begin TStringGrid(dbgMPS).FixedCols := 2; end; //TitleClick事件 procedure TfrINVR003.dbgMPSTitleClick(Column: TColumn); procedure ClearSortMark; var ii,x:integer; cStr:string; c:TColumn; begin for ii:=0 to TDBGrid(Column.Grid).Columns.Count-1 do begin c:=TDBGrid(Column.Grid).Columns[ii]; cStr:=c.Title.Caption; if (pos('▲',cStr)<>0) then Delete(cStr, pos('▲',cStr),2) else if (pos('▼',cStr)<>0) then Delete(cStr, pos('▼',cStr),2); c.Title.Caption:=cStr; end; end; begin ClearSortMark; if RightStr(dmMPS.adoSQL02.Sort,3)='ESC' THEN begin dmMPS.adoSQL02.Sort:=Column.FieldName ' ASC'; Column.Title.Caption := Column.Title.Caption '▲'; end ELSE begin dmMPS.adoSQL02.Sort:=Column.FieldName ' DESC'; Column.Title.Caption := Column.Title.Caption '▼'; end; TStringGrid(dbgMPS).FixedCols := 2; end; 麻煩您,謝謝。 |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
有點無俚頭....點點點
1. 使用 FixedCols 就不要允許 ColumnMove 在 Options 拿掉。 With TStringGrid(DBGrid1) do Options := Options - [goColMoving]; 因為 FixedCols 是不變的,但Column 會搬來搬去。 2. 使用 dgAlwaysShowEditor 就要注意 Col 的位置,因為預設在第一個位置。 TStringGrid(DBgrid1).Col := 2; 臨時想到就這麼多,細節需要自行在推敲。 |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |