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

DBGrid如何讓左邊第一列作鎖定。

答題得分者是:RootKit
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-05 17:01:37 IP:60.248.xxx.xxx 訂閱
Dear 各位大大。

我從網路 找到 以下資料,
TStringGrid(DbGrid1).FixedCols := 2;

以及

type TMyGrid = Class(TDBGrid) end;

TMyGrid(DbGrid1).FixedCols := 2;

可是有一些問題,1)標題名稱不見 2) 點選到該鎖定欄位,右邊會多一欄鎖定欄位資料。

如果,一定要使用DBGrid時,是否有什麼解決方法,還是指定那欄鎖定欄位,mouseDown無反應。
請問該如何做呢。

thks
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-05 22:13:07 IP:122.126.xxx.xxx 訂閱
看看這裡
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=97189

不行再說。
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-07 12:46:17 IP:124.10.xxx.xxx 訂閱
感謝 RootKit 提供的討論串
解決了我長久已來的疑惑!
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-08 09:50:18 IP:60.248.xxx.xxx 訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-06-08 10:54:06 IP:60.248.xxx.xxx 訂閱
Dear RootKit 大大。

麻煩您,我已試出來,不好意思。
可是如果要指定是那一個DBGrid,那該如何去設定呢。

再次麻煩您,thks。
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-06-08 14:32:15 IP:60.248.xxx.xxx 訂閱
Dear RootKit 大大。

您好,如在標題在移動或調整欄位大小,或利用標題作排序資料時,
似乎,鎖定該欄位就失效,請問那要如何解決。
再次麻煩您。thks




RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-06-09 12:16:30 IP:61.222.xxx.xxx 訂閱
移動欄位造成次序不同,或帶游標至位置。
補強可由 ColumnMoved 事件處理。

至於排序或改欄寬,應不至於。
通常還是會,跟預設為第一個欄位有關(同StringGrid編輯的問題)因此在 OnEnter 事件需處理一下預設的 Col 值。
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-06-09 13:50:06 IP:60.248.xxx.xxx 訂閱
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-06-10 23:00:29 IP:122.126.xxx.xxx 訂閱
有點無俚頭....點點點

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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-06-16 14:04:09 IP:60.248.xxx.xxx 訂閱
謝謝。RootKit的大力幫忙。
系統時間:2024-04-25 19:09:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!