Browse Source

* several more fixes

pierre 24 years ago
parent
commit
8a41dbef3c
11 changed files with 346 additions and 127 deletions
  1. 13 2
      fv/app.pas
  2. 7 1
      fv/drivers.pas
  3. 15 12
      fv/gfvgraph.pas
  4. 11 1
      fv/menus.pas
  5. 112 46
      fv/views.pas
  6. 13 2
      fvision/app.pas
  7. 7 1
      fvision/drivers.pas
  8. 15 12
      fvision/gfvgraph.pas
  9. 11 1
      fvision/menus.pas
  10. 30 3
      fvision/testapp.pas
  11. 112 46
      fvision/views.pas

+ 13 - 2
fv/app.pas

@@ -628,7 +628,15 @@ END;
 {  InitBackGround -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 12Sep97 LdB    }
 {  InitBackGround -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 12Sep97 LdB    }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TDesktop.InitBackground;
 PROCEDURE TDesktop.InitBackground;
-{$IFNDEF OS_WINDOWS} CONST Ch: Char = #176; {$ELSE} CONST Ch: Char = #167; {$ENDIF}
+{$IFNDEF OS_WINDOWS}
+CONST Ch: Char = #176;
+{$ELSE}
+{$IFDEF NO_WINDOW}
+CONST Ch: Char = #176;
+{$ELSE not NO_WINDOW}
+CONST Ch: Char = #167;
+{$ENDIF}
+{$ENDIF}
 VAR R: TRect;
 VAR R: TRect;
 BEGIN
 BEGIN
    GetExtent(R);                                      { Get desktop extents }
    GetExtent(R);                                      { Get desktop extents }
@@ -1325,7 +1333,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.6  2001-05-04 08:42:54  pierre
+ Revision 1.7  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.6  2001/05/04 08:42:54  pierre
   * some corrections for linux
   * some corrections for linux
 
 
  Revision 1.5  2001/05/03 22:32:52  pierre
  Revision 1.5  2001/05/03 22:32:52  pierre

+ 7 - 1
fv/drivers.pas

@@ -3033,12 +3033,18 @@ BEGIN
    TextModeGFV:=True;
    TextModeGFV:=True;
    InitKeyboard;
    InitKeyboard;
    {$endif Use_API}
    {$endif Use_API}
+   {$ifdef Graph_API}
+   TextModeGFV:=false;
+   {$endif Graph_API}
    SaveExit := ExitProc;                              { Save old exit }
    SaveExit := ExitProc;                              { Save old exit }
    ExitProc := @ExitDrivers;                          { Set new exit }
    ExitProc := @ExitDrivers;                          { Set new exit }
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.7  2001-05-04 10:46:02  pierre
+ Revision 1.8  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.7  2001/05/04 10:46:02  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.6  2001/05/04 08:42:55  pierre
  Revision 1.6  2001/05/04 08:42:55  pierre

+ 15 - 12
fv/gfvgraph.pas

@@ -72,7 +72,7 @@ UNIT GFVGraph;
 {$V-} { Turn off strict VAR strings }
 {$V-} { Turn off strict VAR strings }
 {====================================================================}
 {====================================================================}
 
 
-{$IFDEF OS_DOS}                                       { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                       { DOS/DPMI CODE }
 USES Graph;                                           { Standard unit }
 USES Graph;                                           { Standard unit }
 {$ENDIF}
 {$ENDIF}
 
 
@@ -125,7 +125,7 @@ CONST
 CONST
 CONST
    Detect = 0;                                        { Detect video }
    Detect = 0;                                        { Detect video }
 
 
-{$IFDEF OS_DOS}                                       { DOS CODE ONLY }
+{$IFDEF NO_WINDOW}                                       { DOS CODE ONLY }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 {                 DOS GRAPHICS SOLID FILL BAR AREA CONSTANT                 }
 {                 DOS GRAPHICS SOLID FILL BAR AREA CONSTANT                 }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
@@ -219,7 +219,7 @@ graphics routine, that is the actual screen height in pixels - 1.
 ---------------------------------------------------------------------}
 ---------------------------------------------------------------------}
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 
 
-{$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetFillStyle (Pattern: Word; Color: Word);
 PROCEDURE SetFillStyle (Pattern: Word; Color: Word);
 PROCEDURE Bar (X1, Y1, X2, Y2: Integer);
 PROCEDURE Bar (X1, Y1, X2, Y2: Integer);
@@ -272,7 +272,7 @@ CONST
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE SetWriteMode (Mode: Byte; TextMode: Boolean);
 PROCEDURE SetWriteMode (Mode: Byte; TextMode: Boolean);
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then WriteMode := Mode                 { Hold write mode }
    If TextMode Then WriteMode := Mode                 { Hold write mode }
      Else Graph.SetWriteMode(Mode);                   { Call graph proc }
      Else Graph.SetWriteMode(Mode);                   { Call graph proc }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -288,9 +288,9 @@ END;
 {  GetViewSettings -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 05Dec2000 LdB }
 {  GetViewSettings -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 05Dec2000 LdB }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE GetViewSettings (Var CurrentViewPort: ViewPortType; TextMode: Boolean);
 PROCEDURE GetViewSettings (Var CurrentViewPort: ViewPortType; TextMode: Boolean);
-{$IFDEF OS_DOS} VAR Ts: Graph.ViewPortType;{$ENDIF}   { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW} VAR Ts: Graph.ViewPortType;{$ENDIF}   { DOS/DPMI CODE }
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then CurrentViewPort := ViewPort       { Textmode viewport }
    If TextMode Then CurrentViewPort := ViewPort       { Textmode viewport }
      Else Begin
      Else Begin
        Graph.GetViewSettings(Ts);                     { Get graph settings }
        Graph.GetViewSettings(Ts);                     { Get graph settings }
@@ -310,7 +310,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE SetViewPort (X1, Y1, X2, Y2: Integer; Clip, TextMode: Boolean);
 PROCEDURE SetViewPort (X1, Y1, X2, Y2: Integer; Clip, TextMode: Boolean);
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If (TextMode = TRUE) Then Begin                    { TEXT MODE GFV }
    If (TextMode = TRUE) Then Begin                    { TEXT MODE GFV }
    {$ENDIF}
    {$ENDIF}
      If (X1 < 0) Then X1 := 0;                        { X1 negative fix }
      If (X1 < 0) Then X1 := 0;                        { X1 negative fix }
@@ -332,7 +332,7 @@ BEGIN
      ViewPort.Clip := Clip;                           { Set port clip value }
      ViewPort.Clip := Clip;                           { Set port clip value }
      Cxp := X1;                                       { Set current x pos }
      Cxp := X1;                                       { Set current x pos }
      Cyp := Y1;                                       { Set current y pos }
      Cyp := Y1;                                       { Set current y pos }
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    End Else Begin                                     { GRAPHICS MODE GFV }
    End Else Begin                                     { GRAPHICS MODE GFV }
      Graph.SetViewPort(X1, Y1, X2, Y2, Clip);         { Call graph proc }
      Graph.SetViewPort(X1, Y1, X2, Y2, Clip);         { Call graph proc }
    End;
    End;
@@ -348,7 +348,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 FUNCTION GetMaxX (TextMode: Boolean): Integer;
 FUNCTION GetMaxX (TextMode: Boolean): Integer;
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then GetMaxX := SysScreenWidth-1       { Screen width }
    If TextMode Then GetMaxX := SysScreenWidth-1       { Screen width }
      Else GetMaxX := Graph.GetMaxX;                   { Call graph func }
      Else GetMaxX := Graph.GetMaxX;                   { Call graph func }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -361,7 +361,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then GetMaxY := SysScreenHeight-1      { Screen height }
    If TextMode Then GetMaxY := SysScreenHeight-1      { Screen height }
      Else GetMaxY := Graph.GetMaxY;                   { Call graph func }
      Else GetMaxY := Graph.GetMaxY;                   { Call graph func }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -369,7 +369,7 @@ BEGIN
    {$ENDIF}
    {$ENDIF}
 END;
 END;
 
 
-{$IFDEF OS_DOS}                                       { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                       { DOS/DPMI CODE }
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetColor(Color: Word);
 BEGIN
 BEGIN
    Graph.SetColor(Color);                             { Call graph proc }
    Graph.SetColor(Color);                             { Call graph proc }
@@ -404,7 +404,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.4  2001-04-10 21:57:55  pierre
+ Revision 1.5  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.4  2001/04/10 21:57:55  pierre
   + first adds for Use_API define
   + first adds for Use_API define
 
 
  Revision 1.3  2001/04/10 21:29:55  pierre
  Revision 1.3  2001/04/10 21:29:55  pierre

+ 11 - 1
fv/menus.pas

@@ -1048,6 +1048,8 @@ BEGIN
    Inherited Init(R);                                 { Call ancestor }
    Inherited Init(R);                                 { Call ancestor }
    State := State OR sfShadow;                        { Set shadow state }
    State := State OR sfShadow;                        { Set shadow state }
    Options := Options OR ofPreProcess;                { View pre processes }
    Options := Options OR ofPreProcess;                { View pre processes }
+   if TextModeGFV then
+     Options := Options OR ofFramed;
    Menu := AMenu;                                     { Hold menu }
    Menu := AMenu;                                     { Hold menu }
    ParentMenu := AParentMenu;                         { Hold parent }
    ParentMenu := AParentMenu;                         { Hold parent }
 END;
 END;
@@ -1090,6 +1092,11 @@ BEGIN
                DarkGray, False);                      { Draw higlight box }
                DarkGray, False);                      { Draw higlight box }
            End;
            End;
          End;
          End;
