Changeset 180 for trunk/Forms


Ignore:
Timestamp:
Feb 8, 2018, 5:32:31 PM (7 years ago)
Author:
chronos
Message:
  • Modified: Client related interface moved from FormMain to FormClient. This code change will later allow to implement network client-server gameplay.
  • Added: Allow to open other spectator client windows.
Location:
trunk/Forms
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormChat.pas

    r179 r180  
    4747    TextMessage.Text := EditMessage.Text;
    4848    Client.Send(cmdTextMessage, @TextMessage, nil);
     49    MemoChat.Lines.Add(Client.Name + ': ' + EditMessage.Text);
     50    EditMessage.Text := '';
    4951  end;
    50   MemoChat.Lines.Add(EditMessage.Text);
    51   EditMessage.Text := '';
    5252end;
    5353
  • trunk/Forms/UFormMain.lfm

    r170 r180  
    11object FormMain: TFormMain
    2   Left = 577
     2  Left = 447
    33  Height = 621
    4   Top = 309
     4  Top = 303
    55  Width = 775
    66  Caption = 'xTactics'
    77  ClientHeight = 596
    88  ClientWidth = 775
     9  DesignTimePPI = 120
    910  Menu = MainMenu1
    1011  OnClose = FormClose
    1112  OnCreate = FormCreate
    1213  OnDestroy = FormDestroy
    13   OnKeyUp = FormKeyUp
    1414  OnShow = FormShow
    15   LCLVersion = '1.6.4.0'
     15  LCLVersion = '1.8.0.6'
    1616  WindowState = wsMaximized
    17   object StatusBar1: TStatusBar
    18     Left = 0
    19     Height = 28
    20     Top = 568
    21     Width = 775
    22     Panels = <   
    23       item
    24         Width = 200
    25       end   
    26       item
    27         Width = 150
    28       end   
    29       item
    30         Width = 100
    31       end>
    32     SimplePanel = False
    33   end
    3417  object ToolBar1: TToolBar
    3518    Left = 0
    36     Height = 568
     19    Height = 40
    3720    Top = 0
    38     Width = 32
    39     Align = alLeft
     21    Width = 775
    4022    ButtonHeight = 32
    4123    ButtonWidth = 32
     
    4426    PopupMenu = PopupMenuToolbar
    4527    ShowHint = True
    46     TabOrder = 1
     28    TabOrder = 0
    4729    object ToolButton1: TToolButton
    4830      Left = 1
     
    5032      Action = Core.AGameNew
    5133    end
     34    object ToolButton3: TToolButton
     35      Left = 33
     36      Top = 2
     37      Action = Core.AGameEnd
     38    end
     39    object ToolButton4: TToolButton
     40      Left = 65
     41      Top = 2
     42      Action = Core.AGameRestart
     43    end
     44    object ToolButton5: TToolButton
     45      Left = 171
     46      Top = 2
     47      Action = Core.ASettings
     48    end
     49    object ToolButton9: TToolButton
     50      Left = 166
     51      Height = 32
     52      Top = 2
     53      Style = tbsDivider
     54    end
     55    object ToolButton11: TToolButton
     56      Left = 102
     57      Top = 2
     58      Action = Core.AGameLoad
     59    end
     60    object ToolButton12: TToolButton
     61      Left = 134
     62      Top = 2
     63      Action = Core.AGameSave
     64    end
     65    object ToolButton13: TToolButton
     66      Left = 203
     67      Top = 2
     68      Action = Core.AExit
     69    end
    5270    object ToolButton2: TToolButton
    53       Left = 1
    54       Top = 34
    55       Action = Core.AGameEndTurn
    56     end
    57     object ToolButton3: TToolButton
    58       Left = 1
    59       Top = 66
    60       Action = Core.AGameEnd
    61     end
    62     object ToolButton4: TToolButton
    63       Left = 1
    64       Top = 98
    65       Action = Core.AGameRestart
    66     end
    67     object ToolButton5: TToolButton
    68       Left = 1
    69       Top = 130
    70       Action = Core.ASettings
    71     end
    72     object ToolButton6: TToolButton
    73       Left = 1
    74       Top = 194
    75       Action = AZoomIn
    76     end
    77     object ToolButton7: TToolButton
    78       Left = 1
    79       Top = 226
    80       Action = AZoomOut
    81     end
    82     object ToolButton8: TToolButton
    83       Left = 1
    84       Top = 258
    85       Action = AZoomAll
    86     end
    87     object ToolButton9: TToolButton
    88       Left = 1
     71      Left = 97
    8972      Height = 32
    90       Top = 162
    91       Width = 32
    92       Style = tbsSeparator
    93     end
    94     object ToolButton10: TToolButton
    95       Left = 1
    96       Height = 32
    97       Top = 290
    98       Width = 32
    99       Style = tbsSeparator
    100     end
    101     object ToolButton11: TToolButton
    102       Left = 1
    103       Top = 322
    104       Action = Core.AGameLoad
    105     end
    106     object ToolButton12: TToolButton
    107       Left = 1
    108       Top = 354
    109       Action = Core.AGameSave
    110     end
    111     object ToolButton13: TToolButton
    112       Left = 1
    113       Top = 386
    114       Action = Core.AExit
    115     end
    116   end
    117   object PaintBox1: TPaintBox
    118     Left = 32
    119     Height = 568
    120     Top = 0
    121     Width = 743
     73      Top = 2
     74      Caption = 'ToolButton2'
     75      Style = tbsDivider
     76    end
     77  end
     78  object PanelMain: TPanel
     79    Left = 0
     80    Height = 556
     81    Top = 40
     82    Width = 775
    12283    Align = alClient
    123     OnMouseDown = PaintBox1MouseDown
    124     OnMouseLeave = PaintBox1MouseLeave
    125     OnMouseMove = PaintBox1MouseMove
    126     OnMouseUp = PaintBox1MouseUp
    127     OnMouseWheelDown = PaintBox1MouseWheelDown
    128     OnMouseWheelUp = PaintBox1MouseWheelUp
    129     OnPaint = PaintBox1Paint
    130     OnResize = PaintBox1Resize
     84    BevelOuter = bvNone
     85    TabOrder = 1
    13186  end
    13287  object MainMenu1: TMainMenu
     
    167122      Caption = 'View'
    168123      object MenuItem11: TMenuItem
    169         Action = AZoomAll
     124        Caption = 'Zoom all'
     125        ImageIndex = 7
     126        ShortCut = 16449
    170127      end
    171128      object MenuItem12: TMenuItem
    172         Action = AZoomIn
     129        Caption = 'Zoom in'
     130        ImageIndex = 8
     131        ShortCut = 16491
    173132      end
    174133      object MenuItem13: TMenuItem
    175         Action = AZoomOut
     134        Caption = 'Zoom out'
     135        ImageIndex = 9
     136        ShortCut = 16493
    176137      end
    177138      object MenuItem19: TMenuItem
     
    185146      end
    186147      object MenuItem22: TMenuItem
    187         Action = AStatusBarVisible
     148        Caption = 'Statusbar visible'
     149      end
     150      object MenuItem26: TMenuItem
     151        Caption = '-'
     152      end
     153      object MenuItem27: TMenuItem
     154        Action = Core.ANewSpectatorClient
    188155      end
    189156    end
     
    220187    left = 280
    221188    top = 152
    222     object AZoomIn: TAction
    223       Caption = 'Zoom in'
    224       ImageIndex = 8
    225       OnExecute = AZoomInExecute
    226       ShortCut = 16491
    227     end
    228     object AZoomOut: TAction
    229       Caption = 'Zoom out'
    230       ImageIndex = 9
    231       OnExecute = AZoomOutExecute
    232       ShortCut = 16493
    233     end
    234     object AZoomAll: TAction
    235       Caption = 'Zoom all'
    236       ImageIndex = 7
    237       OnExecute = AZoomAllExecute
    238       ShortCut = 16449
    239     end
    240189    object AToolBarBigIcons: TAction
    241190      Caption = 'Toolbar big icons'
     
    245194      Caption = 'Toolbar visible'
    246195      OnExecute = AToolBarVisibleExecute
    247     end
    248     object AStatusBarVisible: TAction
    249       Caption = 'Statusbar visible'
    250       OnExecute = AStatusBarVisibleExecute
    251196    end
    252197  end
  • trunk/Forms/UFormMain.pas

    r171 r180  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    9   UGame, LCLType, Menus, ActnList, ComCtrls, dateutils, XMLConf, DOM,
    10   UGeometry;
     9  UGame, LCLType, Menus, ActnList, ComCtrls, dateutils, XMLConf, DOM;
    1110
    1211const
     
    1918
    2019  TFormMain = class(TForm)
    21     AStatusBarVisible: TAction;
    2220    AToolBarVisible: TAction;
    2321    AToolBarBigIcons: TAction;
    24     AZoomIn: TAction;
    25     AZoomAll: TAction;
    26     AZoomOut: TAction;
    2722    ActionList1: TActionList;
    2823    MainMenu1: TMainMenu;
     
    4540    MenuItem24: TMenuItem;
    4641    MenuItem25: TMenuItem;
     42    MenuItem26: TMenuItem;
     43    MenuItem27: TMenuItem;
    4744    MenuItemLoadRecent: TMenuItem;
    4845    MenuItem3: TMenuItem;
     
    5350    MenuItem8: TMenuItem;
    5451    MenuItem9: TMenuItem;
    55     PaintBox1: TPaintBox;
     52    PanelMain: TPanel;
    5653    PopupMenuToolbar: TPopupMenu;
    57     StatusBar1: TStatusBar;
    5854    Timer1: TTimer;
    5955    ToolBar1: TToolBar;
    6056    ToolButton1: TToolButton;
    61     ToolButton10: TToolButton;
    6257    ToolButton11: TToolButton;
    6358    ToolButton12: TToolButton;
     
    6762    ToolButton4: TToolButton;
    6863    ToolButton5: TToolButton;
    69     ToolButton6: TToolButton;
    70     ToolButton7: TToolButton;
    71     ToolButton8: TToolButton;
    7264    ToolButton9: TToolButton;
    73     procedure AStatusBarVisibleExecute(Sender: TObject);
    7465    procedure AToolBarBigIconsExecute(Sender: TObject);
    7566    procedure AToolBarVisibleExecute(Sender: TObject);
    76     procedure AZoomAllExecute(Sender: TObject);
    77     procedure AZoomInExecute(Sender: TObject);
    78     procedure AZoomOutExecute(Sender: TObject);
    7967    procedure FormShow(Sender: TObject);
    8068    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    8169    procedure FormCreate(Sender: TObject);
    8270    procedure FormDestroy(Sender: TObject);
    83     procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    84     procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
    85       Shift: TShiftState; X, Y: Integer);
    86     procedure PaintBox1MouseLeave(Sender: TObject);
    87     procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
    88       Y: Integer);
    89     procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
    90       Shift: TShiftState; X, Y: Integer);
    91     procedure PaintBox1MouseWheelDown(Sender: TObject; Shift: TShiftState;
    92       MousePos: TPoint; var Handled: Boolean);
    93     procedure PaintBox1MouseWheelUp(Sender: TObject; Shift: TShiftState;
    94       MousePos: TPoint; var Handled: Boolean);
    95     procedure PaintBox1Paint(Sender: TObject);
    9671    procedure EraseBackground(DC: HDC); override;
    97     procedure PaintBox1Resize(Sender: TObject);
    9872    procedure Timer1Timer(Sender: TObject);
    9973  private
    100     TempBitmap: TBitmap;
    101     StartMousePoint: TPoint;
    102     StartViewPoint: TPoint;
    103     MoveActive: Boolean;
    104     RedrawPending: Boolean;
    105     Drawing: Boolean;
    106     DrawDuration: TDateTime;
    107     LastTimerTime: TDateTime;
    108     TimerPeriod: TDateTime;
    10974  public
    11075    procedure LoadConfig(Config: TXmlConfig; Path: string);
    11176    procedure SaveConfig(Config: TXmlConfig; Path: string);
    11277    procedure ReloadView;
    113     procedure Redraw;
    11478  end;
    11579
     
    12084
    12185uses
    122   UCore;
     86  UCore, UFormClient;
    12387
    12488resourcestring
     
    12993{ TFormMain }
    13094
    131 procedure TFormMain.PaintBox1Paint(Sender: TObject);
    132 var
    133   DrawStart: TDateTime;
    134 const
    135   BackgroundColor = $404040;
    136 begin
    137   DrawStart := Now;
    138   if Assigned(Core.CurrentClient) then
    139   with Core.CurrentClient do begin
    140     View.DestRect := TRect.CreateBounds(TPoint.Create(0, 0), TPoint.Create(PaintBox1.Width, PaintBox1.Height));
    141     if csOpaque in PaintBox1.ControlStyle then begin
    142       TempBitmap.SetSize(PaintBox1.Width, PaintBox1.Height);
    143       TempBitmap.Canvas.Brush.Color := BackGroundColor; //clBackground; //PaintBox1.GetColorResolvingParent;
    144       TempBitmap.Canvas.FillRect(0, 0, PaintBox1.Width, PaintBox1.Height);
    145       if Assigned(ControlPlayer) then ControlPlayer.Paint(TempBitmap.Canvas, View)
    146         else Core.Game.Map.Paint(TempBitmap.Canvas, View);
    147       PaintBox1.Canvas.Draw(0, 0, TempBitmap);
    148     end else begin
    149       {$ifdef WINDOWS}
    150       PaintBox1.Canvas.Brush.Color := BackgroundColor; //clBackground; //PaintBox1.GetColorResolvingParent;
    151       PaintBox1.Canvas.FillRect(0, 0, PaintBox1.Width, PaintBox1.Height);
    152       {$endif}
    153       if Assigned(ControlPlayer) then ControlPlayer.Paint(PaintBox1.Canvas, View)
    154         else Core.Game.Map.Paint(PaintBox1.Canvas, View);
    155     end;
    156   end;
    157   DrawDuration := (9 * DrawDuration + (Now - DrawStart)) / 10;
    158 end;
    159 
    16095procedure TFormMain.EraseBackground(DC: HDC);
    16196begin
    16297  // Do nothing, all background space covered by controls
    163 end;
    164 
    165 procedure TFormMain.PaintBox1Resize(Sender: TObject);
    166 begin
    167   if Assigned(Core.CurrentClient) then
    168   with Core.CurrentClient do
    169     View.DestRect := TRect.CreateBounds(TPoint.Create(0, 0), TPoint.Create(PaintBox1.Width, PaintBox1.Height));
    170   Redraw;
    17198end;
    17299
     
    175102  NewCaption: string;
    176103begin
    177   if RedrawPending and not Drawing then begin
    178     Drawing := True;
    179     if not Core.DevelMode then RedrawPending := False;
    180     TimerPeriod := (9 * TimerPeriod + (Now - LastTimerTime)) / 10;
    181     LastTimerTime := Now;
    182     PaintBox1.Repaint;
    183     StatusBar1.Panels[1].Text := IntToStr(Trunc(DrawDuration / OneMillisecond)) + ' / ' +
    184       IntToStr(Trunc(TimerPeriod / OneMillisecond)) + ' ms' +
    185       ' ' + IntToStr(Core.Game.Map.CellLinks.Count);
    186     NewCaption := 'xTactics';
    187     if Assigned(Core.Game.CurrentPlayer) then
    188       NewCaption := Core.Game.CurrentPlayer.Name + ' - ' + STurn + ' ' + IntToStr(Core.Game.TurnCounter) + ' - ' + NewCaption;
    189     Caption := NewCaption;
    190     Drawing := False;
    191   end;
     104  NewCaption := 'xTactics';
     105  if Assigned(Core.Game.CurrentPlayer) then
     106    NewCaption := Core.Game.CurrentPlayer.Name + ' - ' + STurn + ' ' + IntToStr(Core.Game.TurnCounter) + ' - ' + NewCaption;
     107  Caption := NewCaption;
    192108end;
    193109
     
    197113    AToolBarBigIcons.Checked := GetValue(DOMString(Path + '/LargeIcons'), False);
    198114    AToolBarVisible.Checked := GetValue(DOMString(Path + '/ToolBarVisible'), True);
    199     AStatusBarVisible.Checked := GetValue(DOMString(Path + '/StatusBarVisible'), False);
    200115  end;
    201116end;
     
    206121    SetValue(DOMString(Path + '/LargeIcons'), AToolBarBigIcons.Checked);
    207122    SetValue(DOMString(Path + '/ToolBarVisible'), AToolBarVisible.Checked);
    208     SetValue(DOMString(Path + '/StatusBarVisible'), AStatusBarVisible.Checked);
    209123  end;
    210124end;
     
    226140  end;
    227141  ToolBar1.Visible := AToolBarVisible.Checked;
    228   StatusBar1.Visible := AStatusBarVisible.Checked;
    229 end;
    230 
    231 procedure TFormMain.Redraw;
    232 begin
    233   RedrawPending := True;
    234142end;
    235143
    236144procedure TFormMain.FormCreate(Sender: TObject);
    237145begin
    238   {$IFDEF Linux}
    239   //PaintBox1.ControlStyle := PaintBox1.ControlStyle + [csOpaque];
    240   {$ENDIF}
    241   //DoubleBuffered := True;
    242   TempBitmap := TBitmap.Create;
    243   TimerPeriod := 0;
    244   LastTimerTime := Now;
    245 end;
    246 
    247 procedure TFormMain.AZoomAllExecute(Sender: TObject);
    248 var
    249   Factor: TPointF;
    250   MapRect: TRect;
    251   NewZoom: Single;
    252 begin
    253   with Core, Game, CurrentClient, View do begin
    254     MapRect := Map.CalculatePixelRect;
    255     Factor := TPointF.Create(DestRect.Size.X / MapRect.Size.X,
    256       DestRect.Size.Y / MapRect.Size.Y);
    257     if Factor.X < Factor.Y then NewZoom := Factor.X
    258       else NewZoom := Factor.Y;
    259     if NewZoom = 0 then NewZoom := 1;
    260     Zoom := NewZoom;
    261     CenterMap;
    262   end;
    263   Redraw;
     146  FormClient := TFormClient.Create(nil);
     147  FormClient.ManualDock(PanelMain, nil, alClient);
     148  FormClient.Align := alClient;
     149  FormClient.Show;
    264150end;
    265151
     
    270156end;
    271157
    272 procedure TFormMain.AStatusBarVisibleExecute(Sender: TObject);
    273 begin
    274   AStatusBarVisible.Checked := not AStatusBarVisible.Checked;
    275   ReloadView;
    276 end;
    277 
    278158procedure TFormMain.AToolBarVisibleExecute(Sender: TObject);
    279159begin
    280160  AToolBarVisible.Checked := not AToolBarVisible.Checked;
    281161  ReloadView;
    282 end;
    283 
    284 procedure TFormMain.AZoomInExecute(Sender: TObject);
    285 begin
    286   with Core.CurrentClient do begin
    287     View.Zoom := View.Zoom * ZoomFactor;
    288   end;
    289   Redraw;
    290 end;
    291 
    292 procedure TFormMain.AZoomOutExecute(Sender: TObject);
    293 //var
    294 //  D: TPoint;
    295 begin
    296   with Core.CurrentClient do begin
    297     //D := Point(Trunc(MousePos.X - View.Left / ViewZoom),
    298     //  Trunc(MousePos.Y - View.Top / ViewZoom));
    299     View.Zoom := View.Zoom / ZoomFactor;
    300     //View := Bounds(Trunc((D.X - MousePos.X) * ViewZoom),
    301     //  Trunc((D.Y - MousePos.Y) * ViewZoom),
    302     //  View.Right - View.Left,
    303     //  View.Bottom - View.Top);
    304   end;
    305   Redraw;
    306162end;
    307163
     
    316172procedure TFormMain.FormDestroy(Sender: TObject);
    317173begin
    318   TempBitmap.Free;
    319 end;
    320 
    321 procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
    322   );
    323 begin
    324   if (Key = 27) or (Key = 17) then
    325   if Assigned(Core.Game.CurrentPlayer) then begin
    326     Core.CurrentClient.View.SelectedCell := nil;
    327     Redraw;
    328   end;
     174  FormClient.Free;
    329175end;
    330176
     
    335181  Core.PersistentForm.Load(Self, wsMaximized);
    336182  ReloadView;
    337   Redraw;
    338 end;
    339 
    340 procedure TFormMain.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
    341   Shift: TShiftState; X, Y: Integer);
    342 begin
    343   if Button = mbLeft then begin
    344     if Assigned(Core.CurrentClient) then begin
    345       StartMousePoint := TPoint.Create(X, Y);
    346       StartViewPoint := Core.CurrentClient.View.SourceRect.P1;
    347       MoveActive := True;
    348     end;
    349   end;
    350 end;
    351 
    352 procedure TFormMain.PaintBox1MouseLeave(Sender: TObject);
    353 begin
    354   MoveActive := False;
    355 end;
    356 
    357 procedure TFormMain.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
    358   Y: Integer);
    359 var
    360   Cell: TCell;
    361   OldCell: TCell;
    362   CellPos: TPoint;
    363 begin
    364   if Assigned(Core.CurrentClient) then begin
    365     if MoveActive then
    366     if (Abs(StartMousePoint.X - X) > Trunc(Screen.PixelsPerInch * MouseMinDiff)) or
    367     (Abs(StartMousePoint.Y - Y) > Trunc(Screen.PixelsPerInch * MouseMinDiff)) then
    368     with Core.Game.CurrentPlayer, Core.CurrentClient do begin
    369       View.SourceRect := TRect.CreateBounds(TPoint.Create(Trunc(StartViewPoint.X + (StartMousePoint.X - X) / View.Zoom),
    370         Trunc(StartViewPoint.Y + (StartMousePoint.Y - Y) / View.Zoom)),
    371         View.SourceRect.Size);
    372       Redraw;
    373     end;
    374     Cell := nil;
    375     OldCell := Core.CurrentClient.View.FocusedCell;
    376     with Core.Game do
    377       Cell := Map.PosToCell(Core.CurrentClient.View.CanvasToCellPos(TPoint.Create(X, Y)), Core.CurrentClient.View );
    378     if Assigned(Cell) then begin
    379       Core.CurrentClient.View.FocusedCell := Cell;
    380       StatusBar1.Panels[0].Text := '[' + IntToStr(Cell.PosPx.X) + ', ' + IntToStr(Cell.PosPx.Y) +
    381         '] (' + IntToStr(Cell.MovesFrom.Count) + ', ' + IntToStr(Cell.MovesTo.Count) + ')';
    382     end else begin
    383       Core.CurrentClient.View.FocusedCell := nil;
    384       StatusBar1.Panels[0].Text := '';
    385     end;
    386     CellPos := Core.CurrentClient.View.CanvasToCellPos(TPoint.Create(X, Y));
    387     StatusBar1.Panels[2].Text := 'CellPos: ' + IntToStr(CellPos.X) + ', ' + IntToStr(CellPos.Y);
    388     if Cell <> OldCell then Redraw;
    389   end else StatusBar1.Panels[0].Text := '';
    390 end;
    391 
    392 procedure TFormMain.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
    393   Shift: TShiftState; X, Y: Integer);
    394 begin
    395   if (Abs(StartMousePoint.X - X) < Trunc(Screen.PixelsPerInch * MouseMinDiff)) and
    396   (Abs(StartMousePoint.Y - Y) < Trunc(Screen.PixelsPerInch * MouseMinDiff)) then begin
    397     if Core.Game.Running and (Core.Game.CurrentPlayer.Mode = pmHuman) then begin
    398       Core.CurrentClient.View.SelectCell(TPoint.Create(X, Y), Core.Game.CurrentPlayer, Shift);
    399       Redraw;
    400     end;
    401   end;
    402   MoveActive := False;
    403 end;
    404 
    405 procedure TFormMain.PaintBox1MouseWheelDown(Sender: TObject;
    406   Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    407 begin
    408   AZoomOut.Execute;
    409 end;
    410 
    411 procedure TFormMain.PaintBox1MouseWheelUp(Sender: TObject; Shift: TShiftState;
    412   MousePos: TPoint; var Handled: Boolean);
    413 begin
    414   AZoomIn.Execute;
    415183end;
    416184
Note: See TracChangeset for help on using the changeset viewer.