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

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

?? ukingfilter.pas

?? MIS工具 萬能過濾 查詢 網格編輯器S_CXV
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
//if Assigned(FSaveOnFilterRecord) then
//  FSaveOnFilterRecord(DataSet, Accept);
  s := DataSet.Owner.Name + '.' + DataSet.Name;
  s := s + '=' + SaveTempFilterStr.Values[s];
  TMethod(e).Code := SaveTempFilterStr.Objects[SaveTempFilterStr.IndexOf(s)];
  if Assigned(E) then
  begin
    e(DataSet, Accept);
  end;

  if Accept then
    for I := 0 to SaveTempFilterStr.Count - 1 do
    begin
      Temp := SaveTempFilterStr.Values[DataSet.Owner.Name + '.' + DataSet.Name];
      //      ShowMessage(Temp);

      APos := 1;
      if I <> 0 then
      begin
        if ExtractSubStr(Temp, APos, ';') = '0' then // Logic AND
        begin
          if not Accept then
            Break
        end
        else if Accept then
          Break;
      end
      else
        ExtractSubStr(Temp, APos, ';');
      // FieldName := TField(FFilterStrings.Objects[I]).FieldName;
      FieldName := ExtractSubStr(Temp, APos, ';');
      //ExtractFieldName(Temp, APos);//IndexOfFieldName(FFilterFields, StrToInt(ExtractFieldName(Temp, APos)));
      Condition := TFilterCondition(StrToInt(ExtractSubStr(Temp, APos, ';')));
      Value := ExtractSubStr(Temp, APos, ';');
      //      if DataSet.FieldByName(FieldName).DataType in [ftDate, ftDateTime] then
      //        Value := DateToStr(StrToDate(Value));
      case Condition of
        fcEqual: Accept := CompareFieldValue(DataSet.FieldByName(FieldName),
            Value) = 0;
        fcNotEqual: Accept := CompareFieldValue(DataSet.FieldByName(FieldName),
            Value) <> 0;
        fcGreat: Accept := CompareFieldValue(DataSet.FieldByName(FieldName),
            Value) > 0;
        fcGreatEqual: Accept :=
          CompareFieldValue(DataSet.FieldByName(FieldName), Value) >= 0;
        fcLess: Accept := CompareFieldValue(DataSet.FieldByName(FieldName),
            Value) < 0;
        fcLessEqual: Accept := CompareFieldValue(DataSet.FieldByName(FieldName),
            Value) <= 0;
        fcBeginWith: Accept := LeftStr(DataSet.FieldByName(FieldName).AsString,
            Length(Value)) = Value;
        fcNotBeginWith: Accept :=
          LeftStr(DataSet.FieldByName(FieldName).AsString, Length(Value)) <>
            Value;
        fcEndWith: Accept := RightStr(DataSet.FieldByName(FieldName).AsString,
            Length(Value)) = Value;
        fcNotEndWith: Accept :=
          RightStr(DataSet.FieldByName(FieldName).AsString, Length(Value)) <>
            Value;
        fcContain: Accept := AnsiPos(Value,
            DataSet.FieldByName(FieldName).AsString) > 0;
        fcNotContain: Accept := AnsiPos(Value,
            DataSet.FieldByName(FieldName).AsString) = 0;
      end;
      //      ShowMessage(DataSet.FieldByName(FieldName).AsString + ' - ' + Value + ' = ' +
      //        FloatToStr(CompareFieldValue(DataSet.FieldByName(FieldName), Value)));
    end;
end;

//function TKingFilterDialog.GetDataSet: TDataSet;
//begin
//  if Assigned(FDataSource) then Result := FDataSource.DataSet
//  else Result := nil;
//end;

function TKingFilterDialog.GetFilter;

  function ValueToFilterText(const FieldName, Value: string): string;
  begin
    if Assigned(DataSet) then
      case DataSet.FieldByName(FieldName).DataType of
        ftSmallint, ftInteger, ftWord, ftAutoInc: Result := Value;
        ftFloat, ftCurrency, ftBCD, ftVarBytes, ftBytes, ftTypedBinary: Result
          := Value;
        //       ftDate, ftTime, ftDateTime:
        ftBoolean:
          if Value = '是' then
            Result := 'True'
          else
            Result := 'False';
      else
        Result := '''' + Value + '''';
      end
    else
      Result := Value;
  end;

