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

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

?? dblookupeh.pas

?? delphi控件類
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
//    if Assigned(OnButtonClickEvent) then
      //OnButtonClickEvent(Self,Handled);
//      OnButtonClickEvent(Self,FDownButton <> 2,AutoRepeat,Handled);
    {if not Handled then }ButtonDown(FDownButton = 2);
  end;
  inherited MouseDown(Button, Shift, X, Y);
end;

procedure TCustomDBLookupComboboxEh.MouseMove(Shift: TShiftState; X, Y: Integer);
var
  ListPos: TPoint;
  MousePos: TSmallPoint;
begin
  if FTracking then
  begin
    if FListVisible then
    begin
      ListPos := FDataList.ScreenToClient(ClientToScreen(Point(X, Y)));
      if PtInRect(FDataList.ClientRect, ListPos) then
      begin
        StopTracking;
        MousePos := PointToSmallPoint(ListPos);
        SendMessage(FDataList.Handle, WM_LBUTTONDOWN, 0, Integer(MousePos));
        Exit;
      end;
    end;
  end;
  inherited MouseMove(Shift, X, Y);
end;

procedure TCustomDBLookupComboboxEh.CMCancelMode(var Message: TCMCancelMode);
  function CheckDataListChilds:Boolean;
  var i:Integer;
  begin
    Result := False;
    if FDataList <> nil then
      for i := 0 to FDataList.ControlCount - 1 do
        if FDataList.Controls[I] = Message.Sender then
        begin
          Result := True;
          Exit;
        end;
  end;
begin
  if (Message.Sender <> Self) and
     (Message.Sender <> FDataList) and not CheckDataListChilds
{and (Message.Sender <> FEditSpeedButton)} then
    CloseUp(False);
end;

procedure TCustomDBLookupComboboxEh.InternalSetText(AText:String);
begin
  if FKeyTextIndependent then
    SetEditText(AText)
  else
  begin
    if Style = csDropDownEh then SetEditText(AText);
    LocateStr(AText,False);
  end;
end;

procedure TCustomDBLookupComboboxEh.InternalSetValue(AValue:Variant);
begin
  SetKeyValue(AValue);
end;

procedure TCustomDBLookupComboboxEh.SetEditText(Value: String);
begin
  FInternalTextSetting := True;
  try
    inherited InternalSetText(Value);
  finally
    FInternalTextSetting := False;
  end;
end;

procedure TCustomDBLookupComboboxEh.CMWantSpecialKey(var Message: TCMWantSpecialKey);
begin
  if (Message.CharCode in [VK_RETURN, VK_ESCAPE]) and FListVisible then
  begin
    //CloseUp(Message.CharCode = VK_RETURN);
    Message.Result := 1;
  end else
    inherited;
end;

type
  TDBLookupListBoxCracker = class(TDBLookupListBoxEh) end;

procedure TCustomDBLookupComboboxEh.KeyDown(var Key: Word; Shift: TShiftState);
  function MasterFieldsRequired: Boolean;
  var i:Integer;
  begin
    Result := False;
    for i := 0 to Length(FMasterFields)-1 do
      if FMasterFields[i].Required then
      begin
        Result := True;
        Exit;
      end;
  end;
begin
  inherited KeyDown(Key, Shift);
  if ListActive and ((Key = VK_UP) or (Key = VK_DOWN)) then
    {if ssAlt in Shift then
    begin
      if FListVisible then CloseUp(True) else DropDown;
      Key := 0;
    end else}
    if CanModify(True) then
      if not FListVisible then
      begin
        SelectNextValue(Key = VK_UP);
        Key := 0;
      end;
  if (Key <> 0) and FListVisible and ((Key in [VK_UP, VK_DOWN, VK_PRIOR, VK_NEXT]) or
                                     ((Key in [VK_HOME,VK_END]) and (ssCtrl in Shift)) ) then
  begin
    TDBLookupListBoxCracker(FDataList).KeyDown(Key, Shift);
    Key := 0;
  end;
  if (Key = VK_DELETE) and (Style = csDropDownListEh) then
  begin
    if (SelLength = Length(Text)) and (Length(FMasterFields) > 0) or not MasterFieldsRequired then
    begin
      SetKeyValue(Null);
      SetEditText('');
    end;
    Key := 0;
  end;
end;

