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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tntdbctrls.pas

?? Delphi知道現在也沒有提供Unicode支持
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  end;

{ TDBRadioGroup }
type
  TTntDBRadioGroup = class(TTntCustomRadioGroup)
  private
    FDataLink: TFieldDataLink;
    FValue: WideString;
    FValues: TTntStrings;
    FInSetValue: Boolean;
    FOnChange: TNotifyEvent;
    procedure DataChange(Sender: TObject);
    procedure UpdateData(Sender: TObject);
    function GetDataField: WideString;
    function GetDataSource: TDataSource;
    function GetField: TField;
    function GetReadOnly: Boolean;
    function GetButtonValue(Index: Integer): WideString;
    procedure SetDataField(const Value: WideString);
    procedure SetDataSource(Value: TDataSource);
    procedure SetReadOnly(Value: Boolean);
    procedure SetValue(const Value: WideString);
    procedure SetItems(Value: TTntStrings);
    procedure SetValues(Value: TTntStrings);
    procedure CMExit(var Message: TCMExit); message CM_EXIT;
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
  protected
    procedure Change; dynamic;
    procedure Click; override;
    procedure KeyPress(var Key: Char{TNT-ALLOW Char}); override;
    function CanModify: Boolean; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    property DataLink: TFieldDataLink read FDataLink;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function ExecuteAction(Action: TBasicAction): Boolean; override;
    function UpdateAction(Action: TBasicAction): Boolean; override;
    function UseRightToLeftAlignment: Boolean; override;
    property Field: TField read GetField;
    property ItemIndex;
    property Value: WideString read FValue write SetValue;
  published
    property Align;
    property Anchors;
    property BiDiMode;
    property Caption;
    property Color;
    property Columns;
    property Constraints;
    property Ctl3D;
    property DataField: WideString read GetDataField write SetDataField;
    property DataSource: TDataSource read GetDataSource write SetDataSource;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Font;
    property Items write SetItems;
    {$IFDEF COMPILER_7_UP}
    property ParentBackground;
    {$ENDIF}
    property ParentBiDiMode;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Values: TTntStrings read FValues write SetValues;
    property Visible;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnClick;
    property OnContextPopup;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    {$IFDEF COMPILER_10_UP}
    property OnMouseEnter;
    property OnMouseLeave;
    {$ENDIF}
    property OnStartDock;
    property OnStartDrag;
  end;

implementation

uses
  Forms, SysUtils, Graphics, Variants, TntDB,
  TntActnList, TntGraphics, TntSysUtils, RichEdit, Mask;

function FieldIsBlobLike(Field: TField): Boolean;
begin
  Result := False;
  if Assigned(Field) then begin
    if (Field.IsBlob)
    or (Field.DataType in [Low(TBlobType).. High(TBlobType)]) then
      Result := True
    else if (Field is TWideStringField{TNT-ALLOW TWideStringField})
    and (Field.Size = MaxInt) then
      Result := True; { wide string field filling in for a blob field }
  end;
end;

{ TTntPaintControl }

type
  TAccessWinControl = class(TWinControl);

constructor TTntPaintControl.Create(AOwner: TWinControl; const ClassName: WideString);
begin
  FOwner := AOwner;
  FClassName := ClassName;
end;

destructor TTntPaintControl.Destroy;
begin
  DestroyHandle;
end;

procedure TTntPaintControl.DestroyHandle;
begin
  if FHandle <> 0 then DestroyWindow(FHandle);
  Classes.FreeObjectInstance(FObjectInstance);
  FHandle := 0;
  FObjectInstance := nil;
end;

function TTntPaintControl.GetHandle: HWnd;
var
  Params: TCreateParams;
