[Back to TEXTWNDW SWAG index] [Back to Main SWAG index] [Original]
DS> Like say there is a Text Window that pops up when someone makes a
DS>choice. Then they select something else and a Text Window is made that
DS>overlaps the previous one. Then I'd like to have it so if the user
DS>were to press, say, escape, the current Text Window would be "removed"
DS>and the old Window would still be there as is was....
DS>How can this be done?? Please keep in mind that I'm still sort of
Here's two Procedures a friend of mine wrote (David Thomas: give credit
whree credit is due). It works great With regular Text screens.
Put This in you Type section:
WindowStatus = (OnScreen, OffScreen);
WindowType = Record
Point : Pointer;
Status : WindowStatus;
Col,
Row,
SaveAttr : Byte;
end;
Procedure GetWindow (Var Name : WindowType);
Var
Size,
endOffset,
StartOffset : Integer;
begin { GetWindow }
With Name Do
begin
Col := WhereX;
Row := WhereY;
SaveAttr := TextAttr;
StartOffset := 0;
endOffset := 25 * 160;
Size := endOffset - StartOffset;
GetMem (Point, Size);
Move (Mem[$B800:StartOffset], Point^, Size);
Status := OnScreen;
end; { With }
end; { GetWindow }
{--------------------------------------------------------------------}
Procedure PutWindow (Var Name : WindowType);
Var
Size,
endOffset,
StartOffset : Integer;
begin { PutWindow }
With Name Do
begin
StartOffset := 0;
endOffset := 25 * 160;
Size := endOffset - StartOffset;
Move (Point^, Mem[$B800:StartOffset], Size);
FreeMem (Point, Size);
Status := OffScreen;
TextAttr := SaveAttr;
GotoXY (Col, Row);
end; { With }
end; { PutWindow }
Very easy to use. Just declare a Varibale of WindowType, call the
GETWindow routine, then display whatever. When you're done, call the
PUTWindow routine and it Zap, it's back to how it was. Very face, very
nice.
[Back to TEXTWNDW SWAG index] [Back to Main SWAG index] [Original]