| 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.
 | 
|---|