home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / Duck Report / _SETUP.1 / Child.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-12-04  |  4.3 KB  |  181 lines

  1. unit Child;
  2. {$A+}
  3.  
  4. interface
  5.  
  6. uses
  7.     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  8.   Dialogs, Grids, DBGrids, Db, DBTables, dclDQuery;
  9.  
  10. type
  11.   TFormChild = class(TForm)
  12.     DataSource: TDataSource;
  13.     DBGrid1: TDBGrid;
  14.     SaveDlg: TSaveDialog;
  15.     Query: TDuckQuery;
  16.     procedure FormCreate(Sender: TObject);
  17.     procedure FormDestroy(Sender: TObject);
  18.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  19.     procedure FormShow(Sender: TObject);
  20.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  21.     procedure FormActivate(Sender: TObject);
  22.     procedure QueryAfterScroll(DataSet: TDataSet);
  23.   private
  24.      FileName:            TFileName;
  25.      DuckQuery:            TDuckQuery;
  26.      Procedure            OpenQuery;
  27.   public
  28.       bSave:                Boolean;
  29.         Constructor    Create (AOwner: TComponent; ADuckQuery: TDuckQuery);
  30.      Procedure    ReOpen (ADuckQuery: TDuckQuery);
  31.      Function        SaveFile (bShowDlg: Boolean): Boolean;
  32.      Function        OpenFile (St: TFileName): Boolean;
  33.   end;
  34.  
  35. var
  36.   FormChild: TFormChild;
  37.  
  38. implementation
  39.  
  40. uses Main;
  41.  
  42. {$R *.DFM}
  43. Constructor TFormChild.Create (AOwner: TComponent; ADuckQuery: TDuckQuery);
  44. Begin
  45.     FileName        := '';
  46.   bSave            := FALSE;
  47.   DuckQuery    := ADuckQuery;
  48.     inherited Create (AOwner);
  49. End;
  50. Procedure TFormChild.FormCreate(Sender: TObject);
  51. Begin
  52. {    DRQueryInfo    := TDRQueryInfo.Create;}
  53.     if DuckQuery <> nil Then
  54.       ReOpen (DuckQuery);
  55. End;
  56. Procedure TFormChild.FormDestroy(Sender: TObject);
  57. Begin
  58.   if FormMain.MDIChildCount = 1 Then
  59.         FormMain.EnabledCtrl (FALSE);
  60. End;
  61. Procedure TFormChild.FormClose(Sender: TObject; var Action: TCloseAction);
  62. Begin
  63.     Action    := caFree;
  64. End;
  65. Procedure TFormChild.FormShow(Sender: TObject);
  66. Var
  67.     iHeight:        Integer;
  68.   iWidth:        Integer;
  69. Begin
  70.     iHeight    := FormMain.ClientHeight;
  71.   iWidth    := FormMain.ClientWidth;
  72.   {$IFDEF WIN32}
  73.         iHeight    := iHeight - GetSystemMetrics (SM_CYDLGFRAME) - 1;
  74.       iWidth    := iWidth - GetSystemMetrics (SM_CXDLGFRAME) - 1;
  75.     {$ELSE}
  76.     {$ENDIF}
  77.  
  78.  
  79.   With FormMain Do
  80.   Begin
  81.       if PStatusBar.Visible Then
  82.           iHeight    := iHeight - PStatusBar.Height;
  83.      if PToolBar.Visible Then
  84.             iHeight    := iHeight - PToolBar.Height;
  85.   End;
  86.     SetBounds (0, 0, iWidth, iHeight);
  87.     FormMain.EnabledCtrl (TRUE);
  88. {    OpenQuery;}
  89. End;
  90. Procedure TFormChild.OpenQuery;
  91. Var
  92.   Cursor:    TCursor;
  93. Begin
  94.     Cursor            := Screen.Cursor;
  95.     Screen.Cursor    := crHourGlass;
  96.     Try
  97.         if Query.Active Then
  98.           Query.Active    := FALSE;
  99.       Query.Active    := TRUE;
  100.   Finally
  101.       Screen.Cursor    := Cursor;
  102.   End;
  103. End;
  104. Procedure TFormChild.ReOpen (ADuckQuery: TDuckQuery);
  105. Begin
  106.     Query.Assign (ADuckQuery);
  107.     Query.DoSQL;
  108.     OpenQuery;
  109. End;
  110. Procedure TFormChild.FormCloseQuery(Sender: TObject;
  111.   var CanClose: Boolean);
  112. Var
  113.     St:    String;
  114. Begin
  115.     if not bSave Then
  116.     Begin
  117.       St    := FileName;
  118.      if St = '' Then
  119.          St    := Caption;
  120.       St    := St + ' has changed' + Char(#13) + Char(#10) +
  121.          'Do you want to save the changes';
  122.  
  123.         if MessageDlg (St, mtWarning, [mbYes, mbNo], 0) = mrYes Then
  124.      Begin
  125.           SaveFile (FALSE);
  126.          CanClose    := bSave;
  127.      End
  128.      Else
  129.          CanClose    := TRUE;
  130.     End;
  131. End;
  132. Function TFormChild.SaveFile (bShowDlg: Boolean): Boolean;
  133. Begin
  134.     Result    := FALSE;
  135.     if (bShowDlg = TRUE) or (FileName = '') Then
  136.   Begin
  137.       SaveDlg.FileName    := FileName;
  138.       if not SaveDlg.Execute Then Exit;
  139.      FileName        := SaveDlg.FileName;
  140.   End;
  141.     if FileName = '' Then Exit;
  142.     if not Query.SaveFile (FileName) Then Exit;
  143.     bSave            := TRUE;
  144.   Result        := TRUE;
  145.   Caption        := FileName;
  146. End;
  147. Function TFormChild.OpenFile (St: TFileName): Boolean;
  148. Begin
  149.     Result    := FALSE;
  150.     if not Query.OpenFile (St) Then Exit;
  151.   Query.DoSQL;
  152.   Query.Active    := TRUE;
  153.   FileName        := St;
  154.     bSave            := TRUE;
  155.   Result        := TRUE;
  156.   Caption        := FileName;
  157.   OpenQuery;
  158. End;
  159. Procedure TFormChild.FormActivate(Sender: TObject);
  160. Begin
  161.     QueryAfterScroll (nil);
  162. End;
  163. Procedure TFormChild.QueryAfterScroll(DataSet: TDataSet);
  164. Begin
  165.     With FormMain Do
  166.   Begin
  167.       SBFirst.Enabled        := not Query.BOF;
  168.      SBPrevious.Enabled    := not Query.BOF;
  169.  
  170.         SBNext.Enabled            := not Query.EOF;
  171.         SBLast.Enabled            := not Query.EOF;
  172.  
  173.       MenuFirst.Enabled        := SBFirst.Enabled;
  174.         MenuPrevious.Enabled    := SBPrevious.Enabled;
  175.      MenuNext.Enabled        := SBNext.Enabled;
  176.         MenuLast.Enabled        := SBLast.Enabled;
  177.   End;
  178. End;
  179.  
  180. End.
  181.