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

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

?? dbctrlseh.pas

?? 一個(gè)功能強(qiáng)大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號(hào):
    FModified := False;
  end else if FModified then
  begin
    if (Field <> nil) and Assigned(FOnUpdateData) then FOnUpdateData(Self);
    FModified := False;
  end;
end;

procedure TFieldDataLinkEh.UpdateDataIndepended;
var
  OldDataIndepended: Boolean;
begin
  if FDataIndepended <> ((DataSource = nil) and (FieldName = '')) then
  begin
    OldDataIndepended := FDataIndepended;
    FDataIndepended := (DataSource = nil) and (FieldName = '');
    DataIndependentValue := Null;
    //if {FDataIndepended and} Assigned(OnRecordChange) then OnActiveChange(Self);
    LayoutChanged;
    if not OldDataIndepended and FDataIndepended then
      RecordChanged(nil);
  end;
end;

procedure TFieldDataLinkEh.ActiveChanged;
begin
  UpdateField;
  if Assigned(FOnActiveChange) then FOnActiveChange(Self);
end;

procedure TFieldDataLinkEh.EditingChanged;
begin
  SetEditing(inherited Editing and CanModify);
end;

function TFieldDataLinkEh.FieldFound(Value: TField): Boolean;
var i: Integer;
begin
  Result := False;
  for i := 0 to Length(FFields) - 1 do
    if FFields[i] = Value then
    begin
      Result := True;
      Exit;
    end;
end;

{$IFDEF CIL}
procedure TFieldDataLinkEh.FocusControl(const Field: TField);
begin
  if (Field <> nil) and FieldFound(Field) and (FControl is TWinControl) then
    if TWinControl(FControl).CanFocus then
    begin
      TWinControl(FControl).SetFocus;
    end;
end;
{$ELSE}
procedure TFieldDataLinkEh.FocusControl(Field: TFieldRef);
begin
  if (Field^ <> nil) and FieldFound(Field^) and (FControl is TWinControl) then
    if TWinControl(FControl).CanFocus then
    begin
      Field^ := nil;
      TWinControl(FControl).SetFocus;
    end;
end;
{$ENDIF}

function TFieldDataLinkEh.GetField: TField;
begin
  if Length(FFields) = 0
    then Result := nil
    else Result := FFields[0];
end;

function TFieldDataLinkEh.GetFieldsCount: Integer;
begin
  Result := Length(FFields);
end;

function TFieldDataLinkEh.GetFieldsField(Index: Integer): TField;
begin
  if Length(FFields) = 0
    then Result := nil
    else Result := FFields[Index];
end;

procedure TFieldDataLinkEh.LayoutChanged;
begin
  UpdateField;
end;

procedure TFieldDataLinkEh.Reset;
begin
  RecordChanged(nil);
end;

procedure TFieldDataLinkEh.SetMultiFields(const Value: Boolean);
begin
  if FMultiFields <> Value then
  begin
    FMultiFields := Value;
    UpdateField;
  end;
end;

procedure TFieldDataLinkEh.UpdateField;
var
  FieldList: TObjectList;
begin
  FieldList := TObjectList.Create(False);
  if inherited Active and (FFieldName <> '') then
  begin
    if MultiFields then
      if Assigned(FControl)
        then GetFieldsProperty(FieldList, DataSource.DataSet, FControl, FFieldName)
        else DataSet.GetFieldList(FieldList, FFieldName)
    else
      if Assigned(FControl)
        then FieldList.Add(GetFieldProperty(DataSource.DataSet, FControl, FFieldName))
        else FieldList.Add(DataSource.DataSet.FieldByName(FFieldName));
  end;
  SetField(FieldList);
  FieldList.Free;
end;

procedure TFieldDataLinkEh.UpdateRightToLeft;
var
  IsRightAligned: Boolean;
  AUseRightToLeftAlignment: Boolean;
begin
  if Assigned(FControl) and (FControl is TWinControl) then
    with FControl as TWinControl do
      if IsRightToLeft then
      begin
        IsRightAligned :=
          (GetWindowLong(Handle, GWL_EXSTYLE) and WS_EX_RIGHT) = WS_EX_RIGHT;
        AUseRightToLeftAlignment :=
          DBUseRightToLeftAlignment(TControl(FControl), Field);
        if (IsRightAligned and (not AUseRightToLeftAlignment)) or
          ((not IsRightAligned) and AUseRightToLeftAlignment) then
          Perform(CM_RECREATEWND, 0, 0);
      end;
end;

