| [453] | 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. | 
|---|