begin
  if FHandle = 0 then
  begin
    FObjectInstance := Classes.MakeObjectInstance(WndProc);
    TAccessWinControl(FOwner).CreateParams(Params);
    Params.Style := Params.Style and not (WS_HSCROLL or WS_VSCROLL);
    if (not Win32PlatformIsUnicode) then begin
      with Params do
        FHandle := CreateWindowEx(ExStyle, PAnsiChar(AnsiString(FClassName)),
          PAnsiChar(TAccessWinControl(FOwner).Text), Style or WS_VISIBLE,
          X, Y, Width, Height, Application.Handle, 0, HInstance, nil);
      FDefWindowProc := Pointer(GetWindowLong(FHandle, GWL_WNDPROC));
      SetWindowLong(FHandle, GWL_WNDPROC, Integer(FObjectInstance));
    end else begin
      with Params do
        FHandle := CreateWindowExW(ExStyle, PWideChar(FClassName),
          PWideChar(TntControl_GetText(FOwner)), Style or WS_VISIBLE,
          X, Y, Width, Height, Application.Handle, 0, HInstance, nil);
      FDefWindowProc := Pointer(GetWindowLongW(FHandle, GWL_WNDPROC));
      SetWindowLongW(FHandle, GWL_WNDPROC, Integer(FObjectInstance));
    end;
    SendMessage(FHandle, WM_SETFONT, Integer(TAccessWinControl(FOwner).Font.Handle), 1);
  end;
  Result := FHandle;
end;

procedure TTntPaintControl.SetCtl3DButton(Value: Boolean);
begin
  if FHandle <> 0 then DestroyHandle;
  FCtl3DButton := Value;
end;

procedure TTntPaintControl.WndProc(var Message: TMessage);
begin
  with Message do
    if (Msg >= CN_CTLCOLORMSGBOX) and (Msg <= CN_CTLCOLORSTATIC) then
      Result := FOwner.Perform(Msg, WParam, LParam)
    else if (not Win32PlatformIsUnicode) then
      Result := CallWindowProcA(FDefWindowProc, FHandle, Msg, WParam, LParam)
    else
      Result := CallWindowProcW(FDefWindowProc, FHandle, Msg, WParam, LParam);
end;

{ THackFieldDataLink }
type
  THackFieldDataLink_D6_D7_D9 = class(TDataLink)
  protected
    FxxxField: TField;
    FxxxFieldName: string{TNT-ALLOW string};
    FxxxControl: TComponent;
    FxxxEditing: Boolean;
    FModified: Boolean;
  end;

{$IFDEF COMPILER_6}  // verified against VCL source in Delphi 6 and BCB 6
  THackFieldDataLink = THackFieldDataLink_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_7}    // verified against VCL source in Delphi 7
  THackFieldDataLink = THackFieldDataLink_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_9}    // verified against VCL source in Delphi 9
  THackFieldDataLink = THackFieldDataLink_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_10}    // verified against VCL source in Delphi 10
  THackFieldDataLink = class(TDataLink)
  protected
    FxxxField: TField;
    FxxxFieldName: WideString;
    FxxxControl: TComponent;
    FxxxEditing: Boolean;
    FModified: Boolean;
  end;
{$ENDIF}

{ TTntDBEdit }

type
  THackDBEdit_D6_D7_D9 = class(TCustomMaskEdit)
  protected
    FDataLink: TFieldDataLink;
    FCanvas: TControlCanvas;
    FAlignment: TAlignment;
    FFocused: Boolean;
  end;

{$IFDEF COMPILER_6}   // verified against VCL source in Delphi 6 and BCB 6
  THackDBEdit = THackDBEdit_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_7}     // verified against VCL source in Delphi 7
  THackDBEdit = THackDBEdit_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_9}     // verified against VCL source in Delphi 9
  THackDBEdit = THackDBEdit_D6_D7_D9;
{$ENDIF}
{$IFDEF DELPHI_10}     // verified against VCL source in Delphi 10
  THackDBEdit = THackDBEdit_D6_D7_D9;
{$ENDIF}

constructor TTntDBEdit.Create(AOwner: TComponent);
begin
  inherited;
  InheritedDataChange := THackDBEdit(Self).FDataLink.OnDataChange;
  THackDBEdit(Self).FDataLink.OnDataChange := DataChange;
  THackDBEdit(Self).FDataLink.OnUpdateData := UpdateData;
end;

procedure TTntDBEdit.CreateWindowHandle(const Params: TCreateParams);
begin
  CreateUnicodeHandle(Self, Params, 'EDIT');
end;

procedure TTntDBEdit.CreateWnd;
begin
  inherited;
  TntCustomEdit_AfterInherited_CreateWnd(Self, FPasswordChar);