procedure TFieldDataLinkEh.SetEditing(Value: Boolean);
begin
  if FEditing <> Value then
  begin
    FEditing := Value;
    FModified := False;
    if Assigned(FOnEditingChange) then FOnEditingChange(Self);
  end;
end;

procedure TFieldDataLinkEh.SetField(Value: TObjectList);
  function CompareFieldsAndList(Value: TObjectList): Boolean;
  begin
    Result := True;
  end;
var i: Integer;
begin
  if CompareFieldsAndList(Value) then
  begin
    SetLength(FFields, Value.Count);
    for i := 0 to Value.Count - 1 do
      FFields[i] := TField(Value[i]);
    EditingChanged;
    RecordChanged(nil);
    UpdateRightToLeft;
  end;
end;

procedure TFieldDataLinkEh.SetModified(Value: Boolean);
begin
  FModified := Value;
end;

{$IFDEF CIL}
procedure TFieldDataLinkEh.DataEvent(Event: TDataEvent; Info: TObject);
{$ELSE}
procedure TFieldDataLinkEh.DataEvent(Event: TDataEvent; Info: Integer);
{$ENDIF}
begin
  inherited DataEvent(Event, Info);
{$IFDEF EH_LIB_7}
  if Event = deDisabledStateChange then
  begin
    if Boolean(Info)
      then UpdateField
      else SetLength(FFields, 0);
  end;
{$ENDIF}
end;

{ TCustomDBEditEh }

constructor TCustomDBEditEh.Create(AOwner: TComponent);
{$ifdef eval}
  {$INCLUDE eval}
{$else}
begin
{$endif}

  //ComponentState := ComponentState + [csDesigning];
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csReplicatable, csCaptureMouse];
  FDataLink := CreateDataLink;
  FDataLink.Control := Self;
  FDataLink.OnDataChange := DataChange;
  FDataLink.OnEditingChange := EditingChange;
  FDataLink.OnUpdateData := InternalUpdateData;
  FDataLink.OnActiveChange := ActiveChange;

  FEditButton := CreateEditButton;
  FEditButton.OnChanged := EditButtonChanged;
  FEditButtons := CreateEditButtons;
  FEditButtons.OnChanged := EditButtonChanged;
  FEditImage := CreateEditImage;

  FMRUList := TMRUListEh.Create(Self);
  FMRUList.OnSetDropDown := MRUListDropDown;
  FMRUList.OnSetCloseUp := MRUListCloseUp;

  UpdateControlReadOnly;
  UpdateImageIndex;
end;

destructor TCustomDBEditEh.Destroy;
begin
  FreeAndNil(FEditImage);
//  FEditImage := nil;
  FreeAndNil(FEditButton);
  FreeAndNil(FEditButtons);
  FreeAndNil(FDataLink);
//  FDataLink := nil;
  FreeAndNil(FCanvas);
  FreeAndNil(FMRUList);
  inherited Destroy;
end;

procedure TCustomDBEditEh.ResetMaxLength;
var
  F: TField;
begin
  if (MaxLength > 0) then
    if Assigned(DataSource) and Assigned(DataSource.DataSet) then
    begin
      F := DataSource.DataSet.FindField(DataField);
      if Assigned(F) and (F.DataType in [ftString, ftWideString]) and (F.Size = MaxLength)
        then MaxLength := 0;
    end //else
//      MaxLength := 0;
end;

procedure TCustomDBEditEh.AdjustHeight;
var
  DC: HDC;
  SaveFont: HFont;
  I: Integer;
  SysMetrics, Metrics: TTextMetric;
begin
  DC := GetDC(0);
  GetTextMetrics(DC, SysMetrics);
  SaveFont := SelectObject(DC, Font.Handle);
  GetTextMetrics(DC, Metrics);
  SelectObject(DC, SaveFont);
  ReleaseDC(0, DC);
  if NewStyleControls then
  begin
    if Ctl3D then I := 8 else I := 6;
    if Flat then Dec(I, 2);
    I := GetSystemMetrics(SM_CYBORDER) * I;
  end else
  begin
    I := SysMetrics.tmHeight;
    if I > Metrics.tmHeight then I := Metrics.tmHeight;
    I := I div 4 + GetSystemMetrics(SM_CYBORDER) * 4;
  end;
  if (EditImage.Images <> nil) and EditImage.UseImageHeight and
     (EditImage.Images.Height > Metrics.tmHeight)
    then Height := EditImage.Images.Height + I
    else Height := Metrics.tmHeight + I;
end;