var
  Temp, FieldName: string;
  I, Pos: Integer;
begin
  Result := '';
  for I := 0 to FFilterStrings.Count - 1 do
  begin
    Temp := FFilterStrings[I];
    Pos := 1;
    if I <> 0 then
    begin
      if ExtractSubStr(Temp, Pos, ';') = '0' then
        Result := Result + ' AND '
      else
        Result := Result + ' OR ';
    end
    else
      ExtractSubStr(Temp, Pos, ';');
    FieldName := TField(FFilterStrings.Objects[I]).FieldName;
    //ExtractFieldName(Temp, APos);//IndexOfFieldName(FFilterFields, StrToInt(ExtractFieldName(Temp, APos)));

  //    FieldName := ExtractSubStr(Temp, Pos, ';');//IndexOfFieldName(FFilterFields, StrToInt(ExtractSubStr(Temp, Pos, ';')));
  //    Result := Result + FieldName;
    case TFilterCondition(StrToInt(ExtractSubStr(Temp, Pos, ';'))) of
      fcEqual: Result := Result + FieldName + ' = ' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcNotEqual: Result := Result + FieldName + ' <> ' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcGreat: Result := Result + FieldName + ' >' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcGreatEqual: Result := Result + FieldName + ' >= ' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcLess: Result := Result + FieldName + ' < ' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcLessEqual: Result := Result + FieldName + ' <= ' +
        ValueToFilterText(FieldName, ExtractSubStr(Temp, Pos, ';'));
      fcBeginWith: Result := Result + FieldName + ' LIKE ''' +
        ExtractSubStr(Temp, Pos, ';') + '%''';
      fcNotBeginWith: Result := Result + ' NOT ' + FieldName + ' LIKE ''' +
        ExtractSubStr(Temp, Pos, ';') + '%''';
      fcEndWith: Result := Result + FieldName + ' LIKE ''%' +
        ExtractSubStr(Temp, Pos, ';') + '''';
      fcNotEndWith: Result := Result + ' NOT ' + FieldName + ' LIKE ''%' +
        ExtractSubStr(Temp, Pos, ';') + '''';
      fcContain: Result := Result + FieldName + ' LIKE ''%' +
        ExtractSubStr(Temp, Pos, ';') + '%''';
      fcNotContain: Result := Result + ' NOT ' + FieldName + 'LIKE ''%' +
        ExtractSubStr(Temp, Pos, ';') + '%''';
    end;
  end;
  Result := Trim(Result);
end;

procedure TKingFilterDialog.GetFilterDescriptions(List: TStrings);
var
  I, Pos: Integer;
  S, Temp: string;
begin
  List.Clear;
  for I := 0 to FFilterStrings.Count - 1 do
  begin
    Temp := FFilterStrings[I];
    Pos := 1;
    if I <> 0 then
    begin
      if ExtractSubStr(Temp, Pos) = '0' then
        S := '與'
      else
        S := '或';
    end
    else
      ExtractSubStr(Temp, Pos);
    S := S + ' ' + IndexOfFieldName(FilterFields, StrToInt(ExtractSubStr(Temp,
      Pos)));
    S := S + ' ' + FConditions[StrToInt(ExtractSubStr(Temp, Pos))];
    S := S + ' ' + ExtractSubStr(Temp, Pos) + ' 。';
    List.Add(S);
  end;
end;

function TKingFilterDialog.GetFilterFields: string;
begin
  Result := FFilterFields;
  //  Result := StringReplace(FFilterFields.CommaText, ',', ';', rfReplaceAll);
end;

procedure TKingFilterDialog.SetFilterFields(const Value: string);
begin
  if FFilterFields <> Value then
  begin
    FFilterFields := Value;
    //    InitFieldTypes;
  end;
end;

{procedure TKingFilterDialog.InitFieldTypes;
var
  Pos: Integer;
  FieldName: string;
begin
  if Assigned(DataSet) then
  begin
    SetLength(FFieldTypes, 0);
    Pos := 1;
    FieldName := ExtractFieldName(FFilterFields, Pos);
    while FieldName <> '' do
    begin
      SetLength(FFieldTypes, Length(FFieldTypes) + 1);
      FFieldTypes[High(FFieldTypes)] := DataSet.FieldByName(FieldName).DataType;
      FieldName := ExtractFieldName(FFilterFields, Pos);
    end;
  end;
end;
}