end;

procedure TTntDBEdit.DefineProperties(Filer: TFiler);
begin
  inherited;
  TntPersistent_AfterInherited_DefineProperties(Filer, Self);
end;

function TTntDBEdit.GetSelStart: Integer;
begin
  Result := TntCustomEdit_GetSelStart(Self);
end;

procedure TTntDBEdit.SetSelStart(const Value: Integer);
begin
  TntCustomEdit_SetSelStart(Self, Value);
end;

function TTntDBEdit.GetSelLength: Integer;
begin
  Result := TntCustomEdit_GetSelLength(Self);
end;

procedure TTntDBEdit.SetSelLength(const Value: Integer);
begin
  TntCustomEdit_SetSelLength(Self, Value);
end;

function TTntDBEdit.GetSelText: WideString;
begin
  Result := TntCustomEdit_GetSelText(Self);
end;

procedure TTntDBEdit.SetSelText(const Value: WideString);
begin
  TntCustomEdit_SetSelText(Self, Value);
end;

function TTntDBEdit.GetPasswordChar: WideChar;
begin
  Result := TntCustomEdit_GetPasswordChar(Self, FPasswordChar)
end;

procedure TTntDBEdit.SetPasswordChar(const Value: WideChar);
begin
  TntCustomEdit_SetPasswordChar(Self, FPasswordChar, Value);
end;

function TTntDBEdit.GetText: WideString;
begin
  Result := TntControl_GetText(Self);
end;

procedure TTntDBEdit.SetText(const Value: WideString);
begin
  TntControl_SetText(Self, Value);
end;

procedure TTntDBEdit.DataChange(Sender: TObject);
begin
  with THackDBEdit(Self), Self do begin
    if Field = nil then
      InheritedDataChange(Sender)
    else begin
      if FAlignment <> Field.Alignment then
      begin
        EditText := '';  {forces update}
        FAlignment := Field.Alignment;
      end;
      EditMask := Field.EditMask;
      if not (csDesigning in ComponentState) then
      begin
        if (Field.DataType in [ftString, ftWideString]) and (MaxLength = 0) then
          MaxLength := Field.Size;
      end;
      if FFocused and FDataLink.CanModify then
        Text := GetWideText(Field)
      else
      begin
        Text := GetWideDisplayText(Field);
        if FDataLink.Editing and THackFieldDataLink(FDataLink).FModified then
          Modified := True;
      end;
    end;
  end;
end;

procedure TTntDBEdit.UpdateData(Sender: TObject);
begin
  ValidateEdit;
  SetWideText(Field, Text);
end;

procedure TTntDBEdit.CMEnter(var Message: TCMEnter);
var
  SaveFarEast: Boolean;
begin
  SaveFarEast := SysLocale.FarEast;
  try
    SysLocale.FarEast := False;
    inherited; // inherited tries to work around Win95 FarEast bug, but introduces others
  finally
    SysLocale.FarEast := SaveFarEast;
  end;
end;

function TTntDBEdit.IsHintStored: Boolean;
begin
  Result := TntControl_IsHintStored(Self);
end;

function TTntDBEdit.GetHint: WideString;
begin
  Result := TntControl_GetHint(Self)
end;

procedure TTntDBEdit.SetHint(const Value: WideString);
begin
  TntControl_SetHint(Self, Value);
end;

procedure TTntDBEdit.ActionChange(Sender: TObject; CheckDefaults: Boolean);
begin
  TntControl_BeforeInherited_ActionChange(Self, Sender, CheckDefaults);
  inherited;
end;

function TTntDBEdit.GetActionLinkClass: TControlActionLinkClass;
begin
  Result := TntControl_GetActionLinkClass(Self, inherited GetActionLinkClass);
end;

procedure TTntDBEdit.WMPaint(var Message: TWMPaint);
const
  AlignStyle : array[Boolean, TAlignment] of DWORD =
   ((WS_EX_LEFT, WS_EX_RIGHT, WS_EX_LEFT),
    (WS_EX_RIGHT, WS_EX_LEFT, WS_EX_LEFT));
