home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TPASCAL3.ZIP / TVDEMOS.ZIP / MOUSEDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-11  |  4KB  |  159 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Pascal 6.0                             }
  4. {   Turbo Vision Demo                            }
  5. {   Copyright (c) 1990 by Borland International  }
  6. {                                                }
  7. {************************************************}
  8.  
  9. { Mouse option dialog used by TVDEMO.PAS and TVRDEMO.PAS }
  10.  
  11. unit MouseDlg;
  12.  
  13. {$F+,O+,X+,S-,D-}
  14.  
  15. interface
  16.  
  17. uses Drivers, Objects, Views, Dialogs;
  18.  
  19. const
  20.   CClickTester = #7#8;
  21.  
  22. type
  23.  
  24.   { TClickTester }
  25.  
  26.   {Palette layout}
  27.   { 0 = Unclicked }
  28.   { 1 = Clicked }
  29.  
  30.   PClickTester = ^TClickTester;
  31.   TClickTester = object(TStaticText)
  32.     Clicked: Boolean;
  33.     constructor Init(var Bounds: TRect; AText: String);
  34.     function GetPalette: PPalette; virtual;
  35.     procedure HandleEvent(var Event: TEvent); virtual;
  36.     procedure Draw; virtual;
  37.   end;
  38.  
  39.   { TMouseDialog }
  40.  
  41.   PMouseDialog = ^TMouseDialog;
  42.   TMouseDialog = object(TDialog)
  43.     MouseScrollBar: PScrollBar;
  44.     OldDelay: Word;
  45.     constructor Init;
  46.     constructor Load(var S: TStream);
  47.     procedure HandleEvent(var Event: TEvent); virtual;
  48.     procedure Store(var S: TStream);
  49.   end;
  50.  
  51. implementation
  52.  
  53. { TClickTester }
  54.  
  55. constructor TClickTester.Init(var Bounds: TRect; AText: String);
  56. begin
  57.   TStaticText.Init(Bounds, AText);
  58.   Clicked := False;
  59. end;
  60.  
  61. function TClickTester.GetPalette: PPalette;
  62. const
  63.   P: String[Length(CClickTester)] = CClickTester;
  64. begin
  65.   GetPalette := @P;
  66. end;
  67.  
  68. procedure TClickTester.HandleEvent(var Event: TEvent);
  69. begin
  70.   TStaticText.HandleEvent(Event);
  71.   if (Event.What = evMouseDown) then
  72.   begin
  73.     if Event.Double then
  74.     begin
  75.       Clicked := not Clicked;
  76.       DrawView;
  77.     end;
  78.     ClearEvent(Event);
  79.   end;
  80. end;
  81.  
  82. procedure TClickTester.Draw;
  83. var
  84.   B: TDrawBuffer;
  85.   C: Byte;
  86. begin
  87.   if Clicked then C := GetColor(2)
  88.   else C := GetColor(1);
  89.   MoveChar(B, ' ', C, Size.X);
  90.   MoveStr(B, Text^, C);
  91.   WriteLine(0, 0, Size.X, 1, B);
  92. end;
  93.  
  94. { TMouseDialog }
  95.  
  96. constructor TMouseDialog.Init;
  97. var
  98.   R: TRect;
  99. begin
  100.   R.Assign(0, 0, 34, 12);
  101.   TDialog.Init(R, 'Mouse options');
  102.   Options := Options or ofCentered;
  103.  
  104.   R.Assign(3, 4, 30, 5);
  105.   MouseScrollBar := New(PScrollBar, Init(R));
  106.   MouseScrollBar^.SetParams(1, 1, 20, 20, 1);
  107.   MouseScrollBar^.Options := MouseScrollBar^.Options or ofSelectable;
  108.   MouseScrollBar^.SetValue(DoubleDelay);
  109.   Insert(MouseScrollBar);
  110.   R.Assign(2, 2, 21, 3);
  111.   Insert(New(PLabel, Init(R, '~M~ouse double click', MouseScrollBar)));
  112.  
  113.   R.Assign(3, 3, 30, 4);
  114.   Insert(New(PClickTester, Init(R, 'Fast       Medium      Slow')));
  115.  
  116.   R.Assign(3, 6, 30, 7);
  117.   Insert(New(PCheckBoxes, Init(R,
  118.     NewSItem('~R~everse mouse buttons', nil))));
  119.  
  120.   OldDelay := DoubleDelay;
  121.  
  122.   R.Assign(9, 9, 19, 11);
  123.   Insert(New(PButton, Init(R, 'O~K~', cmOk, bfDefault)));
  124.   Inc(R.A.X, 12); Inc(R.B.X, 12);
  125.   Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal)));
  126.  
  127.   SelectNext(False);
  128. end;
  129.  
  130. constructor TMouseDialog.Load(var S: TStream);
  131. begin
  132.   TDialog.Load(S);
  133.   GetSubViewPtr(S, MouseScrollBar);
  134.   MouseScrollBar^.SetValue(DoubleDelay);
  135. end;
  136.  
  137. procedure TMouseDialog.HandleEvent(var Event: TEvent);
  138. begin
  139.   TDialog.HandleEvent(Event);
  140.   case Event.What of
  141.     evCommand:
  142.       if Event.Command = cmCancel then DoubleDelay := OldDelay;
  143.     evBroadcast:
  144.       if Event.Command = cmScrollBarChanged then
  145.       begin
  146.         DoubleDelay := MouseScrollBar^.Value;
  147.         ClearEvent(Event);
  148.       end;
  149.   end;
  150. end;
  151.  
  152. procedure TMouseDialog.Store(var S: TStream);
  153. begin
  154.   TDialog.Store(S);
  155.   PutSubViewPtr(S, MouseScrollBar);
  156. end;
  157.  
  158. end.
  159.