線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2738
推到 Plurk!
推到 Facebook!

〔Delphi7〕如何在advstringgrid中使用剪贴板

答題得分者是:老大仔
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-26 15:29:18 IP:210.83.xxx.xxx 訂閱
如题。
一、AdvStringGrid的goEditing属性是打开的。
如何将剪贴板中的内容复制到该AdvStringGrid中我先前选中的cell里?
如果是Edit或者RichEdit,可直接使用 Edit1.PasteFromClipboard;
在AdvStringGrid中如果使用 AdvStringGrid1.PasteFromClipboard; 那么程式默认把剪贴板的内容放在cells[0,0]中,想问AdvStringGrid有没有类似的语句可以把剪贴板中的内容粘贴到我先前select的cell中?
多谢
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-26 15:49:30 IP:59.114.xxx.xxx 未訂閱
您好~照您的意思來看
是想要在cell中做一個貼上的動作對吧?
以下的程式測試是ok的
不過~
我是把貼上的動作寫在AdvStringGrid1DblClick

[code delphi]
procedure TForm1.AdvStringGrid1DblClick(Sender: TObject);
begin
AdvStringGrid1.PasteSelectionFromClipboard;
end;

[/code]

ps:goEditing的屬性一樣也得設為TRUE
編輯記錄
老大仔 重新編輯於 2009-03-26 15:53:01, 註解 無‧
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-26 16:11:50 IP:210.83.xxx.xxx 訂閱
老大仔,你好。
我的意思是想要在cell中做一个贴上的动作没错。但照您的代码编译后(即PasteSelectionFromClipboard;),得出的效果是:粘贴的内容把cell中原有的内容覆盖了。

我想保留原有的内容,粘贴的内容应作为补充而非替换(有些类似于在selstart的位置插入)。

谢谢你!
另,因为任务急,我目前是采取一个笨办法,到该Advstringgrid得到焦点时,就使ctrl v的快捷键设为空(TPaste.ShortCut := TextToShortCut('');)
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-26 16:57:28 IP:59.114.xxx.xxx 未訂閱
您好~
照您的說法
就是想要把原內容和剪貼簿的內容放在一起就對了是吧?
那麼應該也有個方法可以達到的
我在AdvStringGrid1上另外增了一個PopupMenu1
其功能就是做個貼上剪貼簿的內容(這部份你自己應該可以設好才對)
然後以以下的程式碼來達成


[code delphi]
procedure TForm1.N1Click(Sender: TObject);
begin
AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row]:=AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row] Clipboard.AsText;
end;

[/code]
編輯記錄
老大仔 重新編輯於 2009-03-26 17:02:29, 註解 無‧
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-27 08:48:10 IP:210.83.xxx.xxx 訂閱
老大仔,你好

我们讨论代码的部分,

AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row]:=AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row] Clipboard.AsText;

这句,实现起来应该是把剪贴板的内容粘到cell原有内容的后面。我想知道能否实现把剪贴板中的内容粘到某个特定位置,这个位置不一定在cell的开头或结尾,也可能在中间某两个字之间。

谢谢!

===================引 用 老大仔 文 章===================
您好~
照您的說法
就是想要把原內容和剪貼簿的內容放在一起就對了是吧?
那麼應該也有個方法可以達到的
我在AdvStringGrid1上另外增了一個PopupMenu1
其功能就是做個貼上剪貼簿的內容(這部份你自己應該可以設好才對)
然後以以下的程式碼來達成


[code delphi]
procedure TForm1.N1Click(Sender: TObject);
begin
AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row]:=AdvStringGrid1.Cells[AdvStringGrid1.Col,AdvStringGrid1.Row] Clipboard.AsText;
end;

[/code]
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-03-27 10:24:50 IP:59.114.xxx.xxx 未訂閱
所以照您這樣說的話
就類似以Ctrl V來放入資料囉?
假如是這樣的話
小弟我有個偷懶的方法
就是用keybd_event來模擬Ctrl V的功效
不知道這樣符不符合您要的功能呢?
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-03-30 11:28:06 IP:210.83.xxx.xxx 訂閱
…… 是个好办法。谢谢啦。
系統時間:2024-05-18 13:27:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!