[Back to COLOR SWAG index]  [Back to Main SWAG index]  [Original]

{
> I want to be able to read a users Text Attrib and store them so i can
> restore them when my Program ends.  How can I do this?

It seems strange you would only want to save Text attribute and
not the Dos screen, but that is what you ask -- as I understand it.

You need to read the attribute of Character at or one column
beFore the current cursor position, directly from the screen. Something
like this should do:
}

Uses
  Crt;

Function UserAttr: Byte;
Var VSeg: Word;
begin
  if LastMode = 7 then
    VSeg := $B000          { Monochrome }
  else
    VSeg := $B800;         { Color }
  if (WhereX = 1) and (WhereY = 1) then
    UserAttr := Hi(MemW[VSeg:0])
  else
    UserAttr := Hi(MemW[VSeg:(WhereX -1) + (MemW[$40:$4A] * (WhereY -1)) -2]);
end;

(*
BeFore returning to Dos, Write one space With given attribute and
backspace over it (this will cause Dos to continue in the same color):

TextAttr := OldAttr;    { OldAttr initialized at Program startup }
Write(#20#8);
*)


[Back to COLOR SWAG index]  [Back to Main SWAG index]  [Original]