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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 00:23   #1
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию Перемещение по ячейкам строк в DBGrid

Доброго времени суток! Есть дело.
На форме расположены следующие элементы: DBGrid1, DataSource1, Table1. Их свойтсва как полагается настроены, т.е. данные отображаются пока как надо. Проблема состоит в следующем: Мне необходимо программное перещение по строкам DBGrid1. Объясню замысел, если у кого есть идеи по светлее прошу выкладывайте- буду рад услышать: пишу свою программу будильник, в ней есть возможность настраивать/добавлять несколько записей(событие, время, музыка, выполнено). Ориентируюсь по системному времени. Если системное время равно одному из пунктов в колонке "Время", то играет та музыка которую я выбрал(адрес к музыке на компе вводится пользователем).
Изображения
Тип файла: jpg Безымянный.JPG (188.8 Кб, 146 просмотров)
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 25.09.2009, 01:52   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Варианты:

Table1.RecNo := Table1.RecNo + 1;
Table1.Next;
Table1.Prior;

Это если все-таки по строкам. А если верить заголовку и нужны таки ячейки, то что-то вроде этого:
DBGrid1.SelectedIndex := 1;

Последний раз редактировалось Баламут; 25.09.2009 в 05:40.
Баламут вне форума Ответить с цитированием
Старый 25.09.2009, 08:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Варианты:
Не лучший способ, предлагаю так:
Код:
if Table1. Table1.FindNext then...
if Table1. Table1.FindPrior then...
Цитата:
то что-то вроде этого:
Тоже некошерно. Лучше проходится по полям текущей записи. DBGrid это не поле по которому мона шагать в любую сторону.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.09.2009, 08:16   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Со вторым утверждением в принципе согласен, а про первое... В чем разница-то? Не уловил. if не дописал? Дык ведь не исходник же выкладываю, а идею.
Баламут вне форума Ответить с цитированием
Старый 25.09.2009, 08:35   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Баламут
Нет дело не в IF. Я имел ввиду что вылезет ошибка если просто выполнить Next при условии что таблица пуста или курсор в конце находится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.09.2009, 11:51   #6
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Ребят, а что DBGrid1 не надо трогать. Ведь он отображает данные, а не Table1. Объяснюсь ещё раз, может просто вы меня не правильно поняли.
Взгляните на файл...
Сейчас, к примеру по системному времени 11:45:28, через 15мин должна за играть та музыка, которая распололжена на этой строке в поле Музыка. При наступлении вечера,18:00:00, за играет та музыка, которая находится на той же строчке что и запись Вечер, но в поле Музыка. Надеюсь объяснил доходчиво.
Кстати, попробовал
Код:
Table1.FindNext 
Table1.FindPrior
но Delphi не согласилось со мной...
Изображения
Тип файла: jpg Безымянный.JPG (42.6 Кб, 137 просмотров)
Всё гениальное - просто!

Последний раз редактировалось .Phoenix; 25.09.2009 в 11:58.
.Phoenix вне форума Ответить с цитированием
Старый 25.09.2009, 12:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит. я бы делал так:
Каждые м.м.м 10 минут выполнял locate по полю времени, на текушее время.
Если такое поле найдено, то выбирал из него музон и прокручивал.
Никаких Next, Prior тут не нужно - они не будут удобны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.09.2009, 12:56   #8
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Ну тогда перемещение по строкам как было сказано выше и обращение к полям базы как Table1.FieldByName('Имя_поля'). А вообще конечно же стоило уточнить тип переменной Table1, точнее был бы ответ.
Баламут вне форума Ответить с цитированием
Старый 25.09.2009, 13:09   #9
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Stilet. Меня кстати и интересует, как совершать передвижение по строкам DBGrid1.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 25.09.2009, 13:16   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
.Phoenix
Ну вот если брать то что я предлагаю то выглядеть это буит так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var s:string;
begin
 if Table1.Locate('время',[TimeToStr(now)],[]) then begin
  // нашли, такое время есть в БД
  s:=Table1.FieldByName('музня').AsString;
 терь в s путь к файлу музла
 end
end;
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диффиринцирование строк в DBGrid - ? Evgenii БД в Delphi 5 21.07.2009 08:57
Перемещение даннах из dbgrid в dbgrid Hobbit_88 БД в Delphi 7 10.06.2009 13:33
Нумерация строк в DBGrid artemavd БД в Delphi 8 15.04.2009 20:31
Количество строк DBGrid AndreyF Общие вопросы Delphi 4 02.12.2008 21:32
Совмещение строк по ячейкам в Excel asfa Microsoft Office Excel 6 16.03.2007 01:13