Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2008, 09:55   #51
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

Да! именно это и исправил! Спасибо!

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Не так сумбурно. Попытайтесь описать проблему с повторным OnChange подробнее, с указанием компонентов и порядка производимых вами манипуляций, а также полученных результатов.
Вообщем ситуация такая! При первом вызове события Combobox1.Change, фильтрация срабатывает, дальше вызываю событие Combobox2.Change, фильтрация срабатывает как и должно, вызываю Combobox1.Change повторно, но с другим значение, Grid становится пустым!
Просто в Table1.Filter получается выражение Combobox1+Combobox2+Combobox1, он добавляет условие но не проверяет и не заменяет старое на новое!

Пробовал при каждом вызове события Change, проверять все текущие значения у каждого Combobox'а, а потом составлял новое условие фильтрации, но если значение "все записи", то я ставил Combobox1.text значение '', Delphi компилирует, но при вызове функции я получаю пустой Grid!
Все когда нибудь начинаю, и становятся проффи
MARCH вне форума Ответить с цитированием
Старый 16.11.2008, 10:01   #52
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

Может в моей ситуации придется выполнять для каждого Change все возможные комбинации, т.е.
если Combobox1.text<>'Все записи' и Combobox2.text='Все записи', то
Table1.filter:='USLUGAID='+QuotedSt r(Table3.FieldByName('USLUGAID').As String);
Хотя это глупо и долго но должно работать!
Все когда нибудь начинаю, и становятся проффи
MARCH вне форума Ответить с цитированием
Старый 16.11.2008, 13:33   #53
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
но не проверяет и не заменяет старое на новое
Во-первых, об этом речи и не шло.
Во-вторых. Ваш метод "Хотя это глупо и долго но должно работать!" действительно будет работать, но...
Есть другой подход - по каждому OnChange фильтр формируется заново. То есть при изменении ComboBox1.Text происходит очищение фильтра, а затем последовательный просмотр всех нужных ComboBox-ов на предмет неравенства текста фразе "Все записи" и подстановке в этом случае "куска" фильтра.
Самое главное - обработчик для всех ComboBox-ов один и тот же.

Последний раз редактировалось mihali4; 16.11.2008 в 15:27.
mihali4 вне форума Ответить с цитированием
Старый 16.11.2008, 13:59   #54
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

Да это будет работать, просто у меня 8 элементов, а это порядка 250000 комбинаций
Все когда нибудь начинаю, и становятся проффи
MARCH вне форума Ответить с цитированием
Старый 16.11.2008, 14:01   #55
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

А существует ли значение при котором filter покажет все записи в одной из колонок?
Все когда нибудь начинаю, и становятся проффи
MARCH вне форума Ответить с цитированием
Старый 16.11.2008, 15:28   #56
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
А существует ли значение при котором filter покажет все записи в одной из колонок?
А в остальных колонках - отфильтрованные записи? Бред.
Цитата:
просто у меня 8 элементов, а это порядка 250000 комбинаций
Какие комбинации??? Вы хоть прочитали, что я вам предложил? Там 8 строк кода... Нужно последовательно просмотреть текст в ваших восьми комбобоксах и, если там не "Все записи", то добавить это значение в фильтр...
mihali4 вне форума Ответить с цитированием
Старый 16.11.2008, 15:39   #57
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Какие комбинации??? Вы хоть прочитали, что я вам предложил? Там 8 строк кода... Нужно последовательно просмотреть текст в ваших восьми комбобоксах и, если там не "Все записи", то добавить это значение в фильтр...
А как добавить это значение в фильтр! Мыхалыч напишите хотябы для одного Comboboxa, а то я уже собирался писать все комбинации
Все когда нибудь начинаю, и становятся проффи

Последний раз редактировалось MARCH; 16.11.2008 в 15:44.
MARCH вне форума Ответить с цитированием
Старый 16.11.2008, 18:09   #58
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
хотябы для одного Comboboxa
Для одного и пишется. Остальным этот же обработчик назначается. (Впечатление такое, что я стою в лесу и говорю сам с собой... Развивайте внимательность!)
Возвращаемся на первую страницу этой темы:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text<>'Все записи' then
Table2.Filter:='Kodtov='+QuotedStr(ComboBox1.Text) else
Table2.Filter:='';
end;
Немного переделываем:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Table2.Filter:='';
if ComboBox1.Text<>'Все записи' then
if Table2.Filter>' ' then
Table2.Filter:=Table2.Filter+' and Kodtov='+QuotedStr(ComboBox1.Text) else
Table2.Filter:='Kodtov='+QuotedStr(ComboBox1.Text);
// выделенное красным повторяем для оставшихся "неохваченными"
// комбобоксов ComboBox2, ComboBox3...ComboBox8 ЗДЕСЬ ЖЕ !
end;

Последний раз редактировалось mihali4; 16.11.2008 в 18:12.
mihali4 вне форума Ответить с цитированием
Старый 16.11.2008, 20:45   #59
MARCH
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 39
По умолчанию

Спасибо! Я вам написал, а потом только дошло до меня, начал делать но немного не так, в принципе я уже дошел до этого вида, и увидел что выприслали!
Все когда нибудь начинаю, и становятся проффи
MARCH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupComboBox SunKnight Компоненты Delphi 6 25.02.2012 08:55
Dblookupcombobox значение по дефолту при условии 1sal1 Общие вопросы Delphi 2 12.12.2009 14:16
И снова DbLookupCombobox Loki БД в Delphi 5 18.11.2007 23:50
DBLookupComboBox Dunpeal Компоненты Delphi 5 09.08.2007 18:28
DBLookupCombobox??? Alexcandr Компоненты Delphi 2 05.04.2007 16:46