Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBGrid и фокусирование, прокрутка 
:(
    Опции темы
alf138
Дата 14.3.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Вопрос вот в чем состоит есть DBGrid, в нем определенные данные, нужно при помощи поиска или ComboBox выделять нужную мне строчку и перематывать. Все понимаю что есть TField.FocusControl, но он не перематывает у меня просто выделяет нужную строчку, поскажите куда копать и что рыть, вот что писал
Код

DBGrid1.Columns[10].Field.FocusControl;

PM MAIL   Вверх
Данкинг
Дата 14.3.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



"Перематывается" при переходе по датасету, к которому привязан грид.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
former
Дата 15.3.2010, 00:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



А почему не использовать Locate? Если я правильно понял вопрос.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
alf138
Дата 15.3.2010, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Грид привязан к дата сурсу же... Получится должно некое подобие эксель, ввел нужное значение грид сам перемотал до него и по возможности выделил.

Это сообщение отредактировал(а) alf138 - 15.3.2010, 06:05
PM MAIL   Вверх
Deniz
Дата 15.3.2010, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



alf138, смотри 
Цитата(former @  15.3.2010,  02:45 Найти цитируемый пост)
А почему не использовать Locate? Если я правильно понял вопрос.



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Данкинг
Дата 15.3.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(alf138 @  15.3.2010,  06:02 Найти цитируемый пост)
ввел нужное значение грид сам перемотал до него и по возможности выделил.

Что именно не получается? Тебе же пишут: используй Locate для поиска.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 15.3.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Спасибо большое, получилось.
Код

Form1.DBGrid1.DataSource.DataSet.Locate('FAM',Edit5.Text,[loPartialKey]);

А как сделать чтобы найденная строчка выделялась ?
PM MAIL   Вверх
Deniz
Дата 15.3.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(alf138 @  15.3.2010,  16:12 Найти цитируемый пост)
А как сделать чтобы найденная строчка выделялась?
???
Что значит выделялась?
Если найдено, то указатель перемещается на эту строчку и Locate возвращает TRUE.
Если не найдено, то ничего не происходит и Locate возвращает FALSE.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
alf138
Дата 15.3.2010, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Вот есть такой код
Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Table1.FieldByName('T_RAB').Value=1) then begin
with  DBGrid1.Canvas do begin
Brush.Color:=clGreen;
Font.Color:=clWhite;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
end;
end;
end;

Она выделяет значени 1 в столбике T_RAB , но как сделать чтобы он выделял найденные строки ?
PM MAIL   Вверх
Deniz
Дата 16.3.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(alf138 @  15.3.2010,  22:46 Найти цитируемый пост)
как сделать чтобы он выделял найденные строки?
Т.е. их несколько?
Код
s:=Trim(Table1.FieldByName('FAM').Value);
if (pos(Edit1.Text, s) > 1) then ... // выделить

Что-то не туда мы идем.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
alf138
Дата 16.3.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Строчка одна, почему не туда ? Он действительно находит нужную строчку, но не выделяет ее почти не как, хотелось бы визуально показывать найденную строчку. Или это не возможно ?
PM MAIL   Вверх
Deniz
Дата 16.3.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(alf138 @  16.3.2010,  16:26 Найти цитируемый пост)
Или это не возможно ?
Возможно.
Из хелпа:
Цитата
DBGrid.Options
...
dgIndicator    A small pointer appears in the first column to indicate which row is current.
dgRowSelect    The user can select an entire row, as well as selecting individual cells. If Options includes dgRowSelect, dgEditing and dgAlwaysShowEditor are ignored.
...



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
alf138
Дата 17.3.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Все это у меня включенно, но при переходе на найденную строчку он ее все равно не выделяет, просто перематывает да найденного значения, и не выделяет его.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.