2010-04-21 7 views
6

Ví dụ, Wordpad đã làm gì khi tôi nhấn "Ctrl + C"? Nó đặt nhiều định dạng khác nhau vào khay nhớ tạm. Vì vậy, Notepad có thể nhận được văn bản mà không có bất kỳ màu sắc hoặc phông chữ ... vv, và bạn vẫn có thể giữ nguyên định dạng ban đầu khi bạn dán vào một cửa sổ Wordpad khác.Làm thế nào để đặt nhiều định dạng trên clipboard?

MSDN cho biết tôi nên gọi SetClipboardData nhiều lần. Nhưng nó không hoạt động chút nào.

+4

Tại sao không đăng một số mã "không hoạt động"? –

+2

Có, và cũng cho chúng tôi biết cách thức mà nó không thành công (chương trình bị lỗi, không làm gì, tạo ra đầu ra khác với bạn mong đợi, vv). –

Trả lời

10

Bạn có thể sử dụng số TClipboard.SetAsHandle của Delphi để đưa dữ liệu vào clipboard ở nhiều định dạng tùy thích. Mở khay nhớ tạm đầu tiên, nếu không, mỗi cuộc gọi đến SetAsHandle sẽ ghi đè mọi thứ khác đã có ở đó, ngay cả ở các định dạng khác.

Clipboard.Open; 
Clipboard.SetAsHandle(cf_Text, x); 
Clipboard.SetAsHandle(cf_Bitmap, y); 
Clipboard.Close; 
+0

Cảm ơn Rob, tôi đã khắc phục sự cố này như bạn đã đề xuất. Tôi đang sử dụng phương pháp SetBuffer của TClipboard, vấn đề là tôi mở/đóng clipboard cho mỗi cuộc gọi của SetBuffer. – trudger

3

Tất cả các chương trình hiện đại đều sử dụng OleSetClipboard để xuất bản định dạng và dữ liệu clipboard. Bắt đầu reading here.

+0

có lẽ hầu hết, nhưng chắc chắn không phải tất cả như không phải là một ứng dụng duy nhất tôi đã nhìn vào đã sử dụng giao diện này. – Rick