Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Использование навигатора по записям таблицы / 4 сообщений из 4, страница 1 из 1
03.04.2007, 10:22
    #34433119
СяоФэн
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование навигатора по записям таблицы
Тот, кто знаком со средой разработки Дельфи, знает, что сущесвтует компонент для навигации по записям в таблице
В foxpro этого нет. Поэтому приходится разрабатывать свои процедуры навигации.
Сделав это для одной формы, несложно копированием поместить код и кнопки в другие. Однако, если форм много, это не так удобно.

Не подскажите как лучше решать такую задачу? Разработать ли особый класс? Или просто копировать и не парится...
...
Рейтинг: 0 / 0
03.04.2007, 10:27
    #34433131
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование навигатора по записям таблицы
Лучше разработать класс. И не париться.
...
Рейтинг: 0 / 0
03.04.2007, 10:38
    #34433179
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование навигатора по записям таблицы
Если под "навигацией" в данном случае понимается набор клавиш "вперед/назад" и порядковый номер, то лучше вообще не заморачиваться с этой ерундой. "Навигация" - это поиск нужной записи. А знание некоего мифического "порядкового номера" записи, которое зависит от огромного количества условий, соевршенно ничего не дает в плане поиска этой записи.

Кстати, кнопки "вперед/назад" уже есть в виде класса. Сделай через Wizard форму и увидишь это "счастье". Потом будет еще бОльшее "счастье" в попытках как-то пркрутить этот класс в свое прилоежение.
...
Рейтинг: 0 / 0
03.04.2007, 12:53
    #34433875
СяоФэн
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование навигатора по записям таблицы
ВладимирМЕсли под "навигацией" в данном случае понимается набор клавиш "вперед/назад" и порядковый номер, то лучше вообще не заморачиваться с этой ерундой. "Навигация" - это поиск нужной записи. А знание некоего мифического "порядкового номера" записи, которое зависит от огромного количества условий, соевршенно ничего не дает в плане поиска этой записи.


Да под навигацией понимается перебор - перемещение по записям туда сюда в начало в конец

Делается примерно так. Есть общий метод для активации дезактивации кнопок
Код: plaintext
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.
* Пользовательский метод BUTTONS.
* Регулирует доступ к кнопкам навигации btn_Next и btn_Prev . 
* =========================================================== *
Local mSaveRec                   && номер текущей записи
IF Alias() = "R1"
  mSaveRec = Recno()                            
  If Eof()
    Thisform.btn_Next.Enabled = .F.
  else
    Thisform.btn_Next.Enabled = .T. 
           * ----- но если это была последняя запись - дополнит. проверка ---- * 
    Skip        
    if eof()
      Thisform.btn_Next.Enabled = .F.    
      go Bottom
    endif  
  endif
  if Between (mSaveRec, 1 ,Reccount() )
    go mSaveRec   
  endif 
 
  if Bof()
     Thisform.btn_Prev.Enabled = .F.    
  else
     Thisform.btn_Prev.Enabled = .T.    
     skip -  1             && дополнит. проверка возможности смещения вверх
     if Bof()             &&  это была первая запись !  
        Thisform.btn_Prev.Enabled = .F. 
        go Top 
     endif
  endif
  if Between (mSaveRec, 1 ,Reccount() )
    go mSaveRec   
  endif    
Endif         && end IF Alias() =  "R1" 
* ===========  end  Buttons ========== *    

Код кнопки К первой записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if Alias() <> "R1"       && это возможно, когда открыт не один файл 
  Select R1                
Endif  

if NOT BOF()
  go TOP
endif
ThisForm.Buttons
ThisForm.Grid1.SetFocus
ThisForm.Grid1.Refresh

Код кнопки Назад
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if Alias() <> "R1"
  Select R1 
Endif  

if Not BOF()
  skip - 1  
  if BOF()
    go TOP
  endif
 endif
 ThisForm.Buttons
 ThisForm.Grid1.SetFocus
 ThisForm.Grid1.Refresh

Код кнопки Вперед
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if Alias() <> "R1"
  Select R1 
Endif  

if Not EOF()
   Skip
   if EOF()
     go BOTTOM
   endif
endif   
ThisForm.Buttons
ThisForm.Grid1.SetFocus
ThisForm.Grid1.Refresh

Наконец К последней записи

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if Alias() <> "R1"
  Select R1 
Endif  

if NOT Eof()
   go Bottom
endif
ThisForm.Buttons
ThisForm.Grid1.SetFocus
ThisForm.Grid1.Refresh

ВладимирМКстати, кнопки "вперед/назад" уже есть в виде класса. Сделай через Wizard форму и увидишь это "счастье". Потом будет еще бОльшее "счастье" в попытках как-то пркрутить этот класс в свое прилоежение.

Ясно, посмотрю
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Использование навигатора по записям таблицы / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]