亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tntdb.pas

?? Make your Delphi application UNICODE enabled.
?? PAS
?? 第 1 頁 / 共 2 頁
字號(hào):

{*****************************************************************************}
{                                                                             }
{    Tnt Delphi Unicode Controls                                              }
{      http://www.tntware.com/delphicontrols/unicode/                         }
{        Version: 2.2.2                                                       }
{                                                                             }
{    Copyright (c) 2002-2005, Troy Wolbrink (troy.wolbrink@tntware.com)       }
{                                                                             }
{*****************************************************************************}

unit TntDB;

{$INCLUDE TntCompilers.inc}

interface

uses
  Classes, DB;

type
{TNT-WARN TDateTimeField}
  TTntDateTimeField = class(TDateTimeField{TNT-ALLOW TDateTimeField})
  protected
    procedure SetAsString(const Value: AnsiString); override;
  end;

{TNT-WARN TDateField}
  TTntDateField = class(TDateField{TNT-ALLOW TDateField})
  protected
    procedure SetAsString(const Value: AnsiString); override;
  end;

{TNT-WARN TTimeField}
  TTntTimeField = class(TTimeField{TNT-ALLOW TTimeField})
  protected
    procedure SetAsString(const Value: AnsiString); override;
  end;

  TFieldGetWideTextEvent = procedure(Sender: TField; var Text: WideString;
    DoDisplayText: Boolean) of object;
  TFieldSetWideTextEvent = procedure(Sender: TField; const Text: WideString) of object;

  IWideStringField = interface
    ['{679C5F1A-4356-4696-A8F3-9C7C6970A9F6}']
    {$IFNDEF COMPILER_10_UP}
    function GetAsWideString: WideString;
    procedure SetAsWideString(const Value: WideString);
    {$ENDIF}
    function GetWideDisplayText: WideString;
    function GetWideEditText: WideString;
    procedure SetWideEditText(const Value: WideString);
    //--
    {$IFNDEF COMPILER_10_UP}
    property AsWideString: WideString read GetAsWideString write SetAsWideString{inherited};
    {$ENDIF}
    property WideDisplayText: WideString read GetWideDisplayText;
    property WideText: WideString read GetWideEditText write SetWideEditText;
  end;

{TNT-WARN TWideStringField}
  TTntWideStringField = class(TWideStringField{TNT-ALLOW TWideStringField}, IWideStringField)
  private
    FOnGetText: TFieldGetWideTextEvent;
    FOnSetText: TFieldSetWideTextEvent;
    procedure SetOnGetText(const Value: TFieldGetWideTextEvent);
    procedure SetOnSetText(const Value: TFieldSetWideTextEvent);
    procedure LegacyGetText(Sender: TField; var AnsiText: AnsiString; DoDisplayText: Boolean);
    procedure LegacySetText(Sender: TField; const AnsiText: AnsiString);
    function GetWideDisplayText: WideString;
    function GetWideEditText: WideString;
    procedure SetWideEditText(const Value: WideString);
  protected
    {$IFNDEF COMPILER_10_UP}
    function GetAsWideString: WideString;
    {$ENDIF}
  public
    property Value: WideString read GetAsWideString write SetAsWideString;
    property DisplayText{TNT-ALLOW DisplayText}: WideString read GetWideDisplayText;
    property Text: WideString read GetWideEditText write SetWideEditText;
    {$IFNDEF COMPILER_10_UP}
    property AsWideString: WideString read GetAsWideString write SetAsWideString;
    {$ENDIF}
    property WideDisplayText: WideString read GetWideDisplayText;
    property WideText: WideString read GetWideEditText write SetWideEditText;
  published
    property OnGetText: TFieldGetWideTextEvent read FOnGetText write SetOnGetText;
    property OnSetText: TFieldSetWideTextEvent read FOnSetText write SetOnSetText;
  end;

  TTntStringFieldEncodingMode = (emNone, emUTF8, emUTF7, emFixedCodePage, emFixedCodePage_Safe);

  //-------------------------------------------------------------------------------------------
  // Comments on TTntStringFieldEncodingMode:
  //
  //  emNone               - Works like TStringField.
  //  emUTF8               - Should work well most databases.
  //  emUTF7               - Almost guaranteed to work with any database. Wasteful in database space.
  //  emFixedCodePage      - Only tested it with Access 97, which doesn't support Unicode.
  //  emFixedCodePage_Safe - Like emFixedCodePage but uses char<=#128.  Wasteful in database space.
  //
  //  Only emUTF8 and emUTF7 fully support Unicode.
  //-------------------------------------------------------------------------------------------

  TTntStringFieldCodePageEnum = (fcpOther,
    fcpThai, fcpJapanese, fcpSimplifiedChinese, fcpTraditionalChinese, fcpKorean,
    fcpCentralEuropean, fcpCyrillic, fcpLatinWestern, fcpGreek, fcpTurkish,
    fcpHebrew, fcpArabic, fcpBaltic, fcpVietnamese);

const
  TntStringFieldCodePageEnumMap: array[TTntStringFieldCodePageEnum] of Word = (0,
    874, 932, 936, 950, 949,
    1250, 1251, 1252, 1253, 1254,
    1255, 1256, 1257, 1258);

type
{TNT-WARN TStringField}
  TTntStringField = class(TStringField{TNT-ALLOW TStringField}, IWideStringField)
  private
    FOnGetText: TFieldGetWideTextEvent;
    FOnSetText: TFieldSetWideTextEvent;
    FEncodingMode: TTntStringFieldEncodingMode;
    FFixedCodePage: Word;
    FRawVariantAccess: Boolean;
    procedure SetOnGetText(const Value: TFieldGetWideTextEvent);
    procedure SetOnSetText(const Value: TFieldSetWideTextEvent);
    procedure LegacyGetText(Sender: TField; var AnsiText: AnsiString; DoDisplayText: Boolean);
    procedure LegacySetText(Sender: TField; const AnsiText: AnsiString);
    function GetWideDisplayText: WideString;
    function GetWideEditText: WideString;
    procedure SetWideEditText(const Value: WideString);
    function GetFixedCodePageEnum: TTntStringFieldCodePageEnum;
    procedure SetFixedCodePageEnum(const Value: TTntStringFieldCodePageEnum);
    function IsFixedCodePageStored: Boolean;
  protected
    {$IFDEF COMPILER_10_UP}
    function GetAsWideString: WideString; override;
    procedure SetAsWideString(const Value: WideString); override;
    {$ELSE}
    function GetAsWideString: WideString; virtual;
    procedure SetAsWideString(const Value: WideString); virtual;
    {$ENDIF}
    function GetAsVariant: Variant; override;
    procedure SetVarValue(const Value: Variant); override;
    function GetAsString: string{TNT-ALLOW string}; override;
    procedure SetAsString(const Value: string{TNT-ALLOW string}); override;
  public
    constructor Create(AOwner: TComponent); override;
    property Value: WideString read GetAsWideString write SetAsWideString;
    property DisplayText{TNT-ALLOW DisplayText}: WideString read GetWideDisplayText;
    property Text: WideString read GetWideEditText write SetWideEditText;
    {$IFNDEF COMPILER_10_UP}
    property AsWideString: WideString read GetAsWideString write SetAsWideString;
    {$ENDIF}
    property WideDisplayText: WideString read GetWideDisplayText;
    property WideText: WideString read GetWideEditText write SetWideEditText;
  published
    property EncodingMode: TTntStringFieldEncodingMode read FEncodingMode write FEncodingMode default emUTF8;
    property FixedCodePageEnum: TTntStringFieldCodePageEnum read GetFixedCodePageEnum write SetFixedCodePageEnum stored False;
    property FixedCodePage: Word read FFixedCodePage write FFixedCodePage stored IsFixedCodePageStored;
    property RawVariantAccess: Boolean read FRawVariantAccess write FRawVariantAccess default False;
    property OnGetText: TFieldGetWideTextEvent read FOnGetText write SetOnGetText;
    property OnSetText: TFieldSetWideTextEvent read FOnSetText write SetOnSetText;
  end;

function GetTntFieldClass(FieldClass: TFieldClass): TFieldClass;

{TNT-WARN DisplayName}
function GetWideDisplayName(Field: TField): WideString;

{TNT-WARN DisplayLabel}
function GetWideDisplayLabel(Field: TField): WideString;
procedure SetWideDisplayLabel(Field: TField; const Value: WideString);

{TNT-WARN AsString}
{TNT-WARN DisplayText}

function GetAsWideString(Field: TField): WideString;
procedure SetAsWideString(Field: TField; const Value: WideString);

function GetWideDisplayText(Field: TField): WideString;

function GetWideText(Field: TField): WideString;
procedure SetWideText(Field: TField; const Value: WideString);

procedure RegisterTntFields;

{ TTntWideStringField / TTntStringField common handlers }
procedure TntWideStringField_GetWideText(Field: TField;
  var Text: WideString; DoDisplayText: Boolean);
function TntWideStringField_GetWideDisplayText(Field: TField;
  OnGetText: TFieldGetWideTextEvent): WideString;
function TntWideStringField_GetWideEditText(Field: TField;
  OnGetText: TFieldGetWideTextEvent): WideString;
procedure TntWideStringField_SetWideText(Field: TField;
  const Value: WideString);
procedure TntWideStringField_SetWideEditText(Field: TField;
  OnSetText: TFieldSetWideTextEvent; const Value: WideString);


implementation

uses
  SysUtils, MaskUtils, Variants, Contnrs, TntSystem, TntSysUtils, TntClasses;

function GetTntFieldClass(FieldClass: TFieldClass): TFieldClass;
begin
  if FieldClass = TDateTimeField{TNT-ALLOW TDateTimeField} then
    Result := TTntDateTimeField
  else if FieldClass = TDateField{TNT-ALLOW TDateField} then
    Result := TTntDateField
  else if FieldClass = TTimeField{TNT-ALLOW TTimeField} then
    Result := TTntTimeField
  else if FieldClass = TWideStringField{TNT-ALLOW TWideStringField} then
    Result := TTntWideStringField
  else if FieldClass = TStringField{TNT-ALLOW TStringField} then
    Result := TTntStringField
  else
    Result := FieldClass;
end;

{$IFNDEF COMPILER_10_UP}
{ TWideFieldHelper }
var
  WideFieldHelpers: TComponentList = nil;

type
  TWideFieldHelper = class(TWideComponentHelper)
  private
    FField: TField;
    FWideDisplayLabel: WideString;
    procedure SetAnsiDisplayLabel(const Value: AnsiString);
  public
    constructor Create(AOwner: TField); reintroduce;
    property WideDisplayLabel: WideString read FWideDisplayLabel;
  end;

constructor TWideFieldHelper.Create(AOwner: TField);
begin
  inherited CreateHelper(AOwner, WideFieldHelpers);
  FField := AOwner;
end;

procedure TWideFieldHelper.SetAnsiDisplayLabel(const Value: AnsiString);
begin
  FField.DisplayLabel{TNT-ALLOW DisplayLabel} := Value;
end;

function FindWideFieldHelper(Field: TField; CreateIfNotFound: Boolean = True): TWideFieldHelper;
begin
  Result := TWideFieldHelper(FindWideComponentHelper(WideFieldHelpers, Field));
  if (Result = nil) and CreateIfNotFound then
  	Result := TWideFieldHelper.Create(Field);
end;
{$ENDIF}
//---------------------------------------------------------------------------------------------

function GetWideDisplayName(Field: TField): WideString;
begin
  {$IFDEF COMPILER_10_UP}
  Result := Field.DisplayName{TNT-ALLOW DisplayName};
  {$ELSE}
  if GetWideDisplayLabel(Field) <> '' then
    Result := GetWideDisplayLabel(Field)
  else
    Result := Field.FieldName;
  {$ENDIF}
end;

function GetWideDisplayLabel(Field: TField): WideString;
{$IFDEF COMPILER_10_UP}
begin
  Result := Field.DisplayLabel{TNT-ALLOW DisplayLabel};
end;
{$ELSE}
var
  WideFieldHelper: TWideFieldHelper;
begin
  WideFieldHelper := FindWideFieldHelper(Field, False);
  if WideFieldHelper = nil then
    Result := Field.DisplayLabel{TNT-ALLOW DisplayLabel}
  else
    Result := GetSyncedWideString(WideFieldHelper.FWideDisplayLabel, Field.DisplayLabel{TNT-ALLOW DisplayLabel});
end;
{$ENDIF}

procedure SetWideDisplayLabel(Field: TField; const Value: WideString);
begin
  {$IFDEF COMPILER_10_UP}
  Field.DisplayLabel{TNT-ALLOW DisplayLabel} := Value;
  {$ELSE}
  with FindWideFieldHelper(Field) do
    SetSyncedWideString(Value, FWideDisplayLabel, Field.DisplayLabel{TNT-ALLOW DisplayLabel}, SetAnsiDisplayLabel)
  {$ENDIF}
end;

function GetAsWideString(Field: TField): WideString;
{$IFDEF COMPILER_10_UP}
begin
  if (Field is TWideMemoField) then
    Result := TWideMemoField(Field).Value
  else if (Field is TMemoField) then
    Result := Field.AsVariant { works for NexusDB BLOB Wide }
  else
    Result := Field.AsWideString;
end;
{$ELSE}
var
  WideField: IWideStringField;
begin
  if Field.GetInterface(IWideStringField, WideField) then
    Result := WideField.AsWideString
  else if (Field is TWideStringField{TNT-ALLOW TWideStringField}) then
  begin
    if Field.IsNull then
      // This fixes a bug in TWideStringField.GetAsWideString which does not handle Null at all.
      Result := ''
    else
      Result := TWideStringField{TNT-ALLOW TWideStringField}(Field).Value
  end else if (Field is TMemoField) then
    Result := Field.AsVariant { works for NexusDB BLOB Wide }
  else
    Result := Field.AsString{TNT-ALLOW AsString};
end;
{$ENDIF}

procedure SetAsWideString(Field: TField; const Value: WideString);
{$IFDEF COMPILER_10_UP}
begin
  if (Field is TWideMemoField) then
    TWideMemoField(Field).Value := Value
  else if (Field is TMemoField) then
    Field.AsVariant := Value { works for NexusDB BLOB Wide }
  else
    Field.AsWideString := Value;
end;
{$ELSE}
var
  WideField: IWideStringField;
begin
  if Field.GetInterface(IWideStringField, WideField) then
    WideField.AsWideString := Value
  else if (Field is TWideStringField{TNT-ALLOW TWideStringField}) then
    TWideStringField{TNT-ALLOW TWideStringField}(Field).Value := Value
  else if (Field is TMemoField) then
    Field.AsVariant := Value { works for NexusDB BLOB Wide }
  else
    Field.AsString{TNT-ALLOW AsString} := Value;
end;
{$ENDIF}

function GetWideDisplayText(Field: TField): WideString;
var
  WideField: IWideStringField;
begin
  if Field.GetInterface(IWideStringField, WideField) then
    Result := WideField.WideDisplayText
  else if (Field is TWideStringField{TNT-ALLOW TWideStringField})
  and (not Assigned(Field.OnGetText)) then
    Result := GetAsWideString(Field)
  else
    Result := Field.DisplayText{TNT-ALLOW DisplayText};
end;

function GetWideText(Field: TField): WideString;
var
  WideField: IWideStringField;
begin
  if Field.GetInterface(IWideStringField, WideField) then
    Result := WideField.WideText
  else if (Field is TWideStringField{TNT-ALLOW TWideStringField})
  and (not Assigned(Field.OnGetText)) then
    Result := GetAsWideString(Field)
  else
    Result := Field.Text;
end;

procedure SetWideText(Field: TField; const Value: WideString);
var
  WideField: IWideStringField;
begin
  if Field.GetInterface(IWideStringField, WideField) then
    WideField.WideText := Value
  else if (Field is TWideStringField{TNT-ALLOW TWideStringField})
  and (not Assigned(Field.OnSetText)) then
    SetAsWideString(Field, Value)
  else
    Field.Text := Value
end;

{ TTntDateTimeField }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品国产免大香伊| 成人黄动漫网站免费app| 色狠狠色狠狠综合| 亚洲欧美日韩国产综合在线| 99久久99久久精品国产片果冻| 国产精品久久久爽爽爽麻豆色哟哟| 91网上在线视频| 午夜婷婷国产麻豆精品| 欧美一区二区三区精品| 精品写真视频在线观看| 中文字幕欧美激情| 色婷婷综合视频在线观看| 亚洲成人精品一区二区| 欧美电影免费观看高清完整版| 国产一区中文字幕| 亚洲欧美精品午睡沙发| 欧美女孩性生活视频| 久久超碰97中文字幕| 国产日韩成人精品| 色欧美片视频在线观看| 日韩国产精品久久久久久亚洲| 日韩欧美精品在线视频| 99久久精品国产一区二区三区| 香蕉久久一区二区不卡无毒影院 | 91精品久久久久久久91蜜桃| 欧美精品第1页| 欧美日韩中文字幕精品| 欧美精品自拍偷拍动漫精品| 欧美伦理电影网| 亚洲卡通动漫在线| 亚洲va欧美va人人爽午夜| 亚洲美女区一区| 一本到不卡免费一区二区| 日韩欧美国产综合一区| 亚洲图片你懂的| 国产成人av电影在线| 五月婷婷综合网| 久久综合久久综合九色| 夜夜精品视频一区二区| 欧美精品日韩一本| 国产精品久久免费看| 亚洲美女在线一区| 国产一区二区三区在线观看免费| 在线观看一区日韩| 国产精品一区二区无线| 欧美在线一区二区三区| 极品尤物av久久免费看| 欧美一级日韩一级| 成年人午夜久久久| 亚洲午夜精品网| 4438x成人网最大色成网站| 视频一区在线播放| 日韩一级免费观看| 精品一区二区三区日韩| 精品国产污污免费网站入口| 亚洲一二三四久久| 95精品视频在线| 精品国产乱码91久久久久久网站| 国产传媒久久文化传媒| 91精品国产aⅴ一区二区| 国产网站一区二区三区| 老鸭窝一区二区久久精品| 欧美视频第二页| 亚洲男人的天堂网| 精品国产乱码久久| 美女网站视频久久| 久久色视频免费观看| 香蕉影视欧美成人| 日韩视频一区在线观看| 日韩一区二区免费在线电影| 91久久精品国产91性色tv| 一区二区三区久久| 欧美乱妇一区二区三区不卡视频| 在线观看91视频| 午夜免费欧美电影| 日韩一区日韩二区| 国产精品情趣视频| 91丨porny丨户外露出| 在线免费观看日本欧美| 中文字幕av在线一区二区三区| 日韩免费看的电影| 成人免费毛片嘿嘿连载视频| 国产成人精品免费一区二区| 国产精品一区二区你懂的| 国产91对白在线观看九色| 国产精品1024久久| caoporen国产精品视频| 91麻豆精东视频| 在线亚洲一区二区| 欧美日韩国产大片| 精品日韩在线观看| 久久精品夜色噜噜亚洲aⅴ| 中文字幕精品一区二区三区精品| 精品久久久久久久一区二区蜜臀| 欧美国产亚洲另类动漫| 久久久久久久性| 中文字幕高清不卡| 亚洲美女少妇撒尿| 日韩电影在线观看电影| 美女视频一区在线观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品亚洲aⅴ乱码一区二区三区| 韩国v欧美v日本v亚洲v| 成人美女在线视频| 色偷偷88欧美精品久久久| 在线播放日韩导航| 亚洲精品一区二区三区四区高清| 国产欧美综合在线| 亚洲综合另类小说| 美女网站一区二区| 99国产精品99久久久久久| 欧美日韩在线播放| 精品久久五月天| 亚洲欧美日韩国产手机在线| 三级久久三级久久| 粉嫩aⅴ一区二区三区四区| 欧美日韩在线三区| 久久久精品国产免大香伊| 夜夜精品浪潮av一区二区三区| 久久99国产精品免费| 99久免费精品视频在线观看| 在线综合视频播放| 国产精品美女久久久久久久久| 亚洲国产va精品久久久不卡综合| 国产精品综合一区二区| 91精彩视频在线| 久久伊99综合婷婷久久伊| 亚洲一区二区三区小说| 国产精品99久久久久久久女警 | 国产精品夫妻自拍| 污片在线观看一区二区| 成人一区二区三区视频在线观看| 欧美精品日韩一本| 国产精品福利影院| 国模娜娜一区二区三区| 911精品国产一区二区在线| 国产精品久久久久精k8| 国产在线精品免费av| 欧美日韩国产成人在线91| 亚洲特黄一级片| 国产成人精品免费一区二区| 欧美一级二级三级乱码| 亚洲尤物在线视频观看| bt欧美亚洲午夜电影天堂| 久久久亚洲国产美女国产盗摄| 午夜精品福利一区二区三区av| 99精品一区二区| 国产日韩欧美不卡| 国产一区二区不卡| 日韩欧美国产不卡| 亚洲成人自拍偷拍| 91视频国产观看| 久久精品免费在线观看| 久久99久久精品欧美| 欧美麻豆精品久久久久久| 一区二区三区高清在线| 色综合激情五月| 国产精品久久久久国产精品日日| 九一九一国产精品| 欧美一区二区三区在线看| 亚洲电影一级片| 欧美亚洲综合另类| 亚洲午夜精品网| 欧美视频一区二区三区在线观看| 亚洲素人一区二区| 欧美日韩精品三区| 中文字幕日本乱码精品影院| 国产呦精品一区二区三区网站| 欧美电视剧免费全集观看| 视频一区欧美精品| 69成人精品免费视频| 丝袜脚交一区二区| 51久久夜色精品国产麻豆| 三级一区在线视频先锋| 91精品午夜视频| 日韩av电影一区| 欧美一区永久视频免费观看| 日韩精品乱码av一区二区| 在线播放中文一区| 韩国在线一区二区| 亚洲国产精品成人久久综合一区| 成人午夜视频在线观看| 国产精品区一区二区三| 色伊人久久综合中文字幕| 亚洲一区二区黄色| 欧美精品一级二级| 日韩电影免费在线观看网站| 日韩久久久久久| 丁香啪啪综合成人亚洲小说| 国产精品成人免费精品自在线观看 | 三级精品在线观看| 91亚洲精品久久久蜜桃| 激情小说欧美图片| 久久久99精品免费观看| 成人精品高清在线| 亚洲二区在线观看| 日韩欧美一区二区久久婷婷| 成人网在线免费视频| 亚洲国产日韩综合久久精品| 欧美成人a视频|