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

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

?? tntdbctrls.pas

?? TNT Components Source
?? 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一区二区三区免费野_久草精品视频
日韩免费视频线观看| 色综合一区二区三区| 最新中文字幕一区二区三区| a亚洲天堂av| 日韩精品一卡二卡三卡四卡无卡| 精品国产欧美一区二区| 欧美偷拍一区二区| 91欧美一区二区| 国产a久久麻豆| 麻豆91在线播放免费| 亚洲国产精品一区二区www在线 | 欧美精品一区二区三区高清aⅴ| 成人激情综合网站| 国产美女视频91| 蜜桃久久久久久| 奇米影视7777精品一区二区| 亚洲精选视频在线| 亚洲欧美影音先锋| 成人欧美一区二区三区| 国产欧美一区二区精品秋霞影院 | 无码av中文一区二区三区桃花岛| 国产精品久久久久久一区二区三区| 欧美tickling挠脚心丨vk| 欧美精品乱人伦久久久久久| 日韩欧美123| 亚洲色欲色欲www| 日韩午夜在线观看| 欧美一级二级在线观看| 欧美日韩一二三| 337p亚洲精品色噜噜| 日韩免费在线观看| 久久影音资源网| 国产欧美日韩中文久久| 国产欧美日韩综合精品一区二区| 久久久亚洲精华液精华液精华液| 精品国产乱码久久久久久夜甘婷婷| 日韩美一区二区三区| 精品久久久久一区| 亚洲国产高清在线观看视频| 国产精品免费丝袜| 亚洲一区二区三区四区在线免费观看 | 欧美电影精品一区二区| 久久久久久久综合日本| 亚洲青青青在线视频| 日本不卡123| 国产成人福利片| 色8久久精品久久久久久蜜 | 欧美r级在线观看| 自拍偷拍欧美精品| 久久99国产精品免费| 99re6这里只有精品视频在线观看| 欧美三级三级三级| 国产精品国产三级国产专播品爱网| 国产亚洲一区二区三区在线观看 | 中文字幕综合网| 欧美aaaaaa午夜精品| av中文字幕一区| 精品国产乱码久久久久久久久| 亚洲人成网站精品片在线观看| 日韩精品亚洲一区二区三区免费| 国产aⅴ综合色| 精品sm捆绑视频| 日本aⅴ免费视频一区二区三区| 99视频在线精品| 国产欧美日韩中文久久| 精品中文av资源站在线观看| 欧美在线一二三四区| 1000部国产精品成人观看| 狠狠色丁香久久婷婷综合_中| 精品1区2区3区| 亚洲国产精品一区二区www在线| 99久久免费视频.com| 国产清纯美女被跳蛋高潮一区二区久久w | 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 久久精品无码一区二区三区| 亚欧色一区w666天堂| 欧美日本一区二区| 午夜av区久久| 精品精品国产高清a毛片牛牛| 日韩专区一卡二卡| 精品免费国产一区二区三区四区| 五月天亚洲婷婷| 欧美mv日韩mv国产网站| 美腿丝袜亚洲三区| 欧美国产精品一区| 国产亲近乱来精品视频 | 欧美不卡一区二区三区四区| 日韩精品欧美成人高清一区二区| 91精品国产综合久久国产大片| 亚洲va在线va天堂| 欧美亚洲另类激情小说| 国产亚洲精品bt天堂精选| 免费在线观看日韩欧美| 久久影院视频免费| 成人avav在线| 蜜桃久久精品一区二区| 中文字幕乱码久久午夜不卡| 91视视频在线观看入口直接观看www | 亚洲国产成人91porn| 日韩精品中午字幕| caoporm超碰国产精品| 日本伊人精品一区二区三区观看方式 | 一级特黄大欧美久久久| 日韩免费高清视频| 欧美性极品少妇| 国产91清纯白嫩初高中在线观看| 亚洲第一久久影院| 中文字幕高清不卡| 日韩亚洲欧美在线| 欧美日韩一二区| 色老汉av一区二区三区| 国产乱码精品一区二区三区五月婷 | 亚洲精品一区二区三区在线观看| 99精品视频中文字幕| 韩国女主播成人在线观看| 一区二区三区欧美久久| 国产精品色噜噜| 久久久久久久久久久久电影 | 亚洲免费资源在线播放| 2020国产精品自拍| 欧美不卡123| 日韩免费高清视频| 日韩一区二区中文字幕| 欧美日韩久久不卡| 欧美精品在线一区二区三区| 一本色道久久综合亚洲91| 风间由美一区二区av101| 精品一二线国产| 国产美女视频一区| 国产**成人网毛片九色| 国产伦理精品不卡| 成人黄动漫网站免费app| 国产宾馆实践打屁股91| 成人午夜视频在线观看| 成人精品视频网站| 91精品福利视频| 欧美丰满美乳xxx高潮www| 91.成人天堂一区| 精品国产髙清在线看国产毛片| 久久亚洲一级片| 国产精品久久久久久久裸模| 亚洲女人小视频在线观看| 亚洲成av人片一区二区三区| 麻豆免费看一区二区三区| 国产另类ts人妖一区二区| caoporen国产精品视频| 欧美日韩综合在线| 久久久久国产一区二区三区四区| 国产人成亚洲第一网站在线播放| 一区二区在线免费| 九色综合国产一区二区三区| 色综合久久久久久久久久久| 欧美一区二区黄| 亚洲人成网站精品片在线观看| 午夜精彩视频在线观看不卡| 国产精品1024| 欧美一区二区三区小说| 亚洲欧美一区二区在线观看| 日韩有码一区二区三区| 91丝袜美腿高跟国产极品老师| 91精品综合久久久久久| 1区2区3区欧美| 高清久久久久久| 日韩精品中文字幕在线不卡尤物| 1024国产精品| 成人免费观看视频| 精品日本一线二线三线不卡| 亚洲国产aⅴ天堂久久| 成人精品国产一区二区4080| 久久午夜羞羞影院免费观看| 日韩成人精品在线观看| 欧美午夜宅男影院| 洋洋成人永久网站入口| 色琪琪一区二区三区亚洲区| 亚洲欧美日韩一区二区| 亚洲一区自拍偷拍| 裸体一区二区三区| 欧美怡红院视频| 亚洲激情成人在线| 欧美三级欧美一级| 天堂成人免费av电影一区| 欧美日本在线看| 免费欧美日韩国产三级电影| 在线不卡免费av| 午夜精品久久久久久久99樱桃| 欧美专区在线观看一区| 亚洲国产一区二区三区| 6080国产精品一区二区| 秋霞av亚洲一区二区三| 久久精品这里都是精品| caoporm超碰国产精品| 一区二区久久久| 日韩欧美一二区| 懂色一区二区三区免费观看| 国产精品夫妻自拍| 欧美日韩国产在线播放网站| 国产在线乱码一区二区三区| 国产日韩精品一区| 欧美性三三影院| 国产麻豆9l精品三级站|