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

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

?? tntdbctrls.pas

?? Delphi知道現在也沒有提供Unicode支持
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
      Redraw := (Style <> csSimple) and HandleAllocated;
      if Redraw then Items.BeginUpdate;
      try
        if NewValue = '' then I := -1 else I := Items.IndexOf(NewValue);
        ItemIndex := I;
      finally
        Items.EndUpdate;
      end;
      if I >= 0 then Exit;
    end;
    if Style in [csDropDown, csSimple] then Text := NewValue;
  end;
end;

function TTntDBComboBox.GetComboValue: Variant;
var
  I: Integer;
begin
  if Style in [csDropDown, csSimple] then Result := Text else
  begin
    I := ItemIndex;
    if I < 0 then Result := '' else Result := Items[I];
  end;
end;

{ TTntDBCheckBox }

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

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

function TTntDBCheckBox.IsCaptionStored: Boolean;
begin
  Result := TntControl_IsCaptionStored(Self);
end;

function TTntDBCheckBox.GetCaption: TWideCaption;
begin
  Result := TntControl_GetText(Self)
end;

procedure TTntDBCheckBox.SetCaption(const Value: TWideCaption);
begin
  TntControl_SetText(Self, Value);
end;

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

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

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

procedure TTntDBCheckBox.Toggle;
var
  FDataLink: TDataLink;
begin
  inherited;
  FDataLink := TDataLink(Perform(CM_GETDATALINK, 0, 0)) as TFieldDataLink;
  FDataLink.UpdateRecord;
end;

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

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

{ TTntDBRichEdit }

constructor TTntDBRichEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  inherited ReadOnly := True;
  FAutoDisplay := True;
  FDataLink := TFieldDataLink.Create;
  FDataLink.Control := Self;
  FDataLink.OnDataChange := DataChange;
  FDataLink.OnEditingChange := EditingChange;
  FDataLink.OnUpdateData := UpdateData;
end;

destructor TTntDBRichEdit.Destroy;
begin
  FDataLink.Free;
  FDataLink := nil;
  inherited Destroy;
end;

procedure TTntDBRichEdit.Loaded;
begin
  inherited Loaded;
  if (csDesigning in ComponentState) then
    DataChange(Self)
end;

procedure TTntDBRichEdit.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
  if (Operation = opRemove) and (FDataLink <> nil) and
    (AComponent = DataSource) then DataSource := nil;
end;

function TTntDBRichEdit.UseRightToLeftAlignment: Boolean;
begin
  Result := DBUseRightToLeftAlignment(Self, Field);
end;

procedure TTntDBRichEdit.BeginEditing;
begin
  if not FDataLink.Editing then
  try
    if FieldIsBlobLike(Field) then
      FDataSave := Field.AsString{TNT-ALLOW AsString};
    FDataLink.Edit;
  finally
    FDataSave := '';
  end;
end;

procedure TTntDBRichEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited KeyDown(Key, Shift);
  if FMemoLoaded then
  begin
    if (Key = VK_DELETE) or (Key = VK_BACK) or
      ((Key = VK_INSERT) and (ssShift in Shift)) or
      (((Key = Ord('V')) or (Key = Ord('X'))) and (ssCtrl in Shift)) then
      BeginEditing;
  end;
end;

