C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая тема
Поиск в DBGridEh
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
Valdemar
Отправлено: 21.03.2007, 11:35 Цитировать


Мастер участка


Группа: Участник
Сообщений: 433
Пользователь № 186
Регистрация: 23.07.03



Я использую поиск в DBGridEh по комбинации клавиш Ctrl+F.
Можно ли программно установить поле, по которому будет происходить поиск? По умолчанию для поиска выбирается поле, которое было выделено в DBGridEh, а если для таблицы установлено выделение строки, то всегда получается выделена первая колонка.
 
Послать сообщение E-mail адрес ICQ  Top
olegenty
Отправлено: 21.03.2007, 11:57 Цитировать


Ветеран


Группа: Модератор
Сообщений: 2412
Пользователь № 507
Регистрация: 13.02.04



ExecuteDBGridEhFindDialogProc(грид, текст, поле, массив колонок, признак модальности). см. сорцы и разберёшься.

--------------------
Управлять можно лишь тем, что можно измерить.
Восточная мудрость.
 
Послать сообщение E-mail адрес ICQ  Top
Valdemar
Отправлено: 21.03.2007, 13:12 Цитировать


Мастер участка


Группа: Участник
Сообщений: 433
Пользователь № 186
Регистрация: 23.07.03



Спасибо. Буду разбираться.
 
Послать сообщение E-mail адрес ICQ  Top
Valdemar
Отправлено: 21.03.2007, 14:36 Цитировать


Мастер участка


Группа: Участник
Сообщений: 433
Пользователь № 186
Регистрация: 23.07.03



Что-то не получилось у меня.
Делал так:
CODE
TColumnFieldItemEh f;
f.Caption="Название"; //заголовок поля
f.Column=docsDBGridEh->Columns->Items[1]; //колонка (поле), по которому хочу искать
DynamicArray<TColumnFieldItemEh> arrayFields;
arrayFields.Length=1; //искать только по одному полю
arrayFields[0]=f;
ExecuteDBGridEhFindDialogProc(docsDBGridEh,
     "", //текст для поиска
    "name", //имя поля
     arrayFields,
     false);

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

P.S. EhLib 4.1.4
 
Послать сообщение E-mail адрес ICQ  Top
olegenty
Отправлено: 21.03.2007, 18:17 Цитировать


Ветеран


Группа: Модератор
Сообщений: 2412
Пользователь № 507
Регистрация: 13.02.04



посмотрел сорцы:
CODE

cbFindIn.ItemIndex := cbFindIn.Items.IndexOf(FGrid.Columns[FGrid.SelectedIndex].Title.Caption);


никакой ориентации ни на FieldName, ни на массив колонок. жестоко, но выходит никак.

--------------------
Управлять можно лишь тем, что можно измерить.
Восточная мудрость.
 
Послать сообщение E-mail адрес ICQ  Top
Valdemar
Отправлено: 22.03.2007, 08:49 Цитировать


Мастер участка


Группа: Участник
Сообщений: 433
Пользователь № 186
Регистрация: 23.07.03



Жаль.
 
Послать сообщение E-mail адрес ICQ  Top
olegenty
Отправлено: 22.03.2007, 09:31 Цитировать


Ветеран


Группа: Модератор
Сообщений: 2412
Пользователь № 507
Регистрация: 13.02.04



Но! Ты можешь САМ написать поисковую функцию требуемого типа и в рантайме заменить ExecuteDBGridEhFindDialogProc на указатель на свою функцию. Только сорцы долго ковырять придётся...

--------------------
Управлять можно лишь тем, что можно измерить.
Восточная мудрость.
 
Послать сообщение E-mail адрес ICQ  Top
AVC
Отправлено: 22.03.2007, 09:47 Цитировать


Ветеран


Группа: Модератор
Сообщений: 1583
Пользователь № 655
Регистрация: 19.05.04



QUOTE

Но! Ты можешь САМ написать поисковую функцию требуемого типа и в рантайме заменить ExecuteDBGridEhFindDialogProc на указатель на свою функцию. Только сорцы долго ковырять придётся...

Не совсем в тему.
Когда-то давным давно на TC и некоторых других компиляторах (скорее построителях) можно было перекрывать функции задавая линковщику порядок подключаемых модулей.

Что имеется ввиду:
Допустим мне нужно подменить функцию Aaa из модуля M1. Я пишу свою Ааа, оформляю её в отдельный файл А1.obj, а линковщику ставлю А1.obj раньше M1. Построитель немного ругается, но включает в приложение первое встреченное определение Aaa (моё).

Никто такое в Buildere не исследовал?
 
Послать сообщение E-mail адрес ICQ  Top
olegenty
Отправлено: 22.03.2007, 10:37 Цитировать


Ветеран


Группа: Модератор
Сообщений: 2412
Пользователь № 507
Регистрация: 13.02.04



ExecuteDBGridEhFindDialogProc - глобальная переменная типа указатель на функцию. ею пользоваться вообще не обязательно. она инициализируется адресом вполне конкретной функции. можно просто разработать свою функцию, воспользовавшись поисковой формой Дмитрия, всего лишь переопределив инициализацию поисковой формы, после чего пользоваться своей функцией, а не указанным выше глобальным указателем.

2 AVC - не-а, я не сталкивался с такой фичей.

--------------------
Управлять можно лишь тем, что можно измерить.
Восточная мудрость.
 
Послать сообщение E-mail адрес ICQ  Top
8 ответов с: 21.03.2007, 11:35 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Работа с базами данных в C++Builder
ОтветитьНовая тема