var
  ALeft: Integer;
  _Margins: TPoint;
  R: TRect;
  DC: HDC;
  PS: TPaintStruct;
  S: WideString;
  AAlignment: TAlignment;
  I: Integer;
begin
  with THackDBEdit(Self), Self do begin
    AAlignment := FAlignment;
    if UseRightToLeftAlignment then ChangeBiDiModeAlignment(AAlignment);
    if ((AAlignment = taLeftJustify) or FFocused) and (not (csPaintCopy in ControlState))
    or (not Win32PlatformIsUnicode) then
    begin
      inherited;
      Exit;
    end;
  { Since edit controls do not handle justification unless multi-line (and
    then only poorly) we will draw right and center justify manually unless
    the edit has the focus. }
    if FCanvas = nil then
    begin
      FCanvas := TControlCanvas.Create;
      FCanvas.Control := Self;
    end;
    DC := Message.DC;
    if DC = 0 then DC := BeginPaint(Handle, PS);
    FCanvas.Handle := DC;
    try
      FCanvas.Font := Font;
      with FCanvas do
      begin
        R := ClientRect;
        if not (NewStyleControls and Ctl3D) and (BorderStyle = bsSingle) then
        begin
          Brush.Color := clWindowFrame;
          FrameRect(R);
          InflateRect(R, -1, -1);
        end;
        Brush.Color := Color;
        if not Enabled then
          Font.Color := clGrayText;
        if (csPaintCopy in ControlState) and (Field <> nil) then
        begin
          S := GetWideDisplayText(Field);
          case CharCase of
            ecUpperCase:
              S := Tnt_WideUpperCase(S);
            ecLowerCase:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区免费在线观看| 青青草国产精品亚洲专区无| 国产真实精品久久二三区| 中文字幕第一区二区| 午夜不卡av在线| 国产精品蜜臀av| 国产精品久久精品日日| 日韩区在线观看| 国产伦精品一区二区三区免费| 欧美r级在线观看| 精品午夜久久福利影院| 中文字幕在线一区免费| 91精品国产品国语在线不卡 | 久久色.com| 一级中文字幕一区二区| 国产欧美精品区一区二区三区 | 国产亚洲1区2区3区| 亚洲一区二区三区不卡国产欧美 | 国产午夜精品福利| 91精品国产一区二区三区香蕉| 老司机午夜精品| 在线观看视频一区二区欧美日韩| 欧美日韩一区二区在线观看视频 | 久久亚洲免费视频| 精品理论电影在线观看| 欧美女孩性生活视频| 国产一区在线不卡| 欧美精品第一页| 色综合色狠狠综合色| 97久久超碰国产精品电影| |精品福利一区二区三区| 亚洲自拍偷拍综合| 久久av老司机精品网站导航| 欧美日韩一本到| 国产999精品久久久久久| 国产一区二区三区高清播放| 国产精品色婷婷| 婷婷激情综合网| 国产成人亚洲综合a∨婷婷图片 | 日本欧美加勒比视频| 成人av在线资源| 免费在线看成人av| 亚洲视频在线一区| 国产日产欧美一区二区视频| 日韩精品自拍偷拍| 亚洲一区在线看| 色久综合一二码| 一区二区三区欧美视频| 波波电影院一区二区三区| 久久精品国产99国产| 亚洲色图视频网| 91在线看国产| 欧美美女一区二区在线观看| a级精品国产片在线观看| 亚洲精品久久久久久国产精华液| 色伊人久久综合中文字幕| 国产精品久久久久久久久快鸭 | 亚洲综合免费观看高清在线观看| 欧美在线综合视频| 国内精品免费在线观看| 亚洲午夜电影在线| 视频精品一区二区| 久久99精品久久只有精品| 欧美一区二区精品在线| 中文字幕一区二区三区不卡在线 | 成人黄色软件下载| 国产精品福利一区| 欧洲av在线精品| 国产精品网站在线观看| 欧美日韩免费在线视频| 欧美人xxxx| 国产sm精品调教视频网站| 国产成人超碰人人澡人人澡| 亚洲伦在线观看| 国产精品一区专区| 日韩一级二级三级精品视频| 欧美日韩成人综合天天影院| 91日韩在线专区| 97超碰欧美中文字幕| xfplay精品久久| 久久久久久久久久看片| 久久影院午夜论| 成人精品视频一区二区三区尤物| 久久一区二区三区国产精品| 色视频欧美一区二区三区| 91麻豆免费看片| 欧美在线观看视频一区二区三区| 亚洲一级二级在线| 在线播放91灌醉迷j高跟美女| 久久99国产精品免费| 东方欧美亚洲色图在线| 亚洲一区二区三区精品在线| 国产乱码精品一区二区三区五月婷| 久久久久久久综合日本| 狠狠色狠狠色综合| 一本色道久久综合亚洲aⅴ蜜桃| 91久久国产最好的精华液| 日本亚洲欧美天堂免费| 午夜婷婷国产麻豆精品| 国产精品视频在线看| 国产精品情趣视频| 678五月天丁香亚洲综合网| 欧美日韩亚洲高清一区二区| 欧美日韩国产精品成人| 国产一区二三区| 国产精品色噜噜| 日韩国产欧美一区二区三区| 粉嫩嫩av羞羞动漫久久久| 九一久久久久久| 久久精品国产亚洲一区二区三区| www.欧美日韩| 亚洲欧洲日韩女同| 国产欧美一区二区三区鸳鸯浴| 国产在线播放一区| 欧美精选一区二区| 午夜免费久久看| 欧美成人高清电影在线| 国产精品一区二区在线观看不卡| 欧美一区二区在线观看| 中文字幕亚洲一区二区va在线| 亚洲制服欧美中文字幕中文字幕| 色综合久久综合| 欧美韩日一区二区三区四区| 99视频在线精品| 色综合一个色综合| 日本亚洲视频在线| 国产老肥熟一区二区三区| 国产欧美日韩另类视频免费观看| 国产精品拍天天在线| 亚洲成人动漫一区| 青青青爽久久午夜综合久久午夜| 国产拍欧美日韩视频二区| 麻豆一区二区三| 视频在线观看一区| 亚洲成av人片在线观看| 天堂成人国产精品一区| 麻豆91在线观看| 韩国精品在线观看| 亚洲精品在线电影| 国产一区二区按摩在线观看| 精品国产91久久久久久久妲己| 精品日韩99亚洲| 懂色av一区二区三区蜜臀| 久久众筹精品私拍模特| 久久国产精品一区二区| 国模套图日韩精品一区二区 | 99视频一区二区| 欧美色图一区二区三区| 69久久夜色精品国产69蝌蚪网| 欧美军同video69gay| 美腿丝袜在线亚洲一区 | 97se亚洲国产综合自在线| 91蝌蚪国产九色| 欧美日韩精品专区| 欧美国产日产图区| 午夜精品久久久久久久久久久| 精品一区二区久久久| 夜夜精品浪潮av一区二区三区| 亚洲一区二区在线视频| 亚洲国产成人私人影院tom| 成人18视频日本| 肉肉av福利一精品导航| 成+人+亚洲+综合天堂| 亚洲h在线观看| 日韩免费一区二区| 中文字幕日韩精品一区| 蜜臀91精品一区二区三区| 国产精品日产欧美久久久久| 开心九九激情九九欧美日韩精美视频电影 | 成人av资源站| 欧美日韩一区高清| 国产精品久久毛片av大全日韩| 一区在线中文字幕| 日本不卡视频在线| 国产成人免费在线视频| 亚洲三级免费观看| 国产精品一区二区三区网站| 99久久99久久精品国产片果冻| 欧美电视剧免费观看| 欧美肥妇毛茸茸| 色欧美乱欧美15图片| 777午夜精品免费视频| 日韩av在线免费观看不卡| 久久久夜色精品亚洲| 日日噜噜夜夜狠狠视频欧美人| 久久国产精品99久久久久久老狼| 亚洲精选视频在线| 亚洲男同性恋视频| 国产福利精品一区| 亚洲视频在线一区观看| 99免费精品视频| 男女男精品视频网| 国产精品77777| 亚洲视频免费看| 91精品国产乱码久久蜜臀| 亚洲高清在线精品| 日韩一区二区三区四区| 成人高清免费在线播放| 91麻豆成人久久精品二区三区| 亚洲永久免费视频|