Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с окнами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
shyrik
абсолютно не представляю как делать.
Создать окно в рамке с тенью на фоне, заполненном псевдографическим символом #176 желтого цвета, с текстом из файла. Выполнять перемещение окна вверх, вниз, вправо или влево с сохранением фона по клавишам управления курсором.
volvo
Тебе надо посмотреть модуль Win.Pas который шел с Турбо-Паскалем 6.0 ... Там были реализованы функции и процедуры для работы с окнами... Сам исходник модуля (с примером использования) я присоединил...
Amro
http://forum.sources.ru/index.php?showtopic=42637&hl=
Хех по-моему она самая ... прямо в точности слово в слово
shyrik Ты случаем не Астраханец ;)
shyrik
Amro
зашибись,круто,пасиб.
случаем из Астрахани,откуда меня знаешь???
shyrik
в той проге есть ошибка,её вроде исправил,но текст выводится не на окно а на фон,в чём поблема.
shyrik
вот кому надо моя прога, она и полегче и по меньше и код у неё понятнее чем в той которая по ссылке.
Цитата
uses crt;
Var
Finp:text;
i,X,Y:Integer;
ch:char;
Screen: array [1..25,1..80,1..2] of byte absolute  $b800:0000;
SaveScreen: array [1..25,1..80,1..2] of byte;
procedure SaveBackGround(flag:boolean);
var
i,j,k:Integer;
begin
if flag then for i:=1 to 25 do for j:=1 to 80 do for k:=1 to 2 do
  SaveScreen[i,j,k]:=Screen[i,j,k]
else for i:=1 to 25 do for j:=1 to 80 do for k:=1 to 2 do
  Screen[i,j,k]:=SaveScreen[i,j,k];
end;
procedure ShowWindow;
Var
StrInp:string;
begin  {⥭м}
Window(X+1,Y+1,x+40,Y+14);
TextBackground(Black);
clrscr;
Window(X,Y,X+39,Y+13);
TextBackground(lightgray);
Clrscr;
{аЁбгҐв а ¬Єг}
gotoxy(2,1); For i:=2 to 39 do write(chr(196));
for i:=2 to 13 do begin gotoxy(1,i); write(chr(179)); end;
for i:=2 to 13 do begin gotoxy(40,i); write(chr(179)); end;
  gotoxy(2,14); for i:=2 to 39 do write(chr(196));
  gotoxy(1,1); write(chr(218));
  gotoxy(40,1); write(chr(191));
  gotoxy(1,14); write(chr(192));
  Window(X,Y,X+40,Y+13);
  gotoxy(40,14); write(chr(217));
  Window(X+1,Y+1,X+38, Y+12);
  {$I-}
  reset(Finp);
  {$I+}
  while not EOF(Finp) do begin
    readln(Finp,StrInp);
    writeln(StrInp);
  end;
end;
procedure FillWindow;
begin
TextColor(0); gotoxy(1,1);
for i:=1 to 1999 do write(chr(176));
Screen[25,80,1]:=176; Screen[25,80,2]:=100;
end;
Begin
Assign(Finp,'123.TXT');
window(1,1,80,25);
TextBackground(yellow);
TextColor(White);
Clrscr;
X:=20;
y:=6;
FillWindow;
SaveBackGround(true);
ShowWindow;
repeat
  if KeyPressed then begin
ch:=Readkey;
if (ch=chr(75)) or (ch=chr(77)) or (ch=chr(72))
    or (ch=chr(80)) or (ch=chr(27))
    then begin
  window(1,1,80,25);
  SaveBackGround(false);
  ShowWindow;
end;
end
else ch:=chr(20);
if (ch=chr(75)) and (X>1) then Dec(X);
if (ch=chr(77)) and (X<40) then Inc(X);
if (ch=chr(72)) and (Y>1) then Dec(Y);
if (ch=chr(80)) and (Y<11) then Inc(Y);
until ch=chr(27);
TextColor(White);
End.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.