mmenvdlg.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:6k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {========================================================================}
  2. {=                (c) 1995-98 SwiftSoft Ronald Dittrich                 =}
  3. {========================================================================}
  4. {=                          All Rights Reserved                         =}
  5. {========================================================================}
  6. {=  D 01099 Dresden             = Tel.: +0351-8012255                   =}
  7. {=  Loewenstr.7a                = info@swiftsoft.de                     =}
  8. {========================================================================}
  9. {=  Actual versions on http://www.swiftsoft.de/mmtools.html             =}
  10. {========================================================================}
  11. {=  This code is for reference purposes only and may not be copied or   =}
  12. {=  distributed in any format electronic or otherwise except one copy   =}
  13. {=  for backup purposes.                                                =}
  14. {=                                                                      =}
  15. {=  No Delphi Component Kit or Component individually or in a collection=}
  16. {=  subclassed or otherwise from the code in this unit, or associated   =}
  17. {=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
  18. {=  without express permission from SwiftSoft.                          =}
  19. {=                                                                      =}
  20. {=  For more licence informations please refer to the associated        =}
  21. {=  HelpFile.                                                           =}
  22. {========================================================================}
  23. {=  $Date: 20.01.1998 - 18:00:00 $                                      =}
  24. {========================================================================}
  25. unit MMEnvDlg;
  26. {$I COMPILER.INC}
  27. interface
  28. uses
  29. {$IFDEF WIN32}
  30.     Windows,
  31. {$ELSE}
  32.     WinTypes,
  33.     WinProcs,
  34. {$ENDIF}
  35.     SysUtils,
  36.     Messages,
  37.     Consts,
  38.     Classes,
  39.     Dialogs,
  40.     StdCtrls,
  41.     Controls,
  42.     ExtCtrls,
  43.     Forms,
  44.     MMObj,
  45.     MMPanel,
  46.     MMEnvelp,
  47.     MMScroll;
  48. type
  49.   {-- TMMEnvelopeDlg ----------------------------------------------------}
  50.   TMMEnvelopeDlg = class(TForm)
  51.     Envelope: TMMEnvelope;
  52.     MMPanel1: TMMPanel;
  53.     btnOK: TButton;
  54.     btnCancel: TButton;
  55.     MMPanel2: TMMPanel;
  56.     MMPanel3: TMMPanel;
  57.     HorizScrollPanel: TMMScrollPanel;
  58.     VerticScrollPanel: TMMScrollPanel;
  59.     btnReset: TButton;
  60.     btnClear: TButton;
  61.     OpenDialog: TOpenDialog;
  62.     SaveDialog: TSaveDialog;
  63.     btnLoad: TButton;
  64.     brnSave: TButton;
  65.     procedure HorizScrollPanelTrack(Sender: TObject; Min, Max: Longint);
  66.     procedure VerticScrollPanelTrack(Sender: TObject; Min, Max: Longint);
  67.     procedure btnResetClick(Sender: TObject);
  68.     procedure btnClearClick(Sender: TObject);
  69.     procedure btnLoadClick(Sender: TObject);
  70.     procedure brnSaveClick(Sender: TObject);
  71.   private
  72.     procedure WMGetMinMaxInfo(Var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
  73.   public
  74.     procedure SetAllRanges(MinX, MaxX, MinY, MaxY, BaseY: Longint);
  75.   end;
  76. var
  77.   MMEnvelopeDlg: TMMEnvelopeDlg;
  78. implementation
  79. {$R *.DFM}
  80. {-- TMMEnvelopeDlg ------------------------------------------------------}
  81. procedure TMMEnvelopeDlg.WMGetMinMaxInfo(Var Msg: TWMGetMinMaxInfo);
  82. begin
  83.    with Msg.MinMaxInfo^ do
  84.    begin
  85.       ptMaxSize.X := Screen.Width;
  86.       ptMaxSize.Y := Screen.Height;
  87.       ptMaxPosition.X := 0;
  88.       ptMaxPosition.Y := 0;
  89.       ptMinTrackSize.X := 390;          { Minimum width  }
  90.       ptMinTrackSize.Y := 270;          { Minimum height }
  91.       ptMaxTrackSize.X := Screen.Width; { Maximum width  }
  92.       ptMaxTrackSize.Y := Screen.Height;{ Maximum height }
  93.    end;
  94.    Msg.Result := 0;       { Tell windows you have changed minmaxinfo }
  95.    inherited;
  96. end;
  97. {-- TMMEnvelopeDlg ------------------------------------------------------}
  98. procedure TMMEnvelopeDlg.SetAllRanges(MinX, MaxX, MinY, MaxY, BaseY: Longint);
  99. begin
  100.    Envelope.SetRangeAll(MinX,MaxX,MinY,MaxY,BaseY);
  101.    Envelope.SetDispAll(MinX,MaxX,MinY,MaxY);
  102.    HorizScrollPanel.SetRangeAll(MinX,MaxX);
  103.    HorizScrollPanel.SetSliderAll(MinX,MaxX);
  104.    VerticScrollPanel.SetRangeAll(MinY,MaxY);
  105.    VerticScrollPanel.SetSliderAll(MinY,MaxY);
  106. end;
  107. {-- TMMEnvelopeDlg ------------------------------------------------------}
  108. procedure TMMEnvelopeDlg.HorizScrollPanelTrack(Sender: TObject; Min, Max: Longint);
  109. begin
  110.    Envelope.DispMinX := Min;
  111.    Envelope.DispMaxX := Max;
  112. end;
  113. {-- TMMEnvelopeDlg ------------------------------------------------------}
  114. procedure TMMEnvelopeDlg.VerticScrollPanelTrack(Sender: TObject; Min, Max: Longint);
  115. begin
  116.    with Envelope do
  117.    begin
  118.       if RangeMinY >= 0 then
  119.       begin
  120.          Envelope.DispMinY := RangeMaxY-Max;
  121.          Envelope.DispMaxY := RangeMaxY-Min
  122.       end
  123.       else
  124.       begin
  125.          Envelope.DispMinY := RangeMinY-Max;
  126.          Envelope.DispMaxY := RangeMinY-Min;
  127.       end;
  128.    end;
  129. end;
  130. {-- TMMEnvelopeDlg ------------------------------------------------------}
  131. procedure TMMEnvelopeDlg.btnResetClick(Sender: TObject);
  132. begin
  133.    Envelope.Reset;
  134. end;
  135. {-- TMMEnvelopeDlg ------------------------------------------------------}
  136. procedure TMMEnvelopeDlg.btnClearClick(Sender: TObject);
  137. begin
  138.    Envelope.Clear;
  139. end;
  140. {-- TMMEnvelopeDlg ------------------------------------------------------}
  141. procedure TMMEnvelopeDlg.btnLoadClick(Sender: TObject);
  142. begin
  143.    if OpenDialog.Execute then
  144.       Envelope.Points.LoadFromFile(OpenDialog.FileName);
  145. end;
  146. {-- TMMEnvelopeDlg ------------------------------------------------------}
  147. procedure TMMEnvelopeDlg.brnSaveClick(Sender: TObject);
  148. begin
  149.    if SaveDialog.Execute then
  150.       Envelope.Points.SaveToFile(SaveDialog.FileName);
  151. end;
  152. end.