模擬ctrl+c及ctrl+v |
答題得分者是:老大仔
|
lazybones1983
一般會員 ![]() ![]() 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
最近都在嘗試跟TwwDBGrid有關的功能, 不過遇到一些問題
要是想要複製Grid中的個別欄位時, 都要先按一下Enter進到欄位之後才能用ctrl c進行複製, 無法像Excel一樣, 直接對欄位按ctrl c直接進行複製, 所以我想說利用OnKeyDown來模擬, 下面是部份code (當user按下ctrl c時, 會跑這code) [code delphi] procedure TFTestPlan.DBGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Shift = [ssCtrl] then begin case Key of Ord('C'): CopyText(); end; end; procedure TFTestPlan.CopyText(); begin keybd_event(VK_RETURN, 0, 0, 0); //按下Enter keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //放開Enter sleep(50); //Ctrl C: keybd_event(VK_CONTROL, 0, 0, 0); //按下Ctrl keybd_event(Ord('C'), 0, 0, 0); //按下C keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0); //放開C keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); //放開Ctrl end; [/code] 可是作用不如預期, 實際執行時(按下ctrl c), 只要按一次ctrl c, 就會發生Enter一直被按住的情形 也導致沒成功複製欄位內容, 想請問是哪邊出了問題?謝謝! |
老大仔
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
我在猜...
那個 Grid 格子中的字,你應該要先有"選取"(反白), 然後才進行Ctrl C的動作, 要不然沒有反白,它是要複製什麼@@??? 嗯...純屬個人的猜測 請多多包涵~ ===================引 用 lazybones1983 文 章=================== 最近都在嘗試跟TwwDBGrid有關的功能, 不過遇到一些問題 要是想要複製Grid中的個別欄位時, 都要先按一下Enter進到欄位之後才能用ctrl c進行複製, 無法像Excel一樣, 直接對欄位按ctrl c直接進行複製, 所以我想說利用OnKeyDown來模擬, 下面是部份code (當user按下ctrl c時, 會跑這code) [code delphi] procedure TFTestPlan.DBGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Shift = [ssCtrl] then begin case Key of Ord('C'): CopyText(); end; end; procedure TFTestPlan.CopyText(); begin keybd_event(VK_RETURN, 0, 0, 0); //按下Enter keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //放開Enter sleep(50); //Ctrl C: keybd_event(VK_CONTROL, 0, 0, 0); //按下Ctrl keybd_event(Ord('C'), 0, 0, 0); //按下C keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0); //放開C keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); //放開Ctrl end; [/code] 可是作用不如預期, 實際執行時(按下ctrl c), 只要按一次ctrl c, 就會發生Enter一直被按住的情形 也導致沒成功複製欄位內容, 想請問是哪邊出了問題?謝謝! |
lazybones1983
一般會員 ![]() ![]() 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
先謝謝回答
不過我在按下Ctr C之後(模擬之前), 確定有看到裡面的字有被反白 另外...在按過Ctrl C後, 就算用滑鼠離開原本的欄位, 點選其他欄位, 就會發生按Enter進入欄位的情形, 不過實際上沒有按Enter... 是不是在OnKeyPress或是OnKeyUp等等地方需要另外作處理? ===================引 用 老大仔 文 章=================== 我在猜... 那個 Grid 格子中的字,你應該要先有"選取"(反白), 然後才進行Ctrl C的動作, 要不然沒有反白,它是要複製什麼@@??? 嗯...純屬個人的猜測 請多多包涵~ |
老大仔
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
不知道你接不接受換個方式來進行複製...
你可以使用Clipboard來進行複製就可以了啊~ 這樣或許比較快一點 (我承認這方法可能是爛了點...orz) ===================引 用 lazybones1983 文 章=================== 先謝謝回答 不過我在按下Ctr C之後(模擬之前), 確定有看到裡面的字有被反白 另外...在按過Ctrl C後, 就算用滑鼠離開原本的欄位, 點選其他欄位, 就會發生按Enter進入欄位的情形, 不過實際上沒有按Enter... 是不是在OnKeyPress或是OnKeyUp等等地方需要另外作處理? ===================引 用 老大仔 文 章=================== 我在猜... 那個 Grid 格子中的字,你應該要先有"選取"(反白), 然後才進行Ctrl C的動作, 要不然沒有反白,它是要複製什麼@@??? 嗯...純屬個人的猜測 請多多包涵~ |
cancer
高階會員 ![]() ![]() ![]() ![]() 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
lazybones1983
一般會員 ![]() ![]() 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
1.沒把dgAlwaysShowEditor設為True是覺得很容易不小心誤改到內容
2.TwwDBGrid 已經處理好欄位裡面用checkbox的部分(不過詳細差別我也不是太清楚...) 謝謝回答 ===================引 用 cancer 文 章=================== 我用 TDBGrid,設定 Options 的 dgAlwaysShowEditor,使用者都能用 Ctrl C 來複製,不需要寫程式碼來處理。 TwwDBGrid 跟 TDBGrid 有甚麼不一樣? |
cancer
高階會員 ![]() ![]() ![]() ![]() 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
Hello, dgAlwaysShowEditor 跟能不能修改並無關係,dgAlwaysShowEditor 沒設,要用滑鼠點,Editor 才會出現,有設,則 Editor 一直都出現不會隱藏,控制能不能修改,是 dgEditing 和 ReadOnly,ReadOnly = false,且有設 dgEditing 就能編輯,跟 dgAlwaysShowEditor 並無關係。
===================引 用 lazybones1983 文 章=================== 1.沒把dgAlwaysShowEditor設為True是覺得很容易不小心誤改到內容 2.TwwDBGrid 已經處理好欄位裡面用checkbox的部分(不過詳細差別我也不是太清楚...) 謝謝回答 ===================引 用 cancer 文 章=================== 我用 TDBGrid,設定 Options 的 dgAlwaysShowEditor,使用者都能用 Ctrl C 來複製,不需要寫程式碼來處理。 TwwDBGrid 跟 TDBGrid 有甚麼不一樣? |
lazybones1983
一般會員 ![]() ![]() 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
謝謝各位, 最後cell的複製還是用ctrl+c配合Clipboard來做複製
整行用array, 目前操作起來還滿OK的, 謝謝 ===================引 用 cancer 文 章=================== Hello, dgAlwaysShowEditor 跟能不能修改並無關係,dgAlwaysShowEditor 沒設,要用滑鼠點,Editor 才會出現,有設,則 Editor 一直都出現不會隱藏,控制能不能修改,是 dgEditing 和 ReadOnly,ReadOnly = false,且有設 dgEditing 就能編輯,跟 dgAlwaysShowEditor 並無關係。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |