動態指向下一個欄位值 |
|
MidasFan
一般會員 發表:41 回覆:22 積分:12 註冊:2004-06-03 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
blueK
初階會員 發表:19 回覆:62 積分:36 註冊:2004-05-06 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
看到這個問題,忽然想到以前有回答過類似的
個人的作法: 1.覆寫Dbgrid(偷吃步),新增一Procedure,處理跳欄位的動作. 2.在Dbgrid.forbidden Event中呼叫此Procedure http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=79823 <textarea class="delphi" rows="10" cols="60" name="code"> unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids; type TDBGrid=class(DBGrids.TDBGrid) public procedure NextCol(); end; TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DataSource1: TDataSource; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; ADOTable1DSDesigner: TAutoIncField; ADOTable1DATE1: TDateTimeField; ADOTable1MONTH: TIntegerField; ADOTable1IN1: TIntegerField; ADOTable1OUT1: TIntegerField; ADOTable1Deforbidden: TWideStringField; ADOTable1YEAR: TIntegerField; procedure DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin DBGrid1.NextCol; end; { TDBGrid } procedure TDBGrid.NextCol; var Idx:integer; begin If Length(InplaceEditor.text) = SelectedField.Size then begin Idx:= Self.Col 1; if Idx > Self.Columns.Count then Idx:= Self.Columns.Count; {如果沒做這個動作,則資料並不會進入SelectedField中} self.SelectedField.AsString:= InplaceEditor.text; {如果沒做這個動作,當移到下一個欄位時,會把原先輸入的值帶到下個欄位} InplaceEditor.Clear; Self.FocusCell(Idx,Row,True); end; end; end. </textarea>
------
星期一,二...無窮迴圈@@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |