sms16@po.CWRU.Edu (Steven M. Schwartz) (04/08/91)
Netters,
Does anyone out there know the proper procedure or function
call for deleting the grid background on a TurboVision skeleton. I
have tried deciphering the documentation much to my dismay. I would
like to set the background of the skeleton (not one of the windows)
to a palette color but GetPalette and GetColor have no effect on the
background, just the event background. This does not seem like a
more "efficient" way to program, just a pain in the neck. Thanks.
SteveRobert_Salesas@mindlink.UUCP (Robert Salesas) (04/08/91)
The following should help you out...
uses Objects,Menus,Drivers,Views,App,Gadgets;
type
PMyApp = ^TMyApp;
TMyApp = object(TApplication)
constructor Init;
procedure InitMenuBar;virtual;
procedure InitStatusLine;virtual;
Function GetPalette : PPalette; Virtual;
end;
{ set up string array to hold palettes where we can fool with 'em }
Var Palette : Array [0..2] of String;
constructor TMyApp.Init;
var
R : TRect;
begin
{ steal the default palettes into string variable array }
Palette[0] := CColor; { set up palettes BEFORE initting App }
Palette[1] := CBlackWhite;
Palette[2] := CMonochrome;
{ now change the background color in the "color" palette }
Palette[0,1] := #$27; { <- change 1st entry in palette 0 }
TApplication.Init;
{ you can also change the palette "pattern" like this: }
{ remove the comment delimiters and recompile! }
Desktop^.Background^.Pattern := #206;
Desktop^.Redraw;
end;
procedure TMyApp.InitMenuBar;
var
R : TRect;
begin
GetExtent(R);
R.B.Y := R.A.Y + 1;
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu('~T~est', hcNoContext, NewMenu(
NewItem('~E~xit','Alt-X',kbAltX,cmQuit,hcNoContext,
nil)),nil))));
end;
procedure TMyApp.InitStatusLine;
var
R : TRect;
begin
GetExtent(R);
R.A.Y := R.B.Y - 1;
StatusLine := New(PStatusLine,Init(R,
NewStatusDef(0,$FFFF,
NewStatusKey('~A~lt-X Quit',kbAltX,cmQuit,
nil),nil)));
end;
{ index into the correct palette }
Function TMyApp.GetPalette : PPalette;
Begin
GetPalette := @Palette[AppPalette];
End;
var
MyApp: TMyApp;
begin
MyApp.Init;
MyApp.Run;
MyApp.Done;
end.
The method shown here for altering the palette is NOT the greatest, but
it works. I got this of CIS, it's not what I do, if you wnat I could
put something together. This should give you a fairly good idea though.
To use just one color for the background make the background character
a space and set the background background color to whatever you want.
sorry for that weird sentence...
Rob
--
\--------------------------------------------------------------------/
\ Robert Salesas + Usenet: Robert_Salesas@MINDLINK.UUCP /
\ Eschalon Development Inc. + CIS: 76625,1320 BYTE: newdawn /
\--------------------------------------------------------------------/