procedure TTntDBRichEdit.KeyPress(var Key: AnsiChar);
begin
  inherited KeyPress(Key);
  if FMemoLoaded then
  begin
    if (Key in [#32..#255]) and (Field <> nil) and
      not Field.IsValidChar(Key) then
    begin
      MessageBeep(0);
      Key := #0;
    end;
    case Key of
      ^H, ^I, ^J, ^M, ^V, ^X, #32..#255:
        BeginEditing;
      #27:
        FDataLink.Reset;
    end;
  end else
  begin
    if Key = #13 then LoadMemo;
    Key := #0;
  end;
end;

procedure TTntDBRichEdit.Change;
begin
  if FMemoLoaded then
    FDataLink.Modified;
  FMemoLoaded := True;
  inherited Change;
end;

procedure TTntDBRichEdit.CNNotify(var Message: TWMNotify);
begin
  inherited;
  if Message.NMHdr^.code = EN_PROTECTED then
    Message.Result := 0 { allow the operation (otherwise the control might appear stuck) }
end;

function TTntDBRichEdit.GetDataSource: TDataSource;
begin
  Result := FDataLink.DataSource;
end;

procedure TTntDBRichEdit.SetDataSource(Value: TDataSource);
begin
  FDataLink.DataSource := Value;
  if Value <> nil then Value.FreeNotification(Self);
end;

function TTntDBRichEdit.GetDataField: WideString;
begin
  Result := FDataLink.FieldName;
end;

procedure TTntDBRichEdit.SetDataField(const Value: WideString);
begin
  FDataLink.FieldName := Value;
end;

function TTntDBRichEdit.GetReadOnly: Boolean;
begin
  Result := FDataLink.ReadOnly;
end;

procedure TTntDBRichEdit.SetReadOnly(Value: Boolean);
begin
  FDataLink.ReadOnly := Value;
end;

function TTntDBRichEdit.GetField: TField;
begin
  Result := FDataLink.Field;
end;

procedure TTntDBRichEdit.InternalLoadMemo;
var
  Stream: TStringStream{TNT-ALLOW TStringStream};
begin
  if PlainText then
    Text := GetAsWideString(Field)
  else begin
    Stream := TStringStream{TNT-ALLOW TStringStream}.Create(Field.AsString{TNT-ALLOW AsString});
    try
      Lines.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
  end;
end;

procedure TTntDBRichEdit.LoadMemo;
begin
  if not FMemoLoaded and Assigned(Field) and FieldIsBlobLike(Field) then
  begin
    try
      InternalLoadMemo;
      FMemoLoaded := True;
    except
      { Rich Edit Load failure }
      on E:EOutOfResources do
        Lines.Text := WideFormat('(%s)', [E.Message]);
    end;
    EditingChange(Self);
  end;
end;

procedure TTntDBRichEdit.DataChange(Sender: TObject);
begin
  if Field <> nil then
    if FieldIsBlobLike(Field) then
    begin
      if FAutoDisplay or (FDataLink.Editing and FMemoLoaded) then
      begin
        { Check if the data has changed since we read it the first time }
        if (FDataSave <> '') and (FDataSave = Field.AsString{TNT-ALLOW AsString}) then Exit;
        FMemoLoaded := False;
        LoadMemo;
      end else
      begin
        Text := WideFormat('(%s)', [Field.DisplayName]);
        FMemoLoaded := False;
      end;
    end else
    begin
      if FFocused and FDataLink.CanModify then
        Text := GetWideText(Field)
      else
        Text := GetWideDisplayText(Field);
      FMemoLoaded := True;
    end
  else
  begin
    if csDesigning in ComponentState then Text := Name else Text := '';
    FMemoLoaded := False;
  end;
  if HandleAllocated then
    RedrawWindow(Handle, nil, 0, RDW_INVALIDATE or RDW_ERASE or RDW_FRAME);
end;

procedure TTntDBRichEdit.EditingChange(Sender: TObject);
begin
  inherited ReadOnly := not (FDataLink.Editing and FMemoLoaded);
end;

procedure TTntDBRichEdit.InternalSaveMemo;
var
  Stream: TStringStream{TNT-ALLOW TStringStream};
begin
  if PlainText then
    SetAsWideString(Field, Text)
  else begin
    Stream := TStringStream{TNT-ALLOW TStringStream}.Create('');
    try
      Lines.SaveToStream(Stream);
      Field.AsString{TNT-ALLOW AsString} := Stream.DataString;
    finally
      Stream.Free;
    end;
  end;
end;

procedure TTntDBRichEdit.UpdateData(Sender: TObject);
begin
  if FieldIsBlobLike(Field) then
    InternalSaveMemo
  else
    SetAsWideString(Field, Text);
end;

procedure TTntDBRichEdit.SetFocused(Value: Boolean);
begin
  if FFocused <> Value then
  begin
    FFocused := Value;
    if not Assigned(Field) or not FieldIsBlobLike(Field) then
      FDataLink.Reset;
  end;
end;

procedure TTntDBRichEdit.CMEnter(var Message: TCMEnter);
begin
  SetFocused(True);
  inherited;
end;

procedure TTntDBRichEdit.CMExit(var Message: TCMExit);
begin
  try
    FDataLink.UpdateRecord;
  except
    SetFocus;
    raise;
  end;
  SetFocused(False);
  inherited;
end;

procedure TTntDBRichEdit.SetAutoDisplay(Value: Boolean);
begin
  if FAutoDisplay <> Value then
  begin
    FAutoDisplay := Value;
    if Value then LoadMemo;
  end;
end;

procedure TTntDBRichEdit.WMLButtonDblClk(var Message: TWMLButtonDblClk);
begin
  if not FMemoLoaded then LoadMemo else inherited;
end;

procedure TTntDBRichEdit.WMCut(var Message: TMessage);
begin
  BeginEditing;
  inherited;
end;

procedure TTntDBRichEdit.WMPaste(var Message: TMessage);
begin
  BeginEditing;
  inherited;
end;

procedure TTntDBRichEdit.CMGetDataLink(var Message: TMessage);
begin
  Message.Result := Integer(FDataLink);
end;

function TTntDBRichEdit.ExecuteAction(Action: TBasicAction): Boolean;
begin
  Result := inherited ExecuteAction(Action) or (FDataLink <> nil) and
    FDataLink.ExecuteAction(Action);
end;

function TTntDBRichEdit.UpdateAction(Action: TBasicAction): Boolean;
begin
  Result := inherited UpdateAction(Action) or (FDataLink <> nil) and
    FDataLink.UpdateAction(Action);
end;

{ TTntDBMemo }

constructor TTntDBMemo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  inherited ReadOnly := True;
  ControlStyle := ControlStyle + [csReplicatable];
  FAutoDisplay := True;
  FDataLink := TFieldDataLink.Create;
  FDataLink.Control := Self;
  FDataLink.OnDataChange := DataChange;
  FDataLink.OnEditingChange := EditingChange;
  FDataLink.OnUpdateData := UpdateData;
  FPaintControl := TTntPaintControl.Create(Self, 'EDIT');
end;

destructor TTntDBMemo.Destroy;
begin
  FPaintControl.Free;
  FDataLink.Free;
  FDataLink := nil;
  inherited Destroy;
end;

procedure TTntDBMemo.Loaded;
begin
  inherited Loaded;
  if (csDesigning in ComponentState) then DataChange(Self);
end;

procedure TTntDBMemo.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and (FDataLink <> nil) and
    (AComponent = DataSource) then DataSource := nil;
end;

function TTntDBMemo.UseRightToLeftAlignment: Boolean;
begin
  Result := DBUseRightToLeftAlignment(Self, Field);
end;

procedure TTntDBMemo.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited KeyDown(Key, Shift);
  if FMemoLoaded then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99麻豆久久久国产精品免费优播| 国产大陆a不卡| 欧美日韩精品电影| 国产综合色在线视频区| 精品免费日韩av| 在线一区二区视频| 成人一道本在线| 国产呦萝稀缺另类资源| 亚洲精品国产高清久久伦理二区| 91精品国产乱码| 欧亚一区二区三区| 成人午夜短视频| 国产精品一级二级三级| 日本一不卡视频| 亚洲一区二区精品视频| 亚洲欧美一区二区三区国产精品 | 日韩精品一区二区三区蜜臀| 91国在线观看| 欧美午夜精品久久久久久超碰| 波多野洁衣一区| 成人一区二区视频| 99久久伊人精品| 99re热这里只有精品视频| 波波电影院一区二区三区| 东方aⅴ免费观看久久av| 成人av在线播放网站| 高清成人在线观看| 亚洲精品一区二区三区蜜桃下载| 老司机精品视频一区二区三区| 首页亚洲欧美制服丝腿| 视频一区视频二区中文字幕| 中文字幕一区日韩精品欧美| 成人av网址在线| 九九在线精品视频| 五月综合激情网| 一本久久a久久免费精品不卡| 成人精品一区二区三区中文字幕| 色综合夜色一区| 日韩欧美国产电影| 国产精品丝袜91| 蜜臀a∨国产成人精品| 国产麻豆视频精品| 欧美日韩一区二区三区四区五区| 欧美xingq一区二区| 亚洲女女做受ⅹxx高潮| 奇米影视在线99精品| 国产成人免费视频网站高清观看视频| 成人97人人超碰人人99| 日韩欧美专区在线| 亚洲欧洲综合另类| 成人福利视频在线看| 91麻豆精品国产自产在线 | 亚洲综合精品自拍| 高清不卡一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕中文字幕一区| 韩国女主播一区| 欧美一二三在线| 亚洲综合在线五月| 99精品偷自拍| 中文文精品字幕一区二区| 久久精品国产成人一区二区三区| 91黄色在线观看| 亚洲激情图片一区| 一本色道a无线码一区v| 国产精品沙发午睡系列990531| 激情六月婷婷综合| 久久蜜桃av一区精品变态类天堂 | 欧美日韩亚洲综合在线| 成人免费小视频| 成人的网站免费观看| 欧美色图在线观看| 国产精品久久久久久久第一福利| 亚洲影院在线观看| 在线国产电影不卡| 91福利社在线观看| 日韩午夜激情免费电影| 五月婷婷久久综合| 日韩午夜三级在线| 国产在线播精品第三| 日韩欧美激情一区| 韩国av一区二区| 国产欧美一区二区精品忘忧草| 国产一区二区三区观看| 国产视频亚洲色图| 风间由美一区二区三区在线观看| 欧美日韩国产三级| 韩国精品久久久| 亚洲欧美激情一区二区| 欧美日韩色一区| 国产美女精品人人做人人爽 | 亚洲一级二级三级| 日韩一级视频免费观看在线| 国产ts人妖一区二区| 一区二区三区不卡在线观看| 欧美一区二区三区免费| 国产精品18久久久久| 亚洲卡通动漫在线| 精品对白一区国产伦| 色婷婷综合久久久久中文一区二区 | 亚洲精品午夜久久久| 日韩欧美二区三区| 91国偷自产一区二区使用方法| 麻豆精品一区二区| 亚洲最大成人网4388xx| 国产欧美中文在线| 日韩精品在线看片z| 粉嫩av一区二区三区| 日本免费新一区视频| 中文字幕一区二区三| 欧美videossexotv100| 在线亚洲一区二区| 97久久精品人人做人人爽| 久久精品999| 日本中文字幕一区二区有限公司| 亚洲激情成人在线| 日韩理论在线观看| 日韩精品一区二区三区三区免费| 欧美日韩午夜精品| 欧美放荡的少妇| 欧美日韩精品一区二区天天拍小说 | 国产精品一区二区黑丝| 麻豆专区一区二区三区四区五区| 丝袜亚洲另类欧美综合| 日韩精品1区2区3区| 免费不卡在线观看| 麻豆免费精品视频| 国产精品系列在线观看| 国产福利精品一区二区| 国产不卡视频一区二区三区| 成人午夜视频网站| 色88888久久久久久影院按摩| 色婷婷综合五月| 欧美肥胖老妇做爰| 欧美视频你懂的| 欧美一区二区不卡视频| 久久亚洲影视婷婷| 中国色在线观看另类| 一区二区三区在线视频观看| 午夜av一区二区| 国产高清成人在线| 在线欧美日韩国产| 日韩欧美在线网站| 1000部国产精品成人观看| 日韩影院免费视频| 国产精品一区二区在线播放| 色8久久人人97超碰香蕉987| 日韩视频永久免费| 亚洲精品大片www| 激情综合色综合久久综合| 99re视频精品| 欧美精品一区二区三区四区| 亚洲品质自拍视频| 国产真实乱子伦精品视频| 色哟哟精品一区| 欧美激情一区二区三区全黄| 奇米影视7777精品一区二区| 91免费观看视频在线| 久久久久久亚洲综合影院红桃| 性做久久久久久久免费看| 91首页免费视频| 国产日产精品1区| 黄色精品一二区| 欧美日韩国产免费| 中文字幕亚洲电影| 国产一区二区精品久久91| 6080国产精品一区二区| 亚洲一二三四久久| 91麻豆免费视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 蜜桃一区二区三区四区| 欧美日韩国产综合草草| 亚洲女与黑人做爰| 一本色道久久综合亚洲91| 一区二区三区四区在线免费观看| 不卡视频在线观看| 亚洲天天做日日做天天谢日日欢 | 欧美精品亚洲二区| 视频一区二区中文字幕| 欧美一区二区视频网站| 日本亚洲最大的色成网站www| 欧美午夜精品久久久久久孕妇| 亚洲一二三四区不卡| 欧美精品日韩综合在线| 免费久久99精品国产| 精品国产麻豆免费人成网站| 国产精品亚洲第一区在线暖暖韩国| 欧美不卡激情三级在线观看| 狠狠色狠狠色综合日日91app| 精品国产精品网麻豆系列 | 宅男在线国产精品| 国产一区二区三区免费在线观看| 精品99一区二区| 色综合久久天天| 日本一区中文字幕| 久久综合中文字幕| 欧美一区二区三区电影| 免费欧美高清视频| 精品久久久久久久久久久久久久久久久 | 亚洲欧洲国产专区|