function TCustomDBEditEh.ButtonRect: TRect;
begin
  if NewStyleControls and not Ctl3D and (BorderStyle = bsSingle)
    then Result := Rect(ClientWidth - FButtonWidth - 1, 1, ClientWidth - 1, ClientHeight - 1)
    else Result := Rect(ClientWidth - FButtonWidth, 0, ClientWidth, ClientHeight);
  if inherited UseRightToLeftAlignment then
    OffsetRect(Result, FButtonWidth - ClientWidth, 0);
end;

function TCustomDBEditEh.ButtonEnabled: Boolean;
begin
  Result := Enabled and Assigned(FDataLink) and FDataLink.Active;
end;

procedure TCustomDBEditEh.DefaultHandler(var Message);
var
  Msg: TMessage;
begin
  VarToMessage(Message, Msg);
  case Msg.Msg of
    WM_LBUTTONDBLCLK, WM_LBUTTONDOWN, WM_LBUTTONUP,
      WM_MBUTTONDBLCLK, WM_MBUTTONDOWN, WM_MBUTTONUP,
      WM_RBUTTONDBLCLK, WM_RBUTTONDOWN, WM_RBUTTONUP:
{$IFDEF CIL}
      with TWMMouse.Create(Msg) do
{$ELSE}
      with TWMMouse(Message) do
{$ENDIF}
        if (PtInRect(ButtonRect, Point(XPos, YPos)) or PtInRect(ImageRect, Point(XPos, YPos))) and
          not MouseCapture then
          Exit;
    WM_CHAR:
{$IFDEF CIL}
      with TWMKey.Create(Msg) do
{$ELSE}
      with TWMKey(Message) do
{$ENDIF}
      begin
        if (not WantReturns and (CharCode = VK_RETURN)) or
          (not WantTabs and (CharCode = VK_TAB)) or
          (AnsiChar(CharCode) in [#10])
          then
//            Exit;
            CharCode := 0; // Sometimes beek signal hear
            KeyData := 0;
      end;
  end;
  inherited DefaultHandler(Message);

  if FUserTextChanged then
  begin
    FUserTextChanged := False;
    UserChange;
  end;
end;

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

procedure TCustomDBEditEh.Notification(AComponent: TComponent; Operation: TOperation);
var i: Integer;
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) then
    if (FDataLink <> nil) and (AComponent = DataSource)
    then
      DataSource := nil
    else if (EditImage <> nil) and (EditImage.Images <> nil) and (AComponent = EditImage.Images)
    then
      EditImage.Images := nil
    else if (AComponent is TPopupMenu) then
    begin
      if AComponent = EditBu

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩情趣电影| 国模少妇一区二区三区| 国产欧美日韩视频在线观看| 欧美精品在线观看一区二区| 在线观看日韩精品| 色狠狠一区二区| 日本高清无吗v一区| 99久久精品费精品国产一区二区| 国产v综合v亚洲欧| 成人av网站在线| 91小视频免费看| 色妹子一区二区| 欧美乱妇20p| 日韩欧美国产系列| 国产视频一区二区在线| 欧美国产激情二区三区| 亚洲三级电影全部在线观看高清| 亚洲视频中文字幕| 五月天一区二区| 看片的网站亚洲| 精品亚洲成av人在线观看| 国产一区二区不卡在线| 成年人国产精品| 欧美日韩另类一区| 亚洲精品一区二区精华| 中文字幕精品三区| 一区二区三区欧美亚洲| 美女一区二区三区| 国产精品一区二区免费不卡| www.一区二区| 欧美日韩国产免费| 国产日韩在线不卡| 亚洲成人资源在线| 成人av免费网站| 欧美色精品在线视频| 精品国产电影一区二区| 亚洲欧洲精品一区二区精品久久久| 一区二区三区四区五区视频在线观看| 性做久久久久久久免费看| 久久99精品国产麻豆不卡| 99综合影院在线| 日韩亚洲国产中文字幕欧美| 中文字幕一区二区三区精华液| 亚洲电影欧美电影有声小说| 95精品视频在线| 日韩精品一区二区三区在线观看| 国产精品区一区二区三区| 亚洲成年人影院| 成人18视频日本| 久久欧美一区二区| 亚洲电影你懂得| 99精品热视频| 久久亚区不卡日本| 午夜欧美在线一二页| 成人午夜激情视频| 欧美电影免费观看高清完整版| 一区二区三区四区在线播放| 国产白丝精品91爽爽久久| 91精品欧美一区二区三区综合在| 亚洲色图欧美激情| 成人免费毛片高清视频| 精品久久一二三区| 日韩国产在线观看一区| 欧美亚洲一区三区| 国产精品黄色在线观看| 国产精品自拍一区| 精品国产人成亚洲区| 亚欧色一区w666天堂| 欧美色图激情小说| 亚洲在线视频网站| 一本久道久久综合中文字幕| 国产精品久久久久久久久晋中 | 国产精品国产三级国产专播品爱网| 视频一区二区三区中文字幕| 在线成人午夜影院| 天堂久久久久va久久久久| 欧美午夜一区二区| 亚洲男人的天堂av| 91视频国产观看| 伊人夜夜躁av伊人久久| 欧美在线观看一区| 亚洲乱码国产乱码精品精的特点| av在线播放不卡| 亚洲人成亚洲人成在线观看图片| 成人av电影在线播放| 1000部国产精品成人观看| 91小宝寻花一区二区三区| 亚洲精品国产成人久久av盗摄| 一本久久精品一区二区| 亚洲一区免费在线观看| 91精品久久久久久蜜臀| 国产一区二区三区四| 国产日韩欧美麻豆| 91理论电影在线观看| 亚洲一区二区三区四区在线观看| 欧美性色aⅴ视频一区日韩精品| 亚洲国产精品久久艾草纯爱| 欧美精品亚洲一区二区在线播放| 日韩影院免费视频| 日韩精品一区二区三区swag| 国产福利一区在线| 亚洲欧美综合色| 欧美日本一道本在线视频| 日本亚洲最大的色成网站www| 精品久久久久久久久久久久包黑料| 国产精品资源在线观看| 亚洲精品视频在线看| 91麻豆精品国产自产在线| 国产美女在线精品| 亚洲综合成人在线| 久久综合久久99| 91老司机福利 在线| 热久久久久久久| 亚洲欧美怡红院| 日韩一区二区不卡| 波多野结衣在线aⅴ中文字幕不卡| 一区二区不卡在线播放 | 欧美极品另类videosde| 欧美亚洲国产怡红院影院| 久久精品国产99久久6| 亚洲乱码一区二区三区在线观看| 日韩女优视频免费观看| 91视频精品在这里| 国产一区二区三区黄视频 | 欧美一区午夜视频在线观看| 成人免费看片app下载| 狠狠色丁香久久婷婷综合丁香| 亚洲欧美日韩精品久久久久| 精品国产免费人成在线观看| 在线看国产一区| 91一区在线观看| 成人免费视频一区二区| 日本不卡一二三| 一区二区三区日韩欧美精品| 国产丝袜在线精品| 久久看人人爽人人| 欧美丰满少妇xxxbbb| 欧美中文字幕一二三区视频| 风间由美性色一区二区三区| 久久99精品国产麻豆婷婷洗澡| 亚洲成年人网站在线观看| 亚洲欧美日韩在线| 国产精品美日韩| 久久久久久久av麻豆果冻| 日韩一区二区不卡| 日韩视频免费观看高清在线视频| 欧美日韩日本视频| 欧美三级韩国三级日本一级| 99精品欧美一区二区三区小说| 国产自产视频一区二区三区| 韩国一区二区视频| 美国欧美日韩国产在线播放| 蜜臀a∨国产成人精品| 婷婷六月综合网| 日韩精品电影在线| 亚洲va天堂va国产va久| 亚洲福利一二三区| 午夜久久福利影院| 日韩电影在线免费| 青青草国产成人av片免费| 蜜臀久久99精品久久久画质超高清| 午夜精品在线看| 免费欧美日韩国产三级电影| 久久狠狠亚洲综合| 国产一区二区三区免费看| 国产成人亚洲综合a∨婷婷| 成人在线视频一区二区| 成人国产一区二区三区精品| 色狠狠av一区二区三区| 欧美人与z0zoxxxx视频| 日韩欧美国产麻豆| 国产欧美日韩在线| 亚洲欧美福利一区二区| 午夜成人免费电影| 国产资源在线一区| 91影院在线免费观看| 欧美一区二区三区公司| 久久久亚洲精华液精华液精华液 | 亚洲18影院在线观看| 麻豆一区二区三| 国产成人免费9x9x人网站视频| www.综合网.com| 欧美放荡的少妇| 久久蜜臀中文字幕| 夜夜嗨av一区二区三区四季av| 三级成人在线视频| 国产91富婆露脸刺激对白| 97精品视频在线观看自产线路二| 欧美中文字幕不卡| 久久综合色婷婷| 亚洲成人tv网| 成人福利在线看| 欧美一区二区高清| 国产精品毛片高清在线完整版| 亚洲成av人**亚洲成av**| 粉嫩av亚洲一区二区图片| 69av一区二区三区| 中文字幕一区二区三区乱码在线| 免费欧美日韩国产三级电影| 91老司机福利 在线|