procedure TKingFilterDialog.SetTitle(const Value: string);
begin
  if FTitle <> Value then
  begin
    FTitle := Value;
  end;
end;

procedure TKingFilterDialog.SetDataSet(Value: TDataSet);
begin
  if FDataSet <> Value then
  begin
    if Assigned(DataSet) then
    begin
      DataSet.OnFilterRecord := FSaveOnFilterRecord;
      DataSet.Filtered := FSaveFiltered;
    end;
    FDataSet := Value;
    if Assigned(DataSet) then
    begin
      FSaveOnFilterRecord := DataSet.OnFilterRecord;
      FSaveFiltered := DataSet.Filtered;
      DataSet.OnFilterRecord := DataSetFilterRecord;
    end;
  end;
end;

function TKingFilterDialog.Execute;
var
  FilterForm: TKingFilter;

  procedure FillFieldsComboBox;
  var
    I: Integer;
    //    FieldName: string;
    AFields: TList;
  begin
    //    I := 1;
    //    FieldName := ExtractFieldName(FFilterFields, I);
    if Assigned(DataSet) then
    begin
      AFields := TList.Create;
      try
        with DataSet do
        begin
          if FFilterFields = '' then //如果沒有設置過濾字段時,默認是所有字段
            for i := 0 to FieldCount - 1 do
            begin
              if Fields[i].Visible then
                AFields.Add(Fields[i]);
            end
          else
            GetFieldList(AFields, FFilterFields);
          for I := 0 to Fields.Count - 1 do
            if AFields.IndexOf(Fields[I]) >= 0 then
              FilterForm.cbFields.Items.AddObject(Fields[I].DisplayLabel,
                Fields[I]);
        end;
      finally
        AFields.Free;
      end;
    end;

    //      while FieldName <> '' do
    //      begin
    //        FilterForm.cbFields.Items.Add(FDataSource.DataSet.FieldByName(FieldName).DisplayLabel);
    //        FieldName := ExtractFieldName(FFilterFields, I);
    //      end
    //    else
    //      while FieldName <> '' do
    //      begin
    //        FilterForm.cbFields.Items.Add(FieldName);
    //        FieldName := ExtractFieldName(FFilterFields, I);
    //      end
  end;

begin
  Result := False;
  if not Assigned(FDataSet) then
    raise Exception.Create('未設置數據集!');
  FilterForm := TKingFilter.Create(Self);
  with FilterForm do
  try
    Caption := FTitle;
    DataSet := FDataSet;
    FillFieldsComboBox;
    cbConditions.Items.Assign(FConditions);
    //.Items.CommaText := StringReplace(FConditions, ';', ',', [rfReplaceAll]);
//    lbFilter.Items.Assign(FFilterStrings);
    lbFilter.Items.Text := SaveTempFilterStr.Values[DataSet.Owner.Name + '.'
      + DataSet.Name];
    cbConditions.ItemIndex := 0;
    if cbFields.Items.Count > 0 then
    begin
      cbFields.ItemIndex := 0;
      cbFields.OnChange(cbFields);
    end;
    if ShowModal = mrOK then
    begin
        SaveTempFilterStr.Values[DataSet.Owner.Name + '.' + DataSet.Name] :=
          lbFilter.Items.Text;
      if lbFilter.Items.Count > 0 then
      begin
        SaveTempFilterStr.Objects[SaveTempFilterStr.IndexOf(DataSet.Owner.Name +
          '.' + DataSet.Name + '=' + lbFilter.Items.Text)];
        FFilterStrings.Assign(lbFilter.Items);
      end;
      Result := True;
    end;
  finally
    Free;
  end;
end;

procedure TKingFilterDialog.FilterStringsChange(Sender: TObject);
var
  DataSetFiltered: Boolean;
begin
  if not (dfdOnlyBuildFilter in FOptions) and Assigned(DataSet) then
  begin
    DataSetFiltered := DataSet.Filtered;
    DataSet.Filtered := False;
    if (FFilterStrings.Count > 0) or (DataSetFiltered and not FPreFiltered) then
      DataSet.Filtered := True;
    if DataSetFiltered and not FPreFiltered and not FSaveFiltered then
      FSaveFiltered := True;
    FPreFiltered := DataSet.Filtered;
  end;
end;

procedure TKingFilter.btNewClick(Sender: TObject);
var
  S: string;
begin
  S := IntToStr(cbLink.ItemIndex) + ';';
  //  S := S + TField(cbFields.Items.Objects[cbFields.ItemIndex]).FieldName{IntToStr(cbFields.ItemIndex)} + ';' +
  //    IntToStr(Integer(cbConditions.Items.Objects[cbConditions.ItemIndex])) + ';';
  s := s + TField(cbFields.Items.Objects[cbFields.ItemIndex]).FieldName + ';';
  S := S + IntToStr(Integer(cbConditions.Items.Objects[cbConditions.ItemIndex]))
    + ';';
  //  case nbValue.PageIndex of
  //    0: S := S + edtValue.Text;
  //    1: S := S + cbValue.Text;
  //    2: S := S + DateToStr(dtpDate.Date);
  //  end;
  s := s + cbValue.Text + ';';
  //    + edtValue.Text;
  //lbFilter.Items.AddObject(S, cbFields.Items.Objects[cbFields.ItemIndex]);
  lbFilter.Items.Add(S);
  lbFilter.ItemIndex := lbFilter.Items.Count - 1;
  //  lbFilter.Items.AddObject(cbFields.Text + ' ' + cbConditions.Text + ' ' +
  //    edtValue.Text, TObject(Ord(rbAnd.Checked)));
end;

procedure TKingFilter.btDelClick(Sender: TObject);
begin
  lbFilter.Items.Delete(lbFilter.ItemIndex);
  lbFilter.ItemIndex := lbFilter.Items.Count - 1;
end;