procedure TCustomDBLookupComboboxEh.KeyPress(var Key: Char);
begin
  if FListVisible and (Key in [#13, #27]) then
  begin
    CloseUp(Key = #13);
    Key := #0;
  end;
  inherited KeyPress(Key);
  case Key of
    #8:
    if (Style = csDropDownListEh) then
    begin
      ProcessSearchStr(Key);
      Key := #0;
    end;
    {#13:
    begin
      Key := #0;
      FDataLink.UpdateRecord;
      SelectAll;
    end;}
    #32..#255:
    begin
      if DropDownBox.AutoDrop and not FListVisible and FListActive then DropDown;
      if (Style = csDropDownListEh) then
      begin
        ProcessSearchStr(Key);
        Key := #0;
      end;
    end;
  end;
end;

procedure TCustomDBLookupComboboxEh.DataListKeyValueChanged(Sender: TObject);
begin
end;

procedure TCustomDBLookupComboboxEh.DefaultHandler(var Message);
begin
  with TWMMouse(Message) do
    case Msg of
      WM_LBUTTONDBLCLK,WM_LBUTTONDOWN,WM_LBUTTONUP,
      WM_MBUTTONDBLCLK,WM_MBUTTONDOWN,WM_MBUTTONUP,
      WM_RBUTTONDBLCLK,WM_RBUTTONDOWN,WM_RBUTTONUP:
        if (Style = csDropDownListEh) or PtInRect(ButtonRect,Point(XPos,YPos)) then
         Exit;
    end;
  inherited DefaultHandler(Message);
end;

function TCustomDBLookupComboboxEh.GetListFieldsWidth: Integer;
var
  DC: HDC;
  SaveFont: HFont;
  Metrics: TTextMetric;
  i:Integer;
  NullSize:TSize;
begin
  DC := GetDC(0);
  try
    SaveFont := SelectObject(DC, Font.Handle);
    GetTextMetrics(DC, Metrics);
    GetTextExtentPoint32(DC, '0', 1,NullSize);
    SelectObject(DC, SaveFont);

    Result := 0;
    for i := 0 to ListFields.Count - 1 do
      Inc(Result,TField(ListFields[i]).DisplayWidth * (NullSize.cX - Metrics.tmOverhang) + Metrics.tmOverhang + 4);
  finally
    ReleaseDC(0, DC);
  end
end;

function TCustomDBLookupComboboxEh.GetVariantValue:Variant;
begin
  Result := FKeyValue;
//  if FKeyTextIndependent then inherited GetVariantValue
//  else Result := FKeyValue;
end;

function TCustomDBLookupComboboxEh.IsValidChar(InputChar: Char): Boolean;
begin
  if FListActive then Result := FListField.IsValidChar(InputChar)
  else Result := inherited IsValidChar(InputChar);
end;

procedure TCustomDBLookupComboboxEh.ActiveChanged;
begin
  inherited ActiveChanged;
  UpdateDataFields;
end;

procedure TCustomDBLookupComboboxEh.ButtonDown(IsDownButton:Boolean);
begin
  if (EditButton.Style = ebsUpDownEh) and (FDownButton<>0) then
  begin
    if EditCanModify then
    begin
      SelectNextValue(FDownButton=1);
    end;
  end else
    inherited ButtonDown(IsDownButton);
end;

procedure TCustomDBLookupComboboxEh.WMCut(var Message: TMessage);
begin
  FDataLink.Edit;
  inherited;
  if Style = csDropDownEh then LocateStr(Text,False);
end;

procedure TCustomDBLookupComboboxEh.WMPaste(var Message: TMessage);
begin
  FDataLink.Edit;
  if Style = csDropDownEh then
  begin
    inherited;
    LocateStr(Text,False);
  end else
  if Clipboard.HasFormat(CF_TEXT) then
    ProcessSearchStr(Clipboard.AsText);
end;

procedure TCustomDBLookupComboboxEh.SetStyle(const Value: TDBLookupComboboxEhStyle);
begin
  FStyle := Value;
  UpdateReadOnly;
end;

procedure TCustomDBLookupComboboxEh.SelectAll;
begin
  SendMessage(Handle, EM_SETSEL, MAXINT, 0);
end;

procedure TCustomDBLookupComboboxEh.SelectNextValue(IsPrior:Boolean);
var Delta:Integer;
begin
  if CanModify(True) and ListLink.Active then
  begin
    if not LocateKey then
      ListLink.DataSet.First
    else
    begin
      if IsPrior then Delta := -1 else Delta := 1;
      ListLink.DataSet.MoveBy(Delta);
    end;
    SetKeyValue(FListLink.DataSet.FieldValues[FKeyFieldName]);
    if FFocused then SelectAll;
  end;
end;

procedure TCustomDBLookupComboboxEh.UpdateData;
var RecheckInList:Boolean;
begin
  if FListActive and Assigned(FOnNotInList) {and Focused} then
  begin
    RecheckInList := False;
    if not FListLink.DataSet.Locate(FListField.FieldName, Text, [loCaseInsensitive]) then
    begin
      FOnNotInList(Self,Text, RecheckInList);
      if RecheckInList and FListLink.DataSet.Locate(FListField.FieldName, Text, [loCaseInsensitive]) then
        SetKeyValue(FListLink.DataSet.FieldValues[FKeyFieldName]);
    end;
  end;
  ValidateEdit;
  if PostDataEvent then Exit; 
  if DataIndepended and FListActive and not LocateKey and (Text <> '') and (Style = csDropDownEh) then
  begin
    TDataSourceLinkEh(FDataLink).FDataIndependentValueAsText := True;
    FDataLink.SetValue(Text);
  end else
  begin
    TDataSourceLinkEh(FDataLink).FDataIndependentValueAsText := False;
    FDataLink.SetValue(Value);
  end;
end;

procedure TCustomDBLookupComboboxEh.WMChar(var Message: TWMChar);
  function SpecialKey:Boolean;
  begin
    Result := (Message.CharCode = VK_DELETE) or
              ([ssCtrl,ssAlt] * KeyDataToShiftState(Message.KeyData) <> []);
  end;
var OldSelStart:Integer;
begin
  inherited;
  if (Style = csDropDownEh) and not SpecialKey and not (Message.CharCode = 0) then
    if not ((SelStart = Length(Text)) and (SelLength = 0)) or (Message.CharCode = VK_BACK) then
    begin
      OldSelStart := SelStart;
      if LocateStr(Text,False) then
      begin
        SelStart := Length(Text);
        SelLength := OldSelStart - SelStart;
      end;
    end else
      ProcessSearchStr('');
end;

procedure TCustomDBLookupComboboxEh.WMKeyDown(var Message: TWMKeyDown);
var OldSelStart:Integer;
begin
  if (Style = csDropDownEh) and (Message.CharCode = VK_DELETE) then
  begin
    FDataLink.Edit;
    inherited;
    OldSelStart := SelStart;
    if LocateStr(Text,False) then
    begin
      SelStart := Length(Text);
      SelLength := OldSelStart - SelStart;
    end;
  end
  else inherited;
end;

procedure TCustomDBLookupComboboxEh.SetDropDownBox(const Value: TDropDownBoxEh);
begin
  FDropDownBox.Assign(Value);
end;

procedure TCustomDBLookupComboboxEh.EMReplacesel(var Message: TMessage);
var OldSelStart:Integer;
    S:String;
begin
  if Style = csDropDownListEh then
    S := Copy(Text,1,SelStart) + String(PChar(Message.LParam)) + Copy(Text,SelStart+SelLength+1,Length(Text))
  else
  begin
    inherited;
    S := Text;
  end;

  OldSelStart := SelStart;
  if LocateStr(S,False) then
  begin
    SelStart := Length(Text);
    SelLength := OldSelStart - SelStart;
  end;
end;

procedure TCustomDBLookupComboboxEh.UpdateReadOnly;
begin
  SetControlReadOnly(not CanModify(False) or (Style = csDropDownListEh));
end;

procedure TCustomDBLookupComboboxEh.UpdateKeyTextIndependent;
begin
  if not FLockUpdateKeyTextIndependent then
    FKeyTextIndependent := (DataSource = nil) and (DataField = '') and
      (ListSource = nil) and (ListField = '') and (KeyField = '');
end;

procedure TCustomDBLookupComboboxEh.ClearDataProps;
begin
  FKeyTextIndependent := True;
  try
    FLockUpdateKeyTextIndependent := True;
    DataSource := nil;
    DataField := '';
    KeyField := '';
    ListField := '';
    DataSource := nil;
  finally
    FLockUpdateKeyTextIndependent := False;
    UpdateKeyTextIndependent;
  end;
end;

function TCustomDBLookupComboboxEh.GetDataLink: TDataSourceLinkEh;
begin
  Result := TDataSourceLinkEh(FDataLink);
end;

function TCustomDBLookupComboboxEh.GetDataField: TField;
begin
  if Length(FDataFields) = 0 then Result := nil
  else Result := FDataFields[0];
end;

function TCustomDBLookupComboboxEh.GetOnButtonClick: TButtonClickEventEh;
begin
  Result := inherited OnButtonClick;
end;

procedure TCustomDBLookupComboboxEh.SetOnButtonClick(const Value: TButtonClickEventEh);
begin
  if @Value <> @OnButtonClick then
  begin
    inherited OnButtonClick := Value;
    UpdateButtonState;
  end;
end;

function TCustomDBLookupComboboxEh.GetOnButtonDown: TButtonDownEventEh;
begin
  Result := inherited OnButtonDown;
end;

procedure TCustomDBLookupComboboxEh.SetOnButtonDown(const Value: TButtonDownEventEh);
begin
  if @Value <> @OnButtonDown then
  begin
    inherited OnButtonDown := Value;
    UpdateButtonState;
  end;
end;

{ TDropDownBoxEh }

procedure TDropDownBoxEh.Assign(Source: TPersistent);
begin
  if Source is TDropDownBoxEh then
  begin
    Align := TDropDownBoxEh(Source).Align;
    Rows := TDropDownBoxEh(Source).Rows;
    Width := TDropDownBoxEh(Source).Width;
    Sizable := TDropDownBoxEh(Source).Sizable;
    ShowTitles := TDropDownBoxEh(Source).ShowTitles;
  end else
    inherited Assign(Source);
end;

constructor TDropDownBoxEh.Create(DBLookupCombobox: TCustomDBLookupComboboxEh);
begin
  inherited Create;
  FDBLookupCombobox := DBLookupCombobox;
end;

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97超碰欧美中文字幕| 一色桃子久久精品亚洲| 一区二区三区在线免费视频| 91蜜桃免费观看视频| 日韩美女啊v在线免费观看| eeuss鲁片一区二区三区 | 国产一区二区三区最好精华液| 日韩三级视频在线看| 国产精品一区二区你懂的| 久久九九全国免费| 99精品国产热久久91蜜凸| 亚洲色图清纯唯美| 欧美日韩国产综合一区二区三区| 午夜一区二区三区在线观看| 7777精品伊人久久久大香线蕉的 | 亚洲欧美色图小说| 欧美日韩国产一二三| 久久电影网电视剧免费观看| 久久精品免费在线观看| 一本色道综合亚洲| 日本伊人精品一区二区三区观看方式| 精品国产一区二区三区av性色| 高清不卡在线观看| 亚洲第一电影网| 久久综合精品国产一区二区三区 | 亚洲综合成人在线视频| 在线不卡一区二区| 国产成人8x视频一区二区| 一区二区三区四区精品在线视频| 欧美人xxxx| 国产电影精品久久禁18| 亚洲一区在线视频| 久久麻豆一区二区| 欧美日韩亚洲综合在线| 国产乱子伦视频一区二区三区| 亚洲区小说区图片区qvod| 日韩一区二区精品在线观看| 成人精品视频一区二区三区| 蜜臀久久99精品久久久久久9| 亚洲欧洲精品一区二区三区不卡| 91精品国产91久久综合桃花| 不卡一区在线观看| 国内精品免费**视频| 亚洲午夜在线视频| 国产无人区一区二区三区| 欧美日韩免费高清一区色橹橹 | 亚洲成av人影院| 欧美国产精品一区| 日韩精品最新网址| 色哟哟国产精品| 色婷婷综合五月| 成人免费av网站| 狠狠色狠狠色合久久伊人| 亚洲一区二区视频| 自拍av一区二区三区| 久久久精品人体av艺术| 欧美高清精品3d| 一本一本久久a久久精品综合麻豆| 国产精品一区专区| 六月丁香婷婷久久| 午夜精品久久久久久久久| 亚洲精品日日夜夜| 中文字幕电影一区| 国产日韩精品一区二区三区| 日韩免费视频一区| 日韩欧美一级二级三级| 欧美一区二区三区的| 欧美男男青年gay1069videost| av不卡一区二区三区| 播五月开心婷婷综合| 国产精品综合av一区二区国产馆| 久久精品国产久精国产爱| 日韩精品成人一区二区在线| 午夜精品123| 青椒成人免费视频| 全部av―极品视觉盛宴亚洲| 日韩精品一级中文字幕精品视频免费观看 | 日韩免费一区二区| 日韩精品一区二区三区在线观看| 8x福利精品第一导航| 欧美精品1区2区3区| 欧美日韩国产免费| 欧美一区日本一区韩国一区| 欧美日本精品一区二区三区| 日韩一区二区免费高清| 精品久久久网站| 国产欧美日韩精品一区| 欧美国产精品劲爆| 亚洲美女屁股眼交3| 亚洲自拍偷拍九九九| 亚洲成人一区在线| 日本不卡不码高清免费观看 | 国内成人精品2018免费看| 激情亚洲综合在线| 丰满亚洲少妇av| 色www精品视频在线观看| 欧美日韩一区二区电影| 欧美一卡2卡三卡4卡5免费| 久久影音资源网| 国产精品视频看| 亚洲一区在线电影| 蜜桃视频第一区免费观看| 精品亚洲国内自在自线福利| 国产91精品露脸国语对白| 91蜜桃视频在线| 8v天堂国产在线一区二区| 精品国产一区二区精华| 久久国产福利国产秒拍| 粉嫩av一区二区三区粉嫩| 日本韩国视频一区二区| 91精品婷婷国产综合久久竹菊| 久久综合中文字幕| 亚洲精品午夜久久久| 婷婷久久综合九色综合伊人色| 国产在线一区观看| 色欧美日韩亚洲| 欧美成人激情免费网| 国产精品久久久久久久久免费相片| 亚洲va欧美va天堂v国产综合| 狠狠v欧美v日韩v亚洲ⅴ| 91麻豆高清视频| 欧美www视频| 夜夜嗨av一区二区三区中文字幕| 免费在线一区观看| 色偷偷久久一区二区三区| 91麻豆精品国产91久久久| 中文文精品字幕一区二区| 亚洲成国产人片在线观看| 国产不卡免费视频| 欧美一区三区四区| 亚洲综合成人网| 懂色一区二区三区免费观看| 欧美一卡二卡三卡四卡| 亚洲精品少妇30p| 岛国av在线一区| 8x8x8国产精品| 一区二区三区欧美在线观看| 成人免费视频免费观看| 欧美一区二区在线观看| 一片黄亚洲嫩模| 成人av资源站| 国产日本亚洲高清| 狠狠色综合日日| 欧美伦理电影网| 有坂深雪av一区二区精品| 国产成人av电影在线| 精品少妇一区二区三区| 欧美aa在线视频| 91.xcao| 五月婷婷另类国产| 欧美体内she精高潮| 亚洲美女区一区| 91影院在线观看| 国产精品的网站| 成人免费av网站| 国产精品私房写真福利视频| 国产精品99久久久久| 精品免费视频.| 久久精品国产精品亚洲红杏| 日韩亚洲欧美成人一区| 日本亚洲免费观看| 日韩欧美色电影| 久久精品国产亚洲一区二区三区| 在线不卡a资源高清| 青青草精品视频| 欧美一区二区三区免费视频| 日韩中文字幕1| 欧美sm美女调教| 国产一区二区在线电影| 日韩av中文字幕一区二区三区| 欧美日韩精品一区二区| 亚洲成人手机在线| 欧美精品777| 紧缚捆绑精品一区二区| 精品sm在线观看| 高清成人免费视频| 亚洲人一二三区| 91福利社在线观看| 日韩影视精彩在线| 337p粉嫩大胆噜噜噜噜噜91av | 国产精品乱码一区二区三区软件 | 亚洲福利视频导航| 91精品国产美女浴室洗澡无遮挡| 七七婷婷婷婷精品国产| 欧美精品一区二区三区在线| 国产成人福利片| 亚洲视频精选在线| 欧美日韩国产一级二级| 国产一区二区三区视频在线播放| 久久精品免费在线观看| 97久久精品人人爽人人爽蜜臀| 一区二区三区不卡视频| 欧美高清视频不卡网| 国产乱淫av一区二区三区| ㊣最新国产の精品bt伙计久久| 欧美系列在线观看| 免费在线看成人av| 久久久精品国产免费观看同学| 91久久免费观看| 久久不见久久见免费视频1|