+       End Else Begin { no text NewLine }
+         MoveChar(B, 'Ã', Color, 1);
+         MoveChar(B[1], 'Ä', Color, Size.X-2);
+         MoveChar(B[Size.X-1], '´', Color, 1);
+         WriteBuf(0, Y, Size.X, 1, B);                { Write the line }
        End;
        End;
        Inc(Y);                                        { Next line down }
        Inc(Y);                                        { Next line down }
        P := P^.Next;                                  { fetch next item }
        P := P^.Next;                                  { fetch next item }
@@ -1676,7 +1683,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.5  2001-05-04 10:46:02  pierre
+ Revision 1.6  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.5  2001/05/04 10:46:02  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.4  2001/04/10 21:57:55  pierre
  Revision 1.4  2001/04/10 21:57:55  pierre

+ 112 - 46
fv/views.pas

@@ -2041,8 +2041,15 @@ END;
 {  DrawBorder -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 17May98 LdB        }
 {  DrawBorder -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 17May98 LdB        }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TView.DrawBorder;
 PROCEDURE TView.DrawBorder;
-BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE ONLY }
+VAR I : sw_integer;
+    LeftUpCorner,
+    RightUpCorner,
+    HorizontalBar,
+    VerticalBar,
+    LeftLowCorner,
+    RightLowCorner : Char;
+BEGIN
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE ONLY }
    If (TextModeGFV = FALSE) Then Begin                { GRAPHICS GFV MODE }
    If (TextModeGFV = FALSE) Then Begin                { GRAPHICS GFV MODE }
      BiColorRectangle(0, 0, RawSize.X, RawSize.Y,
      BiColorRectangle(0, 0, RawSize.X, RawSize.Y,
        White, DarkGray, False);                       { Draw 3d effect }
        White, DarkGray, False);                       { Draw 3d effect }
@@ -2055,6 +2062,35 @@ BEGIN
          White, DarkGray, True);                      { Draw highlights }
          White, DarkGray, True);                      { Draw highlights }
      End;
      End;
    End Else Begin                                     { TEXT GFV MODE }
    End Else Begin                                     { TEXT GFV MODE }
+     If not Focus or (GOptions AND goThickFramed = 0) then
+       begin
+         LeftUpCorner:='Ú';
+         RightUpCorner:='¿';
+         HorizontalBar:='Ä';
+         VerticalBar:='³';
+         LeftLowCorner:='À';
+         RightLowCorner:='Ù';
+       end
+     else
+       begin
+         LeftUpCorner:='É';
+         RightUpCorner:='»';
+         HorizontalBar:='Í';
+         VerticalBar:='º';
+         LeftLowCorner:='È';
+         RightLowCorner:='¼';
+       end;
+     WriteChar(0,0,LeftUpCorner,1,1);
+     WriteChar(1,0,HorizontalBar,1,Size.X-2);
+     WriteChar(Size.X-1,0,RightUpcorner,1,1);
+     For i:=1 to Size.Y -1 do
+       begin
+         WriteChar(0,i,VerticalBar,1,1);
+         WriteChar(Size.X-1,i,VerticalBar,1,1);
+       end;
+     WriteChar(0,Size.Y-1,LeftLowCorner,1,1);
+     WriteChar(1,Size.Y-1,HorizontalBar,1,Size.X-2);
+     WriteChar(Size.X-1,Size.Y-1,RightLowCorner,1,1);
    End;
    End;
    {$ENDIF}
    {$ENDIF}
 END;
 END;
@@ -3578,8 +3614,12 @@ BEGIN
          ForEach(@DoSetState);                        { Set each subview }
          ForEach(@DoSetState);                        { Set each subview }
          UnLock;                                      { Unlock the view }
          UnLock;                                      { Unlock the view }
        End;
        End;
-     sfFocused: If (Current <> Nil) Then
-       Current^.SetState(sfFocused, Enable);          { Focus current view }
+     sfFocused: Begin
+         If (Current <> Nil) Then
+           Current^.SetState(sfFocused, Enable);          { Focus current view }
+         If TextModeGFV then
+           SetDrawMask(vdBackGnd OR vdFocus OR vdInner); { Set redraw masks }
+       End;
      sfExposed: Begin
      sfExposed: Begin
          ForEach(@DoExpose);                          { Expose each subview }
          ForEach(@DoExpose);                          { Expose each subview }
        End;
        End;
@@ -5294,9 +5334,9 @@ END;
 {  HandleEvent -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 11Aug99 LdB       }
 {  HandleEvent -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 11Aug99 LdB       }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TWindow.HandleEvent (Var Event: TEvent);
 PROCEDURE TWindow.HandleEvent (Var Event: TEvent);
-VAR {$IFDEF OS_DOS} I, J: Integer; {$ENDIF} Min, Max: TPoint; Limits: TRect;
+VAR {$IFDEF NO_WINDOW} I, J: Integer; {$ENDIF} Min, Max: TPoint; Limits: TRect;
 
 
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    PROCEDURE DragWindow (Mode: Byte);
    PROCEDURE DragWindow (Mode: Byte);
    VAR Limits: TRect; Min, Max: TPoint;
    VAR Limits: TRect; Min, Max: TPoint;
    BEGIN
    BEGIN
@@ -5363,14 +5403,16 @@ BEGIN
          End;
          End;
        End;
        End;
      End;
      End;
-     {$IFDEF OS_DOS}                                  { DOS/DPMI CODE ONLY }
+     {$IFDEF NO_WINDOW}                               { DOS/DPMI CODE ONLY }
      evMouseDown:                                     { MOUSE DOWN EVENT }
      evMouseDown:                                     { MOUSE DOWN EVENT }
        If (GOptions AND goTitled <> 0) Then Begin     { Must have title area }
        If (GOptions AND goTitled <> 0) Then Begin     { Must have title area }
-         If (GOptions AND goThickFramed <> 0) Then
-           I := 5 Else                                { Thick frame adjust }
-           If (Options AND ofFramed <> 0) Then I := 1 { Frame adjust }
-             Else I := 0;                             { No frame size }
-         If (Event.Where.Y > (RawOrigin.Y + I)) AND
+         If TextModeGFV then
+           I:=0 Else
+           If (GOptions AND goThickFramed <> 0) Then
+             I := 5 Else                                { Thick frame adjust }
+             If (Options AND ofFramed <> 0) Then I := 1 { Frame adjust }
+               Else I := 0;                             { No frame size }
+         If (Event.Where.Y >= (RawOrigin.Y + I)) AND
          (Event.Where.Y < RawOrigin.Y+FontHeight+I)
          (Event.Where.Y < RawOrigin.Y+FontHeight+I)
          Then Begin                                   { Within top line }
          Then Begin                                   { Within top line }
            If (Current <> Nil) AND
            If (Current <> Nil) AND
@@ -5378,9 +5420,9 @@ BEGIN
              Then Current^.FocusFromTop Else
              Then Current^.FocusFromTop Else
              FocusFromTop;
              FocusFromTop;
            If (Flags AND wfClose <> 0) Then Begin     { Has close icon }
            If (Flags AND wfClose <> 0) Then Begin     { Has close icon }
-             J := I + FontWidth;                      { Set X value }
-             If (Event.Where.X > RawOrigin.X+J) AND
-             (Event.Where.X < RawOrigin.X+J+2*FontWidth)
+             J := I + 2*FontWidth;                      { Set X value }
+             If (Event.Where.X >= RawOrigin.X+J) AND
+             (Event.Where.X < RawOrigin.X+J+3*FontWidth)
              Then Begin                               { In close area }
              Then Begin                               { In close area }
                Event.What := evCommand;               { Command event }
                Event.What := evCommand;               { Command event }
                Event.Command := cmClose;              { Close command }
                Event.Command := cmClose;              { Close command }
@@ -5640,8 +5682,8 @@ BEGIN
    Begin                                     { TEXT MODE GFV }
    Begin                                     { TEXT MODE GFV }
      X1 := (RawOrigin.X+X1) DIV SysFontWidth;
      X1 := (RawOrigin.X+X1) DIV SysFontWidth;
      Y1 := (RawOrigin.Y+Y1) DIV SysFontHeight;
      Y1 := (RawOrigin.Y+Y1) DIV SysFontHeight;
-     X2 := (RawOrigin.X+X2) DIV SysFontWidth;
-     Y2 := (RawOrigin.Y+Y2) DIV SysFontHeight;
+     X2 := (RawOrigin.X+X2-1) DIV SysFontWidth;
+     Y2 := (RawOrigin.Y+Y2-1) DIV SysFontHeight;
      For Y := Y1 To Y2 Do
      For Y := Y1 To Y2 Do
        For X := X1 To X2 Do Begin
        For X := X1 To X2 Do Begin
          VideoBuf^[(Y*Drivers.ScreenWidth+X)] := (Colour shl 12) or $20;
          VideoBuf^[(Y*Drivers.ScreenWidth+X)] := (Colour shl 12) or $20;
@@ -6228,18 +6270,24 @@ BEGIN
      Bc := Col AND $F0 SHR 4;                         { Background colour }
      Bc := Col AND $F0 SHR 4;                         { Background colour }
      FillChar(S[1], 255, C);                          { Fill the string }
      FillChar(S[1], 255, C);                          { Fill the string }
      If (X >= 0) AND (Y >= 0) AND ((GOptions and (goGraphical or goGraphView))=0) Then Begin
      If (X >= 0) AND (Y >= 0) AND ((GOptions and (goGraphical or goGraphView))=0) Then Begin
-       X := RawOrigin.X+X*FontWidth;                    { X position }
-       Y := RawOrigin.Y+Y*FontHeight;                   { Y position }
+       X := RawOrigin.X+X*SysFontWidth;                    { X position }
+       Y := RawOrigin.Y+Y*SysFontHeight;                   { Y position }
      End Else Begin
      End Else Begin
        X := RawOrigin.X + Abs(X);
        X := RawOrigin.X + Abs(X);
        Y := RawOrigin.Y + Abs(Y);
        Y := RawOrigin.Y + Abs(Y);
      End;
      End;
        Tix := X DIV SysFontWidth;
        Tix := X DIV SysFontWidth;
        Tiy := Y DIV SysFontHeight;
        Tiy := Y DIV SysFontHeight;
+     While (Count>0) Do Begin
+       If (Count>255) Then I := 255 Else I := Count;  { Size to make }
+       S[0] := Chr(I);                                { Set string length }
        For Ti := 1 To length(S) Do Begin
        For Ti := 1 To length(S) Do Begin
          VideoBuf^[((Tiy * Drivers.ScreenWidth)+Tix)] := (GetColor(Color) shl 8) or Ord(S[Ti]);
          VideoBuf^[((Tiy * Drivers.ScreenWidth)+Tix)] := (GetColor(Color) shl 8) or Ord(S[Ti]);
-         Tix := Tix + SysFontWidth;
+         Inc(Tix);
        end;
        end;
+       Count := Count - I;                            { Subtract count }
+       X := X + I;                                    { Move x position }
+     End;
        UpdateScreen(false);
        UpdateScreen(false);
      {$ELSE not Use_API}
      {$ELSE not Use_API}
    {$IFDEF OS_DOS}
    {$IFDEF OS_DOS}
@@ -6341,7 +6389,8 @@ BEGIN
      Op2.X := RawOrigin.X+RawSize.X;                  { Right side x value }
      Op2.X := RawOrigin.X+RawSize.X;                  { Right side x value }
      Op2.Y := RawOrigin.Y+RawSize.Y;                  { Right side y value }
      Op2.Y := RawOrigin.Y+RawSize.Y;                  { Right side y value }
      PState := State;                                 { Hold current state }
      PState := State;                                 { Hold current state }
-     State := State AND NOT sfVisible;                { Temp not visible }
+     if not TextModeGFV then
+       State := State AND NOT sfVisible;                { Temp not visible }
      {$IFDEF OS_DOS}                                  { DOS/DPMI CODE }
      {$IFDEF OS_DOS}                                  { DOS/DPMI CODE }
      HideMouseCursor;                                 { Hide the mouse }
      HideMouseCursor;                                 { Hide the mouse }
      {$ENDIF}
      {$ENDIF}
@@ -6372,13 +6421,20 @@ BEGIN
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        HideMouseCursor;                               { Hide the mouse }
        HideMouseCursor;                               { Hide the mouse }
        {$ENDIF}
        {$ENDIF}
-       SetWriteMode(XORPut, TextModeGFV);
-       GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
-       SetWriteMode(NormalPut, TextModeGFV);
-       MoveGrow(R, Mouse);                            { Resize the view }
-       SetWriteMode(XORPut, TextModeGFV);
-       GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
-       SetWriteMode(NormalPut, TextModeGFV);
+       if not TextModeGFV then
+         begin
+           SetWriteMode(XORPut, TextModeGFV);
+           GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
+           SetWriteMode(NormalPut, TextModeGFV);
+           MoveGrow(R, Mouse);                            { Resize the view }
+           SetWriteMode(XORPut, TextModeGFV);
+           GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
+           SetWriteMode(NormalPut, TextModeGFV);
+         end
+       else
+         begin
+           MoveGrow(R, Mouse);                            { Resize the view }
+         end;
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        ShowMouseCursor;                               { Show the mouse }
        ShowMouseCursor;                               { Show the mouse }
        {$ENDIF}
        {$ENDIF}
@@ -6413,10 +6469,6 @@ BEGIN
    SetState(sfDragging, False);                       { Clr dragging flag }
    SetState(sfDragging, False);                       { Clr dragging flag }
 END;
 END;
 
 
-
-
-
-
 FUNCTION TView.FontWidth: Integer;
 FUNCTION TView.FontWidth: Integer;
 BEGIN
 BEGIN
    FontWidth := SysFontWidth;
    FontWidth := SysFontWidth;
@@ -6685,26 +6737,32 @@ BEGIN
 END;
 END;
 
 
 PROCEDURE TWindow.DrawBorder;
 PROCEDURE TWindow.DrawBorder;
-{$IFDEF OS_DOS} VAR Fc, Bc: Byte; X, Y: Integer; S: String;
+{$IFDEF NO_WINDOW} VAR Fc, Bc: Byte; X, Y: Integer; S: String;
 ViewPort: ViewPortType; {$ENDIF}
 ViewPort: ViewPortType; {$ENDIF}
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}
+   {$IFDEF NO_WINDOW}
    Fc := GetColor(2) AND $0F;                        { Foreground colour }
    Fc := GetColor(2) AND $0F;                        { Foreground colour }
-   Bc := 9;                                           { Background colour }
-   If (Options AND ofFramed<>0) Then Y := 1
-     Else Y := 0;                                     { Initial value }
-   If (GOptions AND goThickFramed<>0) Then Inc(Y, 3); { Adjust position }
+   Bc := (GetColor(2) AND $70) SHR 4;                { Background colour }
+   If TextModeGFV then
+     Y:=0 else
+     begin
+       If (Options AND ofFramed<>0) Then Y := 1
+         Else Y := 0;                                     { Initial value }
+       If (GOptions AND goThickFramed<>0) Then Inc(Y, 3); { Adjust position }
+     end;
    ClearArea(0, Y, RawSize.X, Y+FontHeight, Bc);      { Clear background }
    ClearArea(0, Y, RawSize.X, Y+FontHeight, Bc);      { Clear background }
+   Inherited DrawBorder;
    If (Title<>Nil) AND (GOptions AND goTitled<>0)
    If (Title<>Nil) AND (GOptions AND goTitled<>0)
    Then Begin                                         { View has a title }
    Then Begin                                         { View has a title }
      GetViewSettings(ViewPort, TextModeGFV);
      GetViewSettings(ViewPort, TextModeGFV);
      X := (RawSize.X DIV 2);                          { Half way point }
      X := (RawSize.X DIV 2);                          { Half way point }
-     X := X - (Length(Title^)*FontWidth) DIV 2;       { Calc start point }
+     X := X - ((Length(Title^)+2)*FontWidth) DIV 2;       { Calc start point }
      If (TextModeGFV <> TRUE) Then Begin              { GRAPHICS MODE GFV }
      If (TextModeGFV <> TRUE) Then Begin              { GRAPHICS MODE GFV }
        SetColor(Fc);
        SetColor(Fc);
        OutTextXY(RawOrigin.X+X-ViewPort.X1,
        OutTextXY(RawOrigin.X+X-ViewPort.X1,
-         RawOrigin.Y+Y+1-ViewPort.Y1+2, Title^);      { Write the title }
+         RawOrigin.Y+Y+1-ViewPort.Y1+2, ' '+Title^+' ');      { Write the title }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(X div SysFontWidth,0,' '+Title^+' ',2);
      End;
      End;
    End;
    End;
    If (Number>0) AND (Number<10) Then Begin           { Valid number }
    If (Number>0) AND (Number<10) Then Begin           { Valid number }
@@ -6714,6 +6772,7 @@ BEGIN
        OutTextXY(RawOrigin.X+RawSize.X-2*FontWidth-ViewPort.X1,
        OutTextXY(RawOrigin.X+RawSize.X-2*FontWidth-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, S);           { Write number }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, S);           { Write number }
      End Else Begin                                   { LEON ????? }
      End Else Begin                                   { LEON ????? }
+       WriteStr(Size.X-5,0,S,2);
      End;
      End;
    End;
    End;
    If (Flags AND wfClose<>0) Then Begin               { Close icon request }
    If (Flags AND wfClose<>0) Then Begin               { Close icon request }
@@ -6722,6 +6781,7 @@ BEGIN
        OutTextXY(RawOrigin.X+Y+FontWidth-ViewPort.X1,
        OutTextXY(RawOrigin.X+Y+FontWidth-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '[*]');       { Write close icon }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '[*]');       { Write close icon }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(2,0,'[*]',2);
      End;
      End;
    End;
    End;
    If (Flags AND wfZoom<>0) Then Begin
    If (Flags AND wfZoom<>0) Then Begin
