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

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

Кстати, кнопки "вперед/назад" уже есть в виде класса. Сделай через Wizard форму и увидишь это "счастье". Потом будет еще бОльшее "счастье" в попытках как-то пркрутить этот класс в свое прилоежение.
...
Рейтинг: 0 / 0
Использование навигатора по записям таблицы
    #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
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Использование навигатора по записям таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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