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

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

?? tntdbctrls.pas

?? TNT Components Source
?? 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一区二区三区免费野_久草精品视频
91麻豆国产精品久久| 中文字幕二三区不卡| 欧美在线综合视频| 一本色道**综合亚洲精品蜜桃冫| 99在线精品观看| 91在线精品一区二区| 91麻豆swag| 欧美写真视频网站| 91福利精品视频| 欧美日韩一区二区三区四区五区| 欧美三级日本三级少妇99| 欧美日韩国产三级| 欧美一区二区三区视频在线 | 亚洲青青青在线视频| 国产精品久久久久一区二区三区共| 欧美经典三级视频一区二区三区| 国产精品蜜臀av| 一区二区三区四区av| 亚洲亚洲精品在线观看| 日日夜夜精品视频免费| 日韩va亚洲va欧美va久久| 美女任你摸久久| 美女脱光内衣内裤视频久久影院| 国产精品原创巨作av| av欧美精品.com| 91久久精品日日躁夜夜躁欧美| 欧美日韩国产在线播放网站| 91麻豆精品国产自产在线观看一区| 精品欧美久久久| 中文字幕中文乱码欧美一区二区| 亚洲人成影院在线观看| 午夜不卡av在线| 九九视频精品免费| 成人动漫一区二区| 欧美自拍偷拍午夜视频| 欧美成人性福生活免费看| 久久精品日产第一区二区三区高清版 | 色综合色综合色综合色综合色综合 | 这里只有精品视频在线观看| 精品久久久久久无| 亚洲视频香蕉人妖| 日本伊人色综合网| 国产成人精品午夜视频免费| 欧美色中文字幕| 久久日韩精品一区二区五区| 亚洲欧洲中文日韩久久av乱码| 青娱乐精品视频| 91玉足脚交白嫩脚丫在线播放| 欧美日韩黄视频| 亚洲国产精品精华液ab| 午夜影视日本亚洲欧洲精品| 国产盗摄女厕一区二区三区| 91国模大尺度私拍在线视频| 日韩免费视频一区| 亚洲精品五月天| 国内精品免费**视频| 欧美调教femdomvk| 26uuu久久综合| 亚洲午夜国产一区99re久久| 国产成人免费在线观看不卡| 欧美挠脚心视频网站| 国产精品丝袜黑色高跟| 男男成人高潮片免费网站| 91免费小视频| 久久久久高清精品| 蜜桃av一区二区| 在线亚洲欧美专区二区| 欧美激情中文不卡| 久久国产麻豆精品| 欧美中文字幕一二三区视频| 国产精品妹子av| 国产在线播精品第三| 欧美精品高清视频| 国产精品二区一区二区aⅴ污介绍| 成人精品国产免费网站| 精品88久久久久88久久久| 亚洲精品美腿丝袜| 成人av网站在线观看免费| 精品免费视频一区二区| 亚洲午夜在线观看视频在线| 色综合久久久久| 国产精品美女一区二区在线观看| 久国产精品韩国三级视频| 欧美日韩国产123区| 亚洲高清免费观看 | 日韩欧美激情四射| 午夜精品123| av一区二区久久| 国产精品美女久久久久久久久| 国产一区日韩二区欧美三区| 欧美一区二区三区在线视频| 亚洲国产精品嫩草影院| 99精品视频中文字幕| 国产精品成人一区二区三区夜夜夜 | 国产69精品久久99不卡| 精品国产91久久久久久久妲己 | 9人人澡人人爽人人精品| 久久精品网站免费观看| 国产在线精品一区二区三区不卡| 精品久久久久久久一区二区蜜臀| 蜜臂av日日欢夜夜爽一区| 91精品在线观看入口| 亚洲二区在线观看| 欧美日韩一卡二卡| 亚洲超碰精品一区二区| 欧美另类久久久品| 午夜a成v人精品| 欧美电影免费提供在线观看| 激情综合五月婷婷| 久久久亚洲综合| 成人性生交大合| 国产精品情趣视频| 91无套直看片红桃| 亚洲老妇xxxxxx| 欧美伦理视频网站| 美洲天堂一区二卡三卡四卡视频| 精品电影一区二区| 国产麻豆91精品| 亚洲丝袜另类动漫二区| 欧美中文一区二区三区| 丝袜亚洲另类丝袜在线| 欧美videossexotv100| 国产乱码精品一区二区三区av | 精品噜噜噜噜久久久久久久久试看| 日本成人超碰在线观看| 精品电影一区二区| 成人性生交大片免费看在线播放| 亚洲精品国产第一综合99久久| 欧美性淫爽ww久久久久无| 日韩av电影免费观看高清完整版| 精品伦理精品一区| av不卡在线观看| 亚洲一区二区高清| 欧美精品一区二| 色香蕉成人二区免费| 午夜精品久久久久久久久久| 2021中文字幕一区亚洲| a级精品国产片在线观看| 亚洲综合免费观看高清完整版 | 欧美性大战久久久久久久蜜臀| 亚洲不卡一区二区三区| 久久这里只有精品首页| 91色视频在线| 日韩福利电影在线| 中文久久乱码一区二区| 日本高清无吗v一区| 美女视频一区二区| 一区在线观看免费| 日韩精品一区二区三区老鸭窝| 顶级嫩模精品视频在线看| 亚洲成年人网站在线观看| 国产日韩欧美一区二区三区乱码| 在线视频一区二区三| 国产一区二区在线免费观看| 亚洲福中文字幕伊人影院| 久久久.com| 欧美日韩国产免费一区二区| 国产一区二区调教| 亚洲一卡二卡三卡四卡| 久久久久久久电影| 欧美精品少妇一区二区三区| 丁香婷婷综合色啪| 奇米精品一区二区三区在线观看 | 五月激情丁香一区二区三区| 国产婷婷色一区二区三区四区| 色又黄又爽网站www久久| 精品一区二区三区久久久| 亚洲裸体xxx| 国产日韩欧美综合一区| 日韩欧美国产三级| 欧美图区在线视频| 97精品久久久久中文字幕| 精品一区二区三区在线播放| 亚洲国产欧美在线| 国产精品视频你懂的| 2020国产精品久久精品美国| 欧美亚一区二区| 成人美女视频在线观看18| 蜜臀91精品一区二区三区| 亚洲成人综合在线| 亚洲卡通欧美制服中文| 亚洲欧洲一区二区在线播放| 久久在线免费观看| 欧美mv日韩mv亚洲| 4438x亚洲最大成人网| 在线观看网站黄不卡| 色综合视频在线观看| 成人高清av在线| 国产福利精品一区二区| 精品一区二区三区在线播放视频| 香蕉加勒比综合久久| 亚洲自拍偷拍av| 亚洲激情中文1区| 亚洲情趣在线观看| 国产精品久久毛片av大全日韩| 欧美国产日韩一二三区| 26uuu国产日韩综合| 日韩欧美一级片| 日韩欧美久久久| www国产成人免费观看视频 深夜成人网 |