@@ -6730,13 +6790,16 @@ BEGIN
        OutTextXY(RawOrigin.X+RawSize.X-4*FontWidth-Y-ViewPort.X1,
        OutTextXY(RawOrigin.X+RawSize.X-4*FontWidth-Y-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '['+#24+']'); { Write zoom icon }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '['+#24+']'); { Write zoom icon }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(Size.X-5,0,'['+#24+']',2);
      End;
      End;
    End;
    End;
-   BiColorRectangle(Y+1, Y+1, RawSize.X-Y-1, Y+FontHeight,
-     White, DarkGray, False);                         { Draw 3d effect }
-   BiColorRectangle(Y+1, Y+1, RawSize.X-Y-2, Y+FontHeight-1,
-     White, DarkGray, False);                         { Draw 3d effect }
-   Inherited DrawBorder;
+   If not TextModeGFV then
+     begin
+       BiColorRectangle(Y+1, Y+1, RawSize.X-Y-1, Y+FontHeight,
+         White, DarkGray, False);                         { Draw 3d effect }
+       BiColorRectangle(Y+1, Y+1, RawSize.X-Y-2, Y+FontHeight-1,
+         White, DarkGray, False);                         { Draw 3d effect }
+     end;
    {$ENDIF}
    {$ENDIF}
 END;
 END;
 
 
@@ -6831,7 +6894,10 @@ END.
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.7  2001-05-04 10:46:03  pierre
+ Revision 1.8  2001-05-04 15:43:46  pierre
+  * several more fixes
+
+ Revision 1.7  2001/05/04 10:46:03  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.6  2001/05/04 08:42:56  pierre
  Revision 1.6  2001/05/04 08:42:56  pierre

+ 13 - 2
fvision/app.pas

@@ -628,7 +628,15 @@ END;
 {  InitBackGround -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 12Sep97 LdB    }
 {  InitBackGround -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 12Sep97 LdB    }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TDesktop.InitBackground;
 PROCEDURE TDesktop.InitBackground;
-{$IFNDEF OS_WINDOWS} CONST Ch: Char = #176; {$ELSE} CONST Ch: Char = #167; {$ENDIF}
+{$IFNDEF OS_WINDOWS}
+CONST Ch: Char = #176;
+{$ELSE}
+{$IFDEF NO_WINDOW}
+CONST Ch: Char = #176;
+{$ELSE not NO_WINDOW}
+CONST Ch: Char = #167;
+{$ENDIF}
+{$ENDIF}
 VAR R: TRect;
 VAR R: TRect;
 BEGIN
 BEGIN
    GetExtent(R);                                      { Get desktop extents }
    GetExtent(R);                                      { Get desktop extents }
@@ -1325,7 +1333,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.6  2001-05-04 08:42:54  pierre
+ Revision 1.7  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.6  2001/05/04 08:42:54  pierre
   * some corrections for linux
   * some corrections for linux
 
 
  Revision 1.5  2001/05/03 22:32:52  pierre
  Revision 1.5  2001/05/03 22:32:52  pierre

+ 7 - 1
fvision/drivers.pas

@@ -3033,12 +3033,18 @@ BEGIN
    TextModeGFV:=True;
    TextModeGFV:=True;
    InitKeyboard;
    InitKeyboard;
    {$endif Use_API}
    {$endif Use_API}
+   {$ifdef Graph_API}
+   TextModeGFV:=false;
+   {$endif Graph_API}
    SaveExit := ExitProc;                              { Save old exit }
    SaveExit := ExitProc;                              { Save old exit }
    ExitProc := @ExitDrivers;                          { Set new exit }
    ExitProc := @ExitDrivers;                          { Set new exit }
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.7  2001-05-04 10:46:02  pierre
+ Revision 1.8  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.7  2001/05/04 10:46:02  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.6  2001/05/04 08:42:55  pierre
  Revision 1.6  2001/05/04 08:42:55  pierre

+ 15 - 12
fvision/gfvgraph.pas

@@ -72,7 +72,7 @@ UNIT GFVGraph;
 {$V-} { Turn off strict VAR strings }
 {$V-} { Turn off strict VAR strings }
 {====================================================================}
 {====================================================================}
 
 
-{$IFDEF OS_DOS}                                       { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                       { DOS/DPMI CODE }
 USES Graph;                                           { Standard unit }
 USES Graph;                                           { Standard unit }
 {$ENDIF}
 {$ENDIF}
 
 
@@ -125,7 +125,7 @@ CONST
 CONST
 CONST
    Detect = 0;                                        { Detect video }
    Detect = 0;                                        { Detect video }
 
 
-{$IFDEF OS_DOS}                                       { DOS CODE ONLY }
+{$IFDEF NO_WINDOW}                                       { DOS CODE ONLY }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 {                 DOS GRAPHICS SOLID FILL BAR AREA CONSTANT                 }
 {                 DOS GRAPHICS SOLID FILL BAR AREA CONSTANT                 }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
@@ -219,7 +219,7 @@ graphics routine, that is the actual screen height in pixels - 1.
 ---------------------------------------------------------------------}
 ---------------------------------------------------------------------}
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 
 
-{$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetFillStyle (Pattern: Word; Color: Word);
 PROCEDURE SetFillStyle (Pattern: Word; Color: Word);
 PROCEDURE Bar (X1, Y1, X2, Y2: Integer);
 PROCEDURE Bar (X1, Y1, X2, Y2: Integer);
@@ -272,7 +272,7 @@ CONST
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE SetWriteMode (Mode: Byte; TextMode: Boolean);
 PROCEDURE SetWriteMode (Mode: Byte; TextMode: Boolean);
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then WriteMode := Mode                 { Hold write mode }
    If TextMode Then WriteMode := Mode                 { Hold write mode }
      Else Graph.SetWriteMode(Mode);                   { Call graph proc }
      Else Graph.SetWriteMode(Mode);                   { Call graph proc }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -288,9 +288,9 @@ END;
 {  GetViewSettings -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 05Dec2000 LdB }
 {  GetViewSettings -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 05Dec2000 LdB }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE GetViewSettings (Var CurrentViewPort: ViewPortType; TextMode: Boolean);
 PROCEDURE GetViewSettings (Var CurrentViewPort: ViewPortType; TextMode: Boolean);
-{$IFDEF OS_DOS} VAR Ts: Graph.ViewPortType;{$ENDIF}   { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW} VAR Ts: Graph.ViewPortType;{$ENDIF}   { DOS/DPMI CODE }
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then CurrentViewPort := ViewPort       { Textmode viewport }
    If TextMode Then CurrentViewPort := ViewPort       { Textmode viewport }
      Else Begin
      Else Begin
        Graph.GetViewSettings(Ts);                     { Get graph settings }
        Graph.GetViewSettings(Ts);                     { Get graph settings }
@@ -310,7 +310,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE SetViewPort (X1, Y1, X2, Y2: Integer; Clip, TextMode: Boolean);
 PROCEDURE SetViewPort (X1, Y1, X2, Y2: Integer; Clip, TextMode: Boolean);
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If (TextMode = TRUE) Then Begin                    { TEXT MODE GFV }
    If (TextMode = TRUE) Then Begin                    { TEXT MODE GFV }
    {$ENDIF}
    {$ENDIF}
      If (X1 < 0) Then X1 := 0;                        { X1 negative fix }
      If (X1 < 0) Then X1 := 0;                        { X1 negative fix }
@@ -332,7 +332,7 @@ BEGIN
      ViewPort.Clip := Clip;                           { Set port clip value }
      ViewPort.Clip := Clip;                           { Set port clip value }
      Cxp := X1;                                       { Set current x pos }
      Cxp := X1;                                       { Set current x pos }
      Cyp := Y1;                                       { Set current y pos }
      Cyp := Y1;                                       { Set current y pos }
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    End Else Begin                                     { GRAPHICS MODE GFV }
    End Else Begin                                     { GRAPHICS MODE GFV }
      Graph.SetViewPort(X1, Y1, X2, Y2, Clip);         { Call graph proc }
      Graph.SetViewPort(X1, Y1, X2, Y2, Clip);         { Call graph proc }
    End;
    End;
@@ -348,7 +348,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 FUNCTION GetMaxX (TextMode: Boolean): Integer;
 FUNCTION GetMaxX (TextMode: Boolean): Integer;
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then GetMaxX := SysScreenWidth-1       { Screen width }
    If TextMode Then GetMaxX := SysScreenWidth-1       { Screen width }
      Else GetMaxX := Graph.GetMaxX;                   { Call graph func }
      Else GetMaxX := Graph.GetMaxX;                   { Call graph func }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -361,7 +361,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 FUNCTION GetMaxY (TextMode: Boolean): Integer;
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    If TextMode Then GetMaxY := SysScreenHeight-1      { Screen height }
    If TextMode Then GetMaxY := SysScreenHeight-1      { Screen height }
      Else GetMaxY := Graph.GetMaxY;                   { Call graph func }
      Else GetMaxY := Graph.GetMaxY;                   { Call graph func }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
    {$ELSE}                                            { WIN/NT/OS2 CODE }
@@ -369,7 +369,7 @@ BEGIN
    {$ENDIF}
    {$ENDIF}
 END;
 END;
 
 
-{$IFDEF OS_DOS}                                       { DOS/DPMI CODE }
+{$IFDEF NO_WINDOW}                                       { DOS/DPMI CODE }
 PROCEDURE SetColor(Color: Word);
 PROCEDURE SetColor(Color: Word);
 BEGIN
 BEGIN
    Graph.SetColor(Color);                             { Call graph proc }
    Graph.SetColor(Color);                             { Call graph proc }
@@ -404,7 +404,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.4  2001-04-10 21:57:55  pierre
+ Revision 1.5  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.4  2001/04/10 21:57:55  pierre
   + first adds for Use_API define
   + first adds for Use_API define
 
 
  Revision 1.3  2001/04/10 21:29:55  pierre
  Revision 1.3  2001/04/10 21:29:55  pierre

+ 11 - 1
fvision/menus.pas

@@ -1048,6 +1048,8 @@ BEGIN
    Inherited Init(R);                                 { Call ancestor }
    Inherited Init(R);                                 { Call ancestor }
    State := State OR sfShadow;                        { Set shadow state }
    State := State OR sfShadow;                        { Set shadow state }
    Options := Options OR ofPreProcess;                { View pre processes }
    Options := Options OR ofPreProcess;                { View pre processes }
+   if TextModeGFV then
+     Options := Options OR ofFramed;
    Menu := AMenu;                                     { Hold menu }
    Menu := AMenu;                                     { Hold menu }
    ParentMenu := AParentMenu;                         { Hold parent }
    ParentMenu := AParentMenu;                         { Hold parent }
 END;
 END;
@@ -1090,6 +1092,11 @@ BEGIN
                DarkGray, False);                      { Draw higlight box }
                DarkGray, False);                      { Draw higlight box }
            End;
            End;
          End;
          End;
+       End Else Begin { no text NewLine }
+         MoveChar(B, 'Ã', Color, 1);
+         MoveChar(B[1], 'Ä', Color, Size.X-2);
+         MoveChar(B[Size.X-1], '´', Color, 1);
+         WriteBuf(0, Y, Size.X, 1, B);                { Write the line }
        End;
        End;
        Inc(Y);                                        { Next line down }
        Inc(Y);                                        { Next line down }
        P := P^.Next;                                  { fetch next item }
        P := P^.Next;                                  { fetch next item }
@@ -1676,7 +1683,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.5  2001-05-04 10:46:02  pierre
+ Revision 1.6  2001-05-04 15:43:45  pierre
+  * several more fixes
+
+ Revision 1.5  2001/05/04 10:46:02  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.4  2001/04/10 21:57:55  pierre
  Revision 1.4  2001/04/10 21:57:55  pierre

+ 30 - 3
fvision/testapp.pas

@@ -36,6 +36,9 @@ PROGRAM TestApp;
   USES
   USES
      {$IFDEF OS_OS2} Os2Def, os2PmApi,  {$ENDIF}
      {$IFDEF OS_OS2} Os2Def, os2PmApi,  {$ENDIF}
      Objects, Drivers, Views, Menus, Dialogs, App,             { Standard GFV units }
      Objects, Drivers, Views, Menus, Dialogs, App,             { Standard GFV units }
+     {$ifdef TEST}
+     AsciiTab,
+     {$endif TEST}
      Gadgets;
      Gadgets;
 
 
 
 
@@ -43,6 +46,7 @@ CONST cmAppToolbar = 1000;
       cmWindow1    = 1001;
       cmWindow1    = 1001;
       cmWindow2    = 1002;
       cmWindow2    = 1002;
       cmWindow3    = 1003;
       cmWindow3    = 1003;
+      cmAscii      = 1010;
       cmCloseWindow1    = 1101;
       cmCloseWindow1    = 1101;
       cmCloseWindow2    = 1102;
       cmCloseWindow2    = 1102;
       cmCloseWindow3    = 1103;
       cmCloseWindow3    = 1103;
@@ -56,6 +60,9 @@ TYPE
         Clock: PClockView;
         Clock: PClockView;
         Heap: PHeapView;
         Heap: PHeapView;
         P1,P2,P3 : PGroup;
         P1,P2,P3 : PGroup;
+     {$ifdef TEST}
+        ASCIIChart : PAsciiChart;
+     {$endif TEST}
       CONSTRUCTOR Init;
       CONSTRUCTOR Init;
       PROCEDURE Idle; Virtual;
       PROCEDURE Idle; Virtual;
       PROCEDURE HandleEvent(var Event : TEvent);virtual;
       PROCEDURE HandleEvent(var Event : TEvent);virtual;
