請問 在 DBEdit、Edit、DBGrid 中, 有沒有辦法讓 Insert 鍵的功能正常? |
尚未結案
|
chlo
一般會員 發表:7 回覆:13 積分:4 註冊:2003-04-17 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
chlo
一般會員 發表:7 回覆:13 積分:4 註冊:2003-04-17 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var iSelStart: integer; begin iSelStart := Edit1.SelStart; if Odd(GetKeyState(VK_INSERT)) then begin if Edit1.SelLength = 0 then begin case Key of ' '..#126, #128..#255: begin Edit1.SelLength := 1; if (Edit1.SelLength > 0) and (Edit1.SelText[1] = #13) then Edit1.SelLength := 2; end; end; if IsDBCSLeadByte(Byte(Edit1.Text[iSelStart 1])) then Edit1.SelLength := 2; end; end; end;--- 屬於那自己生命的歌 不管是什麼顏色 |
chlo
一般會員 發表:7 回覆:13 積分:4 註冊:2003-04-17 發送簡訊給我 |
引言:感謝 hagar 版主 DBEdit、Edit已解決了,但 DBGrid 還是有問題, 是否能再指點迷津,感恩!!procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var iSelStart: integer; begin iSelStart := Edit1.SelStart; if Odd(GetKeyState(VK_INSERT)) then begin if Edit1.SelLength = 0 then begin case Key of ' '..#126, #128..#255: begin Edit1.SelLength := 1; if (Edit1.SelLength > 0) and (Edit1.SelText[1] = #13) then Edit1.SelLength := 2; end; end; if IsDBCSLeadByte(Byte(Edit1.Text[iSelStart 1])) then Edit1.SelLength := 2; end; end; end;--- 屬於那自己生命的歌 不管是什麼顏色 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
var IsInsert: Boolean = True; // 此變數記錄現在是 insert 或 override 狀態 procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); var iSelStart: integer; c: TInplaceEdit; i: integer; begin for i := 0 to DBGrid1.ControlCount -1 do begin if DBGrid1.Controls[i] is TInplaceEdit then begin c := TInplaceEdit(DBGrid1.Controls[i]); Break; end; end; iSelStart := c.SelStart; if not IsInsert then begin if c.SelLength = 0 then begin case Key of ' '..#126, #128..#255: begin c.SelLength := 1; if (c.SelLength > 0) and (c.SelText[1] = #13) then c.SelLength := 2; end; end; if IsDBCSLeadByte(Byte(c.Text[iSelStart 1])) then c.SelLength := 2; end; end; end; procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_INSERT then begin IsInsert := not IsInsert; Key := $00; // 吃掉 Insert 鍵, 因為按下 Insert 鍵會做新增一筆的動作 end; end;--- 屬於那自己生命的歌 不管是什麼顏色 |
chlo
一般會員 發表:7 回覆:13 積分:4 註冊:2003-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |