| 1 |  | 
|---|
| 2 | {*****************************************************************************} | 
|---|
| 3 | {                                                                             } | 
|---|
| 4 | {    Tnt Delphi Unicode Controls                                              } | 
|---|
| 5 | {      http://www.tntware.com/delphicontrols/unicode/                         } | 
|---|
| 6 | {        Version: 2.3.0                                                       } | 
|---|
| 7 | {                                                                             } | 
|---|
| 8 | {    Copyright (c) 2002-2007, Troy Wolbrink (troy.wolbrink@tntware.com)       } | 
|---|
| 9 | {                                                                             } | 
|---|
| 10 | {*****************************************************************************} | 
|---|
| 11 |  | 
|---|
| 12 | unit TntClipBrd; | 
|---|
| 13 |  | 
|---|
| 14 | {$INCLUDE TntCompilers.inc} | 
|---|
| 15 |  | 
|---|
| 16 | interface | 
|---|
| 17 |  | 
|---|
| 18 | uses | 
|---|
| 19 | Windows, Clipbrd; | 
|---|
| 20 |  | 
|---|
| 21 | type | 
|---|
| 22 | {TNT-WARN TClipboard} | 
|---|
| 23 | TTntClipboard = class(TClipboard{TNT-ALLOW TClipboard}) | 
|---|
| 24 | private | 
|---|
| 25 | function GetAsWideText: WideString; | 
|---|
| 26 | procedure SetAsWideText(const Value: WideString); | 
|---|
| 27 | public | 
|---|
| 28 | property AsWideText: WideString read GetAsWideText write SetAsWideText; | 
|---|
| 29 | property AsText: WideString read GetAsWideText write SetAsWideText; | 
|---|
| 30 | end; | 
|---|
| 31 |  | 
|---|
| 32 | {TNT-WARN Clipboard} | 
|---|
| 33 | function TntClipboard: TTntClipboard; | 
|---|
| 34 |  | 
|---|
| 35 | implementation | 
|---|
| 36 |  | 
|---|
| 37 | { TTntClipboard } | 
|---|
| 38 |  | 
|---|
| 39 | function TTntClipboard.GetAsWideText: WideString; | 
|---|
| 40 | var | 
|---|
| 41 | Data: THandle; | 
|---|
| 42 | begin | 
|---|
| 43 | Open; | 
|---|
| 44 | Data := GetClipboardData(CF_UNICODETEXT); | 
|---|
| 45 | try | 
|---|
| 46 | if Data <> 0 then | 
|---|
| 47 | Result := PWideChar(GlobalLock(Data)) | 
|---|
| 48 | else | 
|---|
| 49 | Result := ''; | 
|---|
| 50 | finally | 
|---|
| 51 | if Data <> 0 then GlobalUnlock(Data); | 
|---|
| 52 | Close; | 
|---|
| 53 | end; | 
|---|
| 54 | if (Data = 0) or (Result = '') then | 
|---|
| 55 | Result := inherited AsText | 
|---|
| 56 | end; | 
|---|
| 57 |  | 
|---|
| 58 | procedure TTntClipboard.SetAsWideText(const Value: WideString); | 
|---|
| 59 | begin | 
|---|
| 60 | Open; | 
|---|
| 61 | try | 
|---|
| 62 | inherited AsText := Value; {Ensures ANSI compatiblity across platforms.} | 
|---|
| 63 | SetBuffer(CF_UNICODETEXT, PWideChar(Value)^, (Length(Value) + 1) * SizeOf(WideChar)); | 
|---|
| 64 | finally | 
|---|
| 65 | Close; | 
|---|
| 66 | end; | 
|---|
| 67 | end; | 
|---|
| 68 |  | 
|---|
| 69 | //------------------------------------------ | 
|---|
| 70 |  | 
|---|
| 71 | var | 
|---|
| 72 | GTntClipboard: TTntClipboard; | 
|---|
| 73 |  | 
|---|
| 74 | function TntClipboard: TTntClipboard; | 
|---|
| 75 | begin | 
|---|
| 76 | if GTntClipboard = nil then | 
|---|
| 77 | GTntClipboard := TTntClipboard.Create; | 
|---|
| 78 | Result := GTntClipboard; | 
|---|
| 79 | end; | 
|---|
| 80 |  | 
|---|
| 81 | initialization | 
|---|
| 82 |  | 
|---|
| 83 | finalization | 
|---|
| 84 | GTntClipboard.Free; | 
|---|
| 85 |  | 
|---|
| 86 | end. | 
|---|