@@ -64,6 +71,7 @@ TYPE
       PROCEDURE Window1;
       PROCEDURE Window1;
       PROCEDURE Window2;
       PROCEDURE Window2;
       PROCEDURE Window3;
       PROCEDURE Window3;
+      PROCEDURE AsciiWindow;
       PROCEDURE CloseWindow(var P : PGroup);
       PROCEDURE CloseWindow(var P : PGroup);
     End;
     End;
 
 
@@ -115,6 +123,7 @@ BEGIN
        cmWindow1 : Window1;
        cmWindow1 : Window1;
        cmWindow2 : Window2;
        cmWindow2 : Window2;
        cmWindow3 : Window3;
        cmWindow3 : Window3;
+       cmAscii   : AsciiWindow;
        cmCloseWindow1 : CloseWindow(P1);
        cmCloseWindow1 : CloseWindow(P1);
        cmCloseWindow2 : CloseWindow(P2);
        cmCloseWindow2 : CloseWindow(P2);
        cmCloseWindow3 : CloseWindow(P3);
        cmCloseWindow3 : CloseWindow(P3);
@@ -138,13 +147,14 @@ BEGIN
     NewSubMenu('~E~dit', 0, NewMenu(
     NewSubMenu('~E~dit', 0, NewMenu(
       StdEditMenuItems(Nil)),                         { Standard edit menu }
       StdEditMenuItems(Nil)),                         { Standard edit menu }
     NewSubMenu('~T~est', 0, NewMenu(
     NewSubMenu('~T~est', 0, NewMenu(
+      NewItem('Ascii Chart','',kbNoKey,cmAscii,hcNoContext,
       NewItem('Window 1','',kbNoKey,cmWindow1,hcNoContext,
       NewItem('Window 1','',kbNoKey,cmWindow1,hcNoContext,
       NewItem('Window 2','',kbNoKey,cmWindow2,hcNoContext,
       NewItem('Window 2','',kbNoKey,cmWindow2,hcNoContext,
       NewItem('Window 3','',kbNoKey,cmWindow3,hcNoContext,
       NewItem('Window 3','',kbNoKey,cmWindow3,hcNoContext,
       NewItem('Close Window 1','',kbNoKey,cmCloseWindow1,hcNoContext,
       NewItem('Close Window 1','',kbNoKey,cmCloseWindow1,hcNoContext,
       NewItem('Close Window 2','',kbNoKey,cmCloseWindow2,hcNoContext,
       NewItem('Close Window 2','',kbNoKey,cmCloseWindow2,hcNoContext,
       NewItem('Close Window 3','',kbNoKey,cmCloseWindow3,hcNoContext,
       NewItem('Close Window 3','',kbNoKey,cmCloseWindow3,hcNoContext,
-      Nil))))))),                         { Standard edit menu }
+      Nil)))))))),
     NewSubMenu('~W~indow', 0, NewMenu(
     NewSubMenu('~W~indow', 0, NewMenu(
       StdWindowMenuItems(Nil)), Nil)))))));            { Standard window  menu }
       StdWindowMenuItems(Nil)), Nil)))))));            { Standard window  menu }
 END;
 END;
@@ -185,7 +195,7 @@ BEGIN
    R.Assign(5, 1, 35, 16);                            { Assign area }
    R.Assign(5, 1, 35, 16);                            { Assign area }
    P := New(PWindow, Init(R, 'TEST WINDOW 1', 1));    { Create a window }
    P := New(PWindow, Init(R, 'TEST WINDOW 1', 1));    { Create a window }
    If (P <> Nil) Then Begin                           { Window valid }
    If (P <> Nil) Then Begin                           { Window valid }
