IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Скролинг, вывод файла с большим кол-вом записей
Renbo
сообщение 5.04.2007 18:02
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Имеем Типизированный фаил. Работаем последовательным доступом.

Имеется вот такая процедурка вывода ввиде таблички.

procedure vivod2;
var
i:integer;
Begin
clrscr;
i:=0;
assign(spravochnik2,'spravka2');
reset(spravochnik2);
writeln('----------------------------------------------------------------------------');
writeln('№':3,' Табельный ФИО Семейное Количество');
writeln(' Номер сотрудника положение детей ');
writeln('----------------------------------------------------------------------------');
with Zap2 do
while not eof(spravochnik2) do
begin
inc(i);
write(i:3);
read(spravochnik2,Zap2);writeln(TabNom:9,FIOsotr:30,SP:15,Deti:14);
end;
close(spravochnik2);
End;




Проблема: Если записей будет более 20 что ли...то в итоге паскаль выводит на экран только последние несколько записей, при этом не видна шапка. Как я понял лучше шапку выделить в отдельную процедуру. А вот с самим выводом как быть? хочется, чтобы он прокручивался по нажатию на стрелочки вниз-вверх
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 5.04.2007 19:31
Сообщение #2


Гость






Может быть... Надо будет доработать его только ... Я подумаю. smile.gif
 К началу страницы 
+ Ответить 
Renbo
сообщение 5.04.2007 19:51
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Я смог всё-таки сделать без seek и filepose ))


procedure vivodShapki;

Begin
clrscr;
writeln('----------------------------------------------------------------------------');
writeln('№':3,' Табельный ФИО Семейное Количество');
writeln(' Номер сотрудника положение детей ');
writeln('----------------------------------------------------------------------------');
end;


procedure vivodilka;
var
k,curr_pos,n,p:integer;
refresh:boolean;
Begin
assign(spravochnik2,'spravka2');
reset(spravochnik2);
curr_pos:= 0;
refresh:=true;
while not eof(spravochnik2) do
begin
read(spravochnik2,Zap2);
inc(n);
end;
repeat
if refresh then
begin
reset(spravochnik2);
k:=1;
vivodShapki;
p:=0;
repeat
read (spravochnik2,Zap2);
If k in [curr_pos+1..curr_pos+10] then
with Zap2 do
begin
inc(p);
write(curr_pos+p:3);
writeln(TabNom:9,FIOsotr:30,SP:15,Deti:14);
end;
inc(k);
until (eof(spravochnik2));
refresh:=false;
end;
case ord(readkey) of
80:if curr_pos+10 < n then
begin
inc(curr_pos,10);
refresh:=true;
end;
72:if curr_pos-10>=0 then
begin
dec(curr_pos, 10);
refresh:=true;
end;
13:break;
end;
until false;
close(spravochnik2);
End;




Пашет, но есть 1 нюанс: когда он выведит последнию страницу с записями, то дальше можно будет листать, но будут пустые листы...вот как бы это заблочить?

Сообщение отредактировано: Renbo - 5.04.2007 22:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 20:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"