procedure TKingFilter.btOkClick(Sender: TObject);
begin
  if (lbFilter.Count = 0) and (MessageDlg('是否將定義的條件添加至列表?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
    btNew.Click;
  ModalResult := mrOK;
end;

procedure TKingFilter.btCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TKingFilter.btClearClick(Sender: TObject);
begin
  lbFilter.Clear;
end;

procedure TKingFilter.btReplaceClick(Sender: TObject);
begin
  btDel.Click;
  btNew.Click;
end;

procedure TKingFilter.FormActivate(Sender: TObject);
begin
  //  cbFieldsChange(cbFields);
end;

initialization
  SaveTempFilterStr := TStringList.Create;
finalization
  FreeAndNil(SaveTempFilterStr);

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲四区在线观看| 国产98色在线|日韩| 国产麻豆91精品| 色哦色哦哦色天天综合| 久久久99久久| 久久激情五月婷婷| 欧美性色欧美a在线播放| 中文乱码免费一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 94-欧美-setu| 综合色中文字幕| 国产麻豆成人精品| 欧美不卡在线视频| 日日骚欧美日韩| 欧美日韩一区视频| 亚洲精品国产视频| 91亚洲男人天堂| 国产精品素人一区二区| 精品在线播放免费| 日韩午夜在线播放| 免费黄网站欧美| 欧美日韩国产一区二区三区地区| 亚洲色图视频网| gogogo免费视频观看亚洲一| 国产视频一区在线观看 | 日韩精品一区二区三区在线| 亚洲精品成a人| 欧美在线免费播放| 亚洲精品国产高清久久伦理二区| 91免费视频大全| 亚洲三级小视频| 在线看不卡av| 日日摸夜夜添夜夜添国产精品| 在线观看日韩电影| 午夜久久久影院| 欧美二区乱c少妇| 久久精品国产99久久6| 2023国产一二三区日本精品2022| 日韩成人一级片| 欧美videos中文字幕| 精品一区二区免费看| 久久久久88色偷偷免费| 成人av先锋影音| 亚洲色图丝袜美腿| 欧美日韩另类国产亚洲欧美一级| 亚洲第一成人在线| 欧美大片免费久久精品三p| 激情六月婷婷综合| 国产精品久久久久永久免费观看 | 欧美日韩在线三区| 三级精品在线观看| 久久午夜羞羞影院免费观看| 国产精品一区二区x88av| 中文字幕一区二区三区av| 色婷婷久久久综合中文字幕| 亚洲成人av一区二区| 精品理论电影在线| 国产精品99久久久久久久女警| 最新中文字幕一区二区三区| 一本一本大道香蕉久在线精品 | 亚洲一区免费视频| 日韩一区二区三区精品视频| 丁香亚洲综合激情啪啪综合| 亚洲情趣在线观看| 日韩免费福利电影在线观看| 成人精品视频一区| 日韩不卡一二三区| 中文字幕国产一区二区| 欧美猛男男办公室激情| 美国欧美日韩国产在线播放| 国产精品成人免费精品自在线观看| 欧美在线免费播放| 国产成人欧美日韩在线电影| 一区二区高清在线| 国产午夜精品久久久久久免费视| 欧美在线免费播放| 成人一级黄色片| 日韩精品福利网| 国产精品乱码一区二区三区软件| 在线观看91av| 一本色道久久综合亚洲aⅴ蜜桃| 精品系列免费在线观看| 亚洲国产视频网站| 中文字幕日韩一区二区| 欧美成人精品二区三区99精品| 色综合久久久久综合99| 国产成人亚洲精品青草天美| 丝瓜av网站精品一区二区| 国产精品乱码一区二三区小蝌蚪| 精品精品欲导航| 欧美亚洲动漫另类| 99精品在线免费| 成人免费毛片高清视频| 国产精品羞羞答答xxdd| 乱中年女人伦av一区二区| 亚洲一区在线视频| 亚洲欧美日韩国产一区二区三区 | 久久精品国产精品青草| 性做久久久久久免费观看| 亚洲欧美电影一区二区| 久久美女艺术照精彩视频福利播放| 欧美一卡二卡在线| 4438x成人网最大色成网站| 欧美优质美女网站| 91行情网站电视在线观看高清版| av网站一区二区三区| 国产91丝袜在线播放0| 国产一区二区在线看| 久久激情五月激情| 久久99久久99小草精品免视看| 日本亚洲一区二区| 人人爽香蕉精品| 日本午夜精品视频在线观看| 天天影视色香欲综合网老头| 亚洲成人激情av| 天堂av在线一区| 美腿丝袜亚洲色图| 久久成人久久鬼色| 国产精品自拍一区| 成人国产精品免费观看动漫| www.日韩av| 在线观看亚洲成人| 欧美精品国产精品| 精品国产露脸精彩对白| 日韩精品专区在线影院重磅| 精品对白一区国产伦| 国产亚洲欧美日韩俺去了| 欧美国产日韩一二三区| 亚洲天堂中文字幕| 亚洲午夜视频在线观看| 麻豆精品久久精品色综合| 韩国视频一区二区| www.成人网.com| 欧美日韩小视频| 久久久久久久久伊人| 亚洲欧美日本在线| 日韩精品国产欧美| 高清成人免费视频| 精品1区2区3区| 久久久精品免费网站| 亚洲人成在线播放网站岛国| 午夜国产不卡在线观看视频| 精品一区二区三区免费毛片爱| 成人污视频在线观看| 欧美三级视频在线观看 | 欧美性淫爽ww久久久久无| 日韩一区二区三区四区| 久久人人超碰精品| 国产不卡视频一区二区三区| 不卡高清视频专区| 美女精品一区二区| 日韩电影一二三区| 不卡在线观看av| 337p亚洲精品色噜噜噜| 国产日本欧洲亚洲| 五月激情六月综合| 高清国产一区二区| 日韩免费一区二区三区在线播放| 国产精品免费久久久久| 日本不卡一二三| 91小视频免费看| 精品国精品国产尤物美女| 亚洲自拍另类综合| 国产成人精品网址| 日韩一区二区三区免费观看| 亚洲欧美区自拍先锋| 极品美女销魂一区二区三区 | 日本韩国精品在线| 欧美精品一区二区精品网| 亚洲精选在线视频| 国产成人精品一区二| 欧美一区二区三区性视频| 自拍av一区二区三区| 国产在线看一区| 6080午夜不卡| 亚洲一区二区视频在线| 97久久精品人人澡人人爽| 久久久久久久久99精品| 蜜臀精品久久久久久蜜臀| 欧美日韩一区视频| 亚洲狠狠丁香婷婷综合久久久| 成人听书哪个软件好| 精品美女在线观看| 美女一区二区三区| 欧美精品自拍偷拍| 亚洲国产va精品久久久不卡综合| 99re这里都是精品| 中文字幕av在线一区二区三区| 国产制服丝袜一区| 久久综合色鬼综合色| 精品一区二区国语对白| 欧美一区二区视频在线观看2020 | 91精品婷婷国产综合久久竹菊| 亚洲欧美一区二区三区极速播放 | 亚洲国产成人av网| 91色在线porny| 中文字幕在线一区| 91一区二区在线| 亚洲影视资源网| 4hu四虎永久在线影院成人|