-     R.Assign(5, 5, 20, 7);                           { Assign area }
+     R.Assign(5, 5, 20, 6);                           { Assign area }
      P^.Insert(New(PInputLine, Init(R, 30)));
      P^.Insert(New(PInputLine, Init(R, 30)));
      R.Assign(5, 8, 20, 9);                           { Assign area }
      R.Assign(5, 8, 20, 9);                           { Assign area }
      P^.Insert(New(PRadioButtons, Init(R,
      P^.Insert(New(PRadioButtons, Init(R,
@@ -199,6 +209,20 @@ BEGIN
    P1:=P;
    P1:=P;
 END;
 END;
 
 
+PROCEDURE TTvDemo.AsciiWindow;
+begin
+{$ifdef TEST}
+  if ASCIIChart=nil then
+    begin
+      New(ASCIIChart, Init);
+      Desktop^.Insert(ASCIIChart);
+    end
+  else
+    ASCIIChart^.Focus;
+{$endif TEST}
+end;
+
+
 PROCEDURE TTvDemo.CloseWindow(var P : PGroup);
 PROCEDURE TTvDemo.CloseWindow(var P : PGroup);
 BEGIN
 BEGIN
   If Assigned(P) then
   If Assigned(P) then
@@ -308,7 +332,10 @@ END.
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.4  2001-05-04 10:46:02  pierre
+ Revision 1.5  2001-05-04 15:43:46  pierre
+  * several more fixes
+
+ Revision 1.4  2001/05/04 10:46:02  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.3  2001/05/04 08:42:55  pierre
  Revision 1.3  2001/05/04 08:42:55  pierre

+ 112 - 46
fvision/views.pas

@@ -2041,8 +2041,15 @@ END;
 {  DrawBorder -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 17May98 LdB        }
 {  DrawBorder -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 17May98 LdB        }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TView.DrawBorder;
 PROCEDURE TView.DrawBorder;
-BEGIN
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE ONLY }
+VAR I : sw_integer;
+    LeftUpCorner,
+    RightUpCorner,
+    HorizontalBar,
+    VerticalBar,
+    LeftLowCorner,
+    RightLowCorner : Char;
+BEGIN
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE ONLY }
    If (TextModeGFV = FALSE) Then Begin                { GRAPHICS GFV MODE }
    If (TextModeGFV = FALSE) Then Begin                { GRAPHICS GFV MODE }
      BiColorRectangle(0, 0, RawSize.X, RawSize.Y,
      BiColorRectangle(0, 0, RawSize.X, RawSize.Y,
        White, DarkGray, False);                       { Draw 3d effect }
        White, DarkGray, False);                       { Draw 3d effect }
@@ -2055,6 +2062,35 @@ BEGIN
          White, DarkGray, True);                      { Draw highlights }
          White, DarkGray, True);                      { Draw highlights }
      End;
      End;
    End Else Begin                                     { TEXT GFV MODE }
    End Else Begin                                     { TEXT GFV MODE }
+     If not Focus or (GOptions AND goThickFramed = 0) then
+       begin
+         LeftUpCorner:='Ú';
+         RightUpCorner:='¿';
+         HorizontalBar:='Ä';
+         VerticalBar:='³';
+         LeftLowCorner:='À';
+         RightLowCorner:='Ù';
+       end
+     else
+       begin
+         LeftUpCorner:='É';
+         RightUpCorner:='»';
+         HorizontalBar:='Í';
+         VerticalBar:='º';
+         LeftLowCorner:='È';
+         RightLowCorner:='¼';
+       end;
+     WriteChar(0,0,LeftUpCorner,1,1);
+     WriteChar(1,0,HorizontalBar,1,Size.X-2);
+     WriteChar(Size.X-1,0,RightUpcorner,1,1);
+     For i:=1 to Size.Y -1 do
+       begin
+         WriteChar(0,i,VerticalBar,1,1);
+         WriteChar(Size.X-1,i,VerticalBar,1,1);
+       end;
+     WriteChar(0,Size.Y-1,LeftLowCorner,1,1);
+     WriteChar(1,Size.Y-1,HorizontalBar,1,Size.X-2);
+     WriteChar(Size.X-1,Size.Y-1,RightLowCorner,1,1);
    End;
    End;
    {$ENDIF}
    {$ENDIF}
 END;
 END;
@@ -3578,8 +3614,12 @@ BEGIN
          ForEach(@DoSetState);                        { Set each subview }
          ForEach(@DoSetState);                        { Set each subview }
          UnLock;                                      { Unlock the view }
          UnLock;                                      { Unlock the view }
        End;
        End;
-     sfFocused: If (Current <> Nil) Then
-       Current^.SetState(sfFocused, Enable);          { Focus current view }
+     sfFocused: Begin
+         If (Current <> Nil) Then
+           Current^.SetState(sfFocused, Enable);          { Focus current view }
+         If TextModeGFV then
+           SetDrawMask(vdBackGnd OR vdFocus OR vdInner); { Set redraw masks }
+       End;
      sfExposed: Begin
      sfExposed: Begin
          ForEach(@DoExpose);                          { Expose each subview }
          ForEach(@DoExpose);                          { Expose each subview }
        End;
        End;
@@ -5294,9 +5334,9 @@ END;
 {  HandleEvent -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 11Aug99 LdB       }
 {  HandleEvent -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 11Aug99 LdB       }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 PROCEDURE TWindow.HandleEvent (Var Event: TEvent);
 PROCEDURE TWindow.HandleEvent (Var Event: TEvent);
-VAR {$IFDEF OS_DOS} I, J: Integer; {$ENDIF} Min, Max: TPoint; Limits: TRect;
+VAR {$IFDEF NO_WINDOW} I, J: Integer; {$ENDIF} Min, Max: TPoint; Limits: TRect;
 
 
-   {$IFDEF OS_DOS}                                    { DOS/DPMI CODE }
+   {$IFDEF NO_WINDOW}                                    { DOS/DPMI CODE }
    PROCEDURE DragWindow (Mode: Byte);
    PROCEDURE DragWindow (Mode: Byte);
    VAR Limits: TRect; Min, Max: TPoint;
    VAR Limits: TRect; Min, Max: TPoint;
    BEGIN
    BEGIN
@@ -5363,14 +5403,16 @@ BEGIN
          End;
          End;
        End;
        End;
      End;
      End;
-     {$IFDEF OS_DOS}                                  { DOS/DPMI CODE ONLY }
+     {$IFDEF NO_WINDOW}                               { DOS/DPMI CODE ONLY }
      evMouseDown:                                     { MOUSE DOWN EVENT }
      evMouseDown:                                     { MOUSE DOWN EVENT }
        If (GOptions AND goTitled <> 0) Then Begin     { Must have title area }
        If (GOptions AND goTitled <> 0) Then Begin     { Must have title area }
-         If (GOptions AND goThickFramed <> 0) Then
-           I := 5 Else                                { Thick frame adjust }
-           If (Options AND ofFramed <> 0) Then I := 1 { Frame adjust }
-             Else I := 0;                             { No frame size }
-         If (Event.Where.Y > (RawOrigin.Y + I)) AND
+         If TextModeGFV then
+           I:=0 Else
+           If (GOptions AND goThickFramed <> 0) Then
+             I := 5 Else                                { Thick frame adjust }
+             If (Options AND ofFramed <> 0) Then I := 1 { Frame adjust }
+               Else I := 0;                             { No frame size }
+         If (Event.Where.Y >= (RawOrigin.Y + I)) AND
          (Event.Where.Y < RawOrigin.Y+FontHeight+I)
          (Event.Where.Y < RawOrigin.Y+FontHeight+I)
          Then Begin                                   { Within top line }
          Then Begin                                   { Within top line }
            If (Current <> Nil) AND
            If (Current <> Nil) AND
@@ -5378,9 +5420,9 @@ BEGIN
              Then Current^.FocusFromTop Else
              Then Current^.FocusFromTop Else
              FocusFromTop;
              FocusFromTop;
            If (Flags AND wfClose <> 0) Then Begin     { Has close icon }
            If (Flags AND wfClose <> 0) Then Begin     { Has close icon }
-             J := I + FontWidth;                      { Set X value }
-             If (Event.Where.X > RawOrigin.X+J) AND
-             (Event.Where.X < RawOrigin.X+J+2*FontWidth)
+             J := I + 2*FontWidth;                      { Set X value }
+             If (Event.Where.X >= RawOrigin.X+J) AND
+             (Event.Where.X < RawOrigin.X+J+3*FontWidth)
              Then Begin                               { In close area }
              Then Begin                               { In close area }
                Event.What := evCommand;               { Command event }
                Event.What := evCommand;               { Command event }
                Event.Command := cmClose;              { Close command }
                Event.Command := cmClose;              { Close command }
@@ -5640,8 +5682,8 @@ BEGIN
    Begin                                     { TEXT MODE GFV }
    Begin                                     { TEXT MODE GFV }
      X1 := (RawOrigin.X+X1) DIV SysFontWidth;
      X1 := (RawOrigin.X+X1) DIV SysFontWidth;
      Y1 := (RawOrigin.Y+Y1) DIV SysFontHeight;
      Y1 := (RawOrigin.Y+Y1) DIV SysFontHeight;
-     X2 := (RawOrigin.X+X2) DIV SysFontWidth;
-     Y2 := (RawOrigin.Y+Y2) DIV SysFontHeight;
+     X2 := (RawOrigin.X+X2-1) DIV SysFontWidth;
+     Y2 := (RawOrigin.Y+Y2-1) DIV SysFontHeight;
      For Y := Y1 To Y2 Do
      For Y := Y1 To Y2 Do
        For X := X1 To X2 Do Begin
        For X := X1 To X2 Do Begin
          VideoBuf^[(Y*Drivers.ScreenWidth+X)] := (Colour shl 12) or $20;
          VideoBuf^[(Y*Drivers.ScreenWidth+X)] := (Colour shl 12) or $20;
@@ -6228,18 +6270,24 @@ BEGIN
      Bc := Col AND $F0 SHR 4;                         { Background colour }
      Bc := Col AND $F0 SHR 4;                         { Background colour }
      FillChar(S[1], 255, C);                          { Fill the string }
      FillChar(S[1], 255, C);                          { Fill the string }
      If (X >= 0) AND (Y >= 0) AND ((GOptions and (goGraphical or goGraphView))=0) Then Begin
      If (X >= 0) AND (Y >= 0) AND ((GOptions and (goGraphical or goGraphView))=0) Then Begin
-       X := RawOrigin.X+X*FontWidth;                    { X position }
-       Y := RawOrigin.Y+Y*FontHeight;                   { Y position }
+       X := RawOrigin.X+X*SysFontWidth;                    { X position }
+       Y := RawOrigin.Y+Y*SysFontHeight;                   { Y position }
      End Else Begin
      End Else Begin
        X := RawOrigin.X + Abs(X);
        X := RawOrigin.X + Abs(X);
        Y := RawOrigin.Y + Abs(Y);
        Y := RawOrigin.Y + Abs(Y);
      End;
      End;
        Tix := X DIV SysFontWidth;
        Tix := X DIV SysFontWidth;
        Tiy := Y DIV SysFontHeight;
        Tiy := Y DIV SysFontHeight;
+     While (Count>0) Do Begin
+       If (Count>255) Then I := 255 Else I := Count;  { Size to make }
+       S[0] := Chr(I);                                { Set string length }
        For Ti := 1 To length(S) Do Begin
        For Ti := 1 To length(S) Do Begin
          VideoBuf^[((Tiy * Drivers.ScreenWidth)+Tix)] := (GetColor(Color) shl 8) or Ord(S[Ti]);
          VideoBuf^[((Tiy * Drivers.ScreenWidth)+Tix)] := (GetColor(Color) shl 8) or Ord(S[Ti]);
-         Tix := Tix + SysFontWidth;
+         Inc(Tix);
        end;
        end;
+       Count := Count - I;                            { Subtract count }
+       X := X + I;                                    { Move x position }
+     End;
        UpdateScreen(false);
        UpdateScreen(false);
      {$ELSE not Use_API}
      {$ELSE not Use_API}
    {$IFDEF OS_DOS}
    {$IFDEF OS_DOS}
@@ -6341,7 +6389,8 @@ BEGIN
      Op2.X := RawOrigin.X+RawSize.X;                  { Right side x value }
      Op2.X := RawOrigin.X+RawSize.X;                  { Right side x value }
      Op2.Y := RawOrigin.Y+RawSize.Y;                  { Right side y value }
      Op2.Y := RawOrigin.Y+RawSize.Y;                  { Right side y value }
      PState := State;                                 { Hold current state }
      PState := State;                                 { Hold current state }
-     State := State AND NOT sfVisible;                { Temp not visible }
+     if not TextModeGFV then
+       State := State AND NOT sfVisible;                { Temp not visible }
      {$IFDEF OS_DOS}                                  { DOS/DPMI CODE }
      {$IFDEF OS_DOS}                                  { DOS/DPMI CODE }
      HideMouseCursor;                                 { Hide the mouse }
      HideMouseCursor;                                 { Hide the mouse }
      {$ENDIF}
      {$ENDIF}
@@ -6372,13 +6421,20 @@ BEGIN
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        HideMouseCursor;                               { Hide the mouse }
        HideMouseCursor;                               { Hide the mouse }
        {$ENDIF}
        {$ENDIF}
-       SetWriteMode(XORPut, TextModeGFV);
-       GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
-       SetWriteMode(NormalPut, TextModeGFV);
-       MoveGrow(R, Mouse);                            { Resize the view }
-       SetWriteMode(XORPut, TextModeGFV);
-       GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
-       SetWriteMode(NormalPut, TextModeGFV);
+       if not TextModeGFV then
+         begin
+           SetWriteMode(XORPut, TextModeGFV);
+           GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
+           SetWriteMode(NormalPut, TextModeGFV);
+           MoveGrow(R, Mouse);                            { Resize the view }
+           SetWriteMode(XORPut, TextModeGFV);
+           GraphRectangle(0, 0, RawSize.X, RawSize.Y, Red);
+           SetWriteMode(NormalPut, TextModeGFV);
+         end
+       else
+         begin
+           MoveGrow(R, Mouse);                            { Resize the view }
+         end;
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        {$IFDEF OS_DOS}                                { DOS/DPMI CODE }
        ShowMouseCursor;                               { Show the mouse }
        ShowMouseCursor;                               { Show the mouse }
        {$ENDIF}
        {$ENDIF}
@@ -6413,10 +6469,6 @@ BEGIN
    SetState(sfDragging, False);                       { Clr dragging flag }
    SetState(sfDragging, False);                       { Clr dragging flag }
 END;
 END;
 
 
-
-
-
-
 FUNCTION TView.FontWidth: Integer;
 FUNCTION TView.FontWidth: Integer;
 BEGIN
 BEGIN
    FontWidth := SysFontWidth;
    FontWidth := SysFontWidth;
@@ -6685,26 +6737,32 @@ BEGIN
 END;
 END;
 
 
 PROCEDURE TWindow.DrawBorder;
 PROCEDURE TWindow.DrawBorder;
-{$IFDEF OS_DOS} VAR Fc, Bc: Byte; X, Y: Integer; S: String;
+{$IFDEF NO_WINDOW} VAR Fc, Bc: Byte; X, Y: Integer; S: String;
 ViewPort: ViewPortType; {$ENDIF}
 ViewPort: ViewPortType; {$ENDIF}
 BEGIN
 BEGIN
-   {$IFDEF OS_DOS}
+   {$IFDEF NO_WINDOW}
    Fc := GetColor(2) AND $0F;                        { Foreground colour }
    Fc := GetColor(2) AND $0F;                        { Foreground colour }
-   Bc := 9;                                           { Background colour }
-   If (Options AND ofFramed<>0) Then Y := 1
-     Else Y := 0;                                     { Initial value }
-   If (GOptions AND goThickFramed<>0) Then Inc(Y, 3); { Adjust position }
+   Bc := (GetColor(2) AND $70) SHR 4;                { Background colour }
+   If TextModeGFV then
+     Y:=0 else
+     begin
+       If (Options AND ofFramed<>0) Then Y := 1
+         Else Y := 0;                                     { Initial value }
+       If (GOptions AND goThickFramed<>0) Then Inc(Y, 3); { Adjust position }
+     end;
    ClearArea(0, Y, RawSize.X, Y+FontHeight, Bc);      { Clear background }
    ClearArea(0, Y, RawSize.X, Y+FontHeight, Bc);      { Clear background }
+   Inherited DrawBorder;
    If (Title<>Nil) AND (GOptions AND goTitled<>0)
    If (Title<>Nil) AND (GOptions AND goTitled<>0)
    Then Begin                                         { View has a title }
    Then Begin                                         { View has a title }
      GetViewSettings(ViewPort, TextModeGFV);
      GetViewSettings(ViewPort, TextModeGFV);
      X := (RawSize.X DIV 2);                          { Half way point }
      X := (RawSize.X DIV 2);                          { Half way point }
-     X := X - (Length(Title^)*FontWidth) DIV 2;       { Calc start point }
+     X := X - ((Length(Title^)+2)*FontWidth) DIV 2;       { Calc start point }
      If (TextModeGFV <> TRUE) Then Begin              { GRAPHICS MODE GFV }
      If (TextModeGFV <> TRUE) Then Begin              { GRAPHICS MODE GFV }
        SetColor(Fc);
        SetColor(Fc);
        OutTextXY(RawOrigin.X+X-ViewPort.X1,
        OutTextXY(RawOrigin.X+X-ViewPort.X1,
-         RawOrigin.Y+Y+1-ViewPort.Y1+2, Title^);      { Write the title }
+         RawOrigin.Y+Y+1-ViewPort.Y1+2, ' '+Title^+' ');      { Write the title }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(X div SysFontWidth,0,' '+Title^+' ',2);
      End;
      End;
    End;
    End;
    If (Number>0) AND (Number<10) Then Begin           { Valid number }
    If (Number>0) AND (Number<10) Then Begin           { Valid number }
@@ -6714,6 +6772,7 @@ BEGIN
        OutTextXY(RawOrigin.X+RawSize.X-2*FontWidth-ViewPort.X1,
        OutTextXY(RawOrigin.X+RawSize.X-2*FontWidth-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, S);           { Write number }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, S);           { Write number }
      End Else Begin                                   { LEON ????? }
      End Else Begin                                   { LEON ????? }
+       WriteStr(Size.X-5,0,S,2);
      End;
      End;
    End;
    End;
    If (Flags AND wfClose<>0) Then Begin               { Close icon request }
    If (Flags AND wfClose<>0) Then Begin               { Close icon request }
@@ -6722,6 +6781,7 @@ BEGIN
        OutTextXY(RawOrigin.X+Y+FontWidth-ViewPort.X1,
        OutTextXY(RawOrigin.X+Y+FontWidth-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '[*]');       { Write close icon }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '[*]');       { Write close icon }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(2,0,'[*]',2);
      End;
      End;
    End;
    End;
    If (Flags AND wfZoom<>0) Then Begin
    If (Flags AND wfZoom<>0) Then Begin
@@ -6730,13 +6790,16 @@ BEGIN
        OutTextXY(RawOrigin.X+RawSize.X-4*FontWidth-Y-ViewPort.X1,
        OutTextXY(RawOrigin.X+RawSize.X-4*FontWidth-Y-ViewPort.X1,
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '['+#24+']'); { Write zoom icon }
          RawOrigin.Y+Y+1-ViewPort.Y1+2, '['+#24+']'); { Write zoom icon }
      End Else Begin                                   { LEON??? }
      End Else Begin                                   { LEON??? }
+       WriteStr(Size.X-5,0,'['+#24+']',2);
      End;
      End;
    End;
    End;
-   BiColorRectangle(Y+1, Y+1, RawSize.X-Y-1, Y+FontHeight,
-     White, DarkGray, False);                         { Draw 3d effect }
-   BiColorRectangle(Y+1, Y+1, RawSize.X-Y-2, Y+FontHeight-1,
-     White, DarkGray, False);                         { Draw 3d effect }
-   Inherited DrawBorder;
+   If not TextModeGFV then
+     begin
+       BiColorRectangle(Y+1, Y+1, RawSize.X-Y-1, Y+FontHeight,
+         White, DarkGray, False);                         { Draw 3d effect }
+       BiColorRectangle(Y+1, Y+1, RawSize.X-Y-2, Y+FontHeight-1,
+         White, DarkGray, False);                         { Draw 3d effect }
+     end;
    {$ENDIF}
    {$ENDIF}
 END;
 END;
 
 
@@ -6831,7 +6894,10 @@ END.
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.7  2001-05-04 10:46:03  pierre
+ Revision 1.8  2001-05-04 15:43:46  pierre
+  * several more fixes
+
+ Revision 1.7  2001/05/04 10:46:03  pierre
   * various fixes  for win32 api mode
   * various fixes  for win32 api mode
 
 
  Revision 1.6  2001/05/04 08:42:56  pierre
  Revision 1.6  2001/05/04 08:42:56  pierre