Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 33
1

Как включить два фильтра одновременно?

11.12.2013, 14:07. Просмотров 1005. Ответов 1
Метки нет (Все метки)

Подскажите пожалуйста, как включить 2 фильтра одновременно? У меня по нажатию флажка идет фильтрация по полям, но надо что бы не одно условие фильтровалось, а 2. Помогите пожалуйста, вот что есть:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, db, dbf, FileUtil, Forms, Controls, Graphics, Dialogs,
  DbCtrls, DBGrids, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Datasource1: TDatasource;
    Dbf1: TDbf;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Edit1: TEdit;
    Edit2: TEdit;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckBox1Change(Sender: TObject);
    procedure CheckBox2Change(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
  if SaveDialog1.Execute
  then begin
    Dbf1.Close;
    with Dbf1.FieldDefs do
begin
  Clear;
  Add('Familia',ftString,40);
  Add('Fakultet',ftString,40);
  Add('Specialnost',ftString, 40);
  Add('group',ftString,2);
  Add('Data_biblioteki',ftString, 40);
  end;
  Dbf1.TableName:=SaveDialog1.FileName;
  Dbf1.CreateTable;
  Dbf1.Exclusive:=True;
  Dbf1.Open;
end;
    end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialog1.Execute
  then Begin
    Dbf1.close;
    Dbf1.TableName:=OpenDialog1.FileName;
    Dbf1.Open;
  end;
end;
 
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
    Dbf1.Filter:='Fakultet="'+Edit1.Text+'"';
    dbf1.Filtered:=checkbox1.checked;
end;
 
procedure TForm1.CheckBox2Change(Sender: TObject);
begin
    Dbf1.Filter:='group="'+Edit2.Text+'"';
    dbf1.Filtered:=checkbox2.checked;
end;
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
  CanClose:=Not(Dbf1.State in dsEditModes);
  if not CanClose then
  case MessageDlg('Save', mtWarning,[mbYes, mbNo,mbCancel],0) of
  mrYes:Begin
 Dbf1.Post;
  CanClose:=True;
  end;
  mrNo: CanClose:=True;
end;
  end;
end.
Надо что бы эти 2 процедуры работали одновременно или организовать по другому фильтрацию
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
    Dbf1.Filter:='Fakultet="'+Edit1.Text+'"';
    dbf1.Filtered:=checkbox1.checked;
end;
 
procedure TForm1.CheckBox2Change(Sender: TObject);
begin
    Dbf1.Filter:='group="'+Edit2.Text+'"';
    dbf1.Filtered:=checkbox2.checked;
end;
Спасибо зарание
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2013, 14:07
Ответы с готовыми решениями:

Как включить одновременно два видеоядра?
Доброго времени суток. Имеется мат плата GA-8I915MD-GV, встроенное видео, выход VGA Установлена...

Как включить одновременно 2 видеокарты
Суть проблемы следующая,купил видеокарту на авито,подключаю к компьютеру,подключаю доп питание и...

Как включить звук и в колонках и в наушниках одновременно
Совсем недавно, у меня по стандарту стояли такие настройки, что при подключении наушников звук...

Как включить видео на 9 плазмах одновременно на Panasonic TX-LR39E6?
Доброго времени суток! Есть задача синхронно крутить на нескольких плазмах (panasonic tx-lr39e6)...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
29266 / 19345 / 7587
Регистрация: 22.10.2011
Сообщений: 33,725
Записей в блоге: 6
11.12.2013, 14:41 2
Ну, так запиши:

Pascal
1
2
3
4
5
6
7
8
9
if checkbox1.checked then
  Dbf1.Filter:='(Fakultet="'+Edit1.Text+'")'
else dbf.filter := '';
if checkbox2.checked then
begin
  if dbf.filter <> '' then dbf.filter := dbf.filter + ' AND ';
  dbf.filter := dbf.filter + '(group="'+Edit2.Text+'")';
end;
dbf1.Filtered:=checkbox1.checked or checkbox2.checked;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2013, 14:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Smartel Pw-0810 Как одновременно включить питание на нескольких портах
Подскажите, Как одновременно включить несколько портов питания на Smartel pw0810 На них висит 3...

Подключения двух мониторов одновременно. Как включить две видеокарты
Здравствуйте уважаемые форумчане. Подскажите пожалуйста, как мне включить две видеокарты...

Как объединить два фильтра?
Помогите пожалуйста. Есть выбор подчиненными полями со списком. И выборка полей по интервалу дат....

Как соединить два фильтра в один?
Здравствуйте У меня в программе есть два фильтра, каждый с которых активируется нажатием кнопки: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.