home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Delphi.5 / Samples / sourceD5 / browutil.exe / BROWSER / PERS_ADD.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-03-20  |  10.1 KB  |  323 lines

  1. unit Pers_add;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   StdCtrls, Forms, DBCtrls, DB, DBTables, Mask, ExtCtrls, GenFunc, Msdbnav,
  8.   dbMask, Dialogs, msDBMemo;
  9.  
  10. type
  11.   TFrmPers_add = class(TForm)
  12.     Panel1: TPanel;
  13.     SrcPers_add: TDataSource;
  14.     Panel2: TPanel;
  15.     msDBNavigator1: TmsDBNavigator;
  16.     BtnClose: TButton;
  17.     tblPers_Add: TTable;
  18.     tblCategory: TTable;
  19.     Button2: TButton;
  20.     GroupBox1: TGroupBox;
  21.     MSMemo1: TMSMemo;
  22.     tblPers_AddCATEGORY: TStringField;
  23.     tblPers_AddLAST: TStringField;
  24.     tblPers_AddFIRST: TStringField;
  25.     tblPers_AddMIDDLE: TStringField;
  26.     tblPers_AddTITLE: TStringField;
  27.     tblPers_AddDOB: TDateField;
  28.     tblPers_AddIDENT: TStringField;
  29.     tblPers_AddRESD_PIN: TStringField;
  30.     tblPers_AddRESD_TEL1: TStringField;
  31.     tblPers_AddRESD_TEL2: TStringField;
  32.     tblPers_AddRESD_TEL3: TStringField;
  33.     tblPers_AddPAGER: TStringField;
  34.     tblPers_AddCELLULOR: TStringField;
  35.     tblPers_AddPRINT: TBooleanField;
  36.     tblPers_AddOFF_TEL1: TStringField;
  37.     tblPers_AddOFF_TEL2: TStringField;
  38.     tblPers_AddEMail: TStringField;
  39.     tblPers_AddNote: TMemoField;
  40.     FullName: TStringField;
  41.     Panel3: TPanel;
  42.     Label1: TLabel;
  43.     Label2: TLabel;
  44.     Label3: TLabel;
  45.     Label4: TLabel;
  46.     Label5: TLabel;
  47.     Label6: TLabel;
  48.     Label7: TLabel;
  49.     Label10: TLabel;
  50.     Label11: TLabel;
  51.     Label14: TLabel;
  52.     Label15: TLabel;
  53.     Label17: TLabel;
  54.     Label8: TLabel;
  55.     Label9: TLabel;
  56.     EditFIRST: TDBEdit;
  57.     EditMIDDLE: TDBEdit;
  58.     EditLAST: TDBEdit;
  59.     EditIDENT: TDBEdit;
  60.     EditADD_RES1: TDBEdit;
  61.     EditADD_RES2: TDBEdit;
  62.     EditADD_RES3: TDBEdit;
  63.     DBComboBox1: TDBComboBox;
  64.     DBEdit1: TDBEdit;
  65.     DBMaskEdit1: TDBMaskEdit;
  66.     DBMaskEdit2: TDBEdit;
  67.     DBMaskEdit3: TDBEdit;
  68.     DBMaskEdit4: TDBEdit;
  69.     DBMaskEdit5: TDBEdit;
  70.     DBMaskEdit6: TDBEdit;
  71.     DBMaskEdit7: TDBEdit;
  72.     DBMaskEdit8: TDBEdit;
  73.     DBMaskEdit9: TDBMaskEdit;
  74.     DBMaskEdit10: TDBEdit;
  75.     Label12: TLabel;
  76.     Label13: TLabel;
  77.     DBEdit2: TDBEdit;
  78.     tblPers_AddDesignation: TStringField;
  79.     tblPers_AddADD_RES1: TStringField;
  80.     tblPers_AddADD_RES2: TStringField;
  81.     tblPers_AddADD_RES3: TStringField;
  82.     msDBNavigator2: TmsDBNavigator;
  83.     Splitter1: TSplitter;
  84.     BtnFindText: TButton;
  85.     FindDialog1: TFindDialog;
  86.     procedure FormCreate(Sender: TObject);
  87.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  88.     procedure BtnCloseClick(Sender: TObject);
  89.     procedure TblPers_addCalcFields(DataSet: TDataSet);
  90.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  91.     procedure tblPers_AddAfterPost(DataSet: TDataSet);
  92.     procedure DBEdit1MouseDown(Sender: TObject; Button: TMouseButton;
  93.       Shift: TShiftState; X, Y: Integer);
  94.     procedure tblPers_AddDOBSetText(Sender: TField; const Text: string);
  95.     procedure SrcPers_addStateChange(Sender: TObject);
  96.     procedure tblPers_AddBeforePost(DataSet: TDataSet);
  97.     procedure Button2Click(Sender: TObject);
  98.     procedure BtnFindTextClick(Sender: TObject);
  99.     procedure FindDialog1Find(Sender: TObject);
  100.     procedure FindDialog1Close(Sender: TObject);
  101.   private
  102.     { private declarations }
  103.     sSearchFieldName : String;
  104.   public
  105.     { public declarations }
  106.   end;
  107.  
  108. var
  109.   FrmPers_add: TFrmPers_add;
  110.  
  111. implementation
  112.  
  113. uses
  114.   ViewPers;
  115.  
  116. {$R *.DFM}
  117.  
  118. procedure TFrmPers_add.FormCreate(Sender: TObject);
  119. begin
  120.   if not OpenTable(tblPers_add, cDataDrive) then
  121.     raise Exception.Create('Can not open personal database !');
  122.   if not OpenTable(tblCategory, cDataDrive) then
  123.     raise Exception.Create('Can not open category database !');
  124.   BtnFindTextClick(Sender);
  125. //  Self.Caption := Session.SessionName;
  126. end;
  127.  
  128. procedure TFrmPers_add.FormClose(Sender: TObject;
  129.   var Action: TCloseAction);
  130. begin
  131.   tblPers_add.Close;
  132.   tblCategory.Close;
  133.   Action := Cafree;
  134. end;
  135.  
  136. procedure TFrmPers_add.BtnCloseClick(Sender: TObject);
  137. begin
  138.   Close;
  139. end;
  140.  
  141. procedure TFrmPers_add.TblPers_addCalcFields(DataSet: TDataSet);
  142. begin
  143.   FullName.AsString := tblPers_add.FieldByName('Last').AsString  + ' ' +
  144.                        tblPers_add.FieldByName('First').AsString + ' ' +
  145.                        tblPers_add.FieldByName('Middle').AsString+ ' ' +
  146.                        tblPers_add.FieldByName('Title').AsString;
  147. end;
  148.  
  149. procedure TFrmPers_add.FormCloseQuery(Sender: TObject;
  150.   var CanClose: Boolean);
  151. begin
  152.   if IsDataChanged([tblPers_add]) then
  153.     CanClose := (AskSaveChanges([tblPers_add],[mbYes,mbNo,mbCancel]) <> mrCancel);
  154.   if (FindDialog1.Handle <> 0) and CanClose then
  155.     SendMessage(FindDialog1.Handle,WM_Close,0,0);
  156. end;
  157.  
  158. procedure TFrmPers_add.tblPers_AddAfterPost(DataSet: TDataSet);
  159. var
  160.   sCategory : String;
  161. begin
  162.   sCategory := tblPers_add.FieldByName('Category').AsString;
  163.   if not tblCategory.Findkey([sCategory]) then
  164.     tblCategory.Append
  165.   else
  166.     tblCategory.Edit;
  167.   try
  168.     tblCategory.FieldByName('Category').AsString := sCategory;
  169.     tblCategory.Post;
  170.   except
  171.     tblCategory.Cancel;
  172.   end;
  173. end;
  174.  
  175. procedure TFrmPers_add.DBEdit1MouseDown(Sender: TObject;
  176.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  177. begin
  178.   if (Button = mbRight) then
  179.     if DisplaySearchDialog(tblCategory, 'Category', '', 'Category', False,'', '','') = mrOk then
  180.       tblPers_add.FieldByName('Category').AsString := tblCategory.FieldByName('Category').AsString;
  181. end;
  182.  
  183. procedure TFrmPers_add.tblPers_AddDOBSetText(Sender: TField;
  184.   const Text: string);
  185. begin
  186.   tblPers_Add.FieldByName('DOB').AsString := Text;
  187. end;
  188.  
  189. procedure TFrmPers_add.SrcPers_addStateChange(Sender: TObject);
  190. begin
  191. { CCPL's special requirement }
  192.   if TTable(SrcPers_add.Dataset).State in [dsInsert, dsEdit] then
  193.     ShowDataFields(Self, True, SrcPers_add)
  194.   else
  195.     ShowDataFields(Self, False, SrcPers_add);
  196.  
  197.   if tblPers_Add.State in [dsEdit, dsInsert] then begin
  198.     tblPers_Add.FieldByName('Title').FocusControl;
  199.   end;
  200. end;
  201.  
  202. procedure TFrmPers_add.tblPers_AddBeforePost(DataSet: TDataSet);
  203. begin
  204.   if tblPers_Add.FieldByName('Last').AsString = '' then begin
  205.     tblPers_Add.FieldByName('Last').FocusControl;
  206.     Raise Exception.Create('Last name can not be blank !');
  207.   end;
  208.   if tblPers_Add.FieldByName('Category').AsString = '' then begin
  209.     tblPers_Add.FieldByName('Category').FocusControl;
  210.     Raise Exception.Create('Category can not be blank !');
  211.   end;
  212. end;
  213.  
  214. procedure TFrmPers_add.Button2Click(Sender: TObject);
  215. var
  216.   bmPersonal : TBookmark;
  217. begin
  218.   if FindDialog1.Handle <> 0 then
  219.     SendMessage(FindDialog1.Handle,WM_Close,0,0);
  220.   bmPersonal := tblPers_add.GetBookmark;
  221.   Application.CreateForm(TfrmViewPersonal, frmViewPersonal);
  222.   frmViewPersonal.srcPersonal.Dataset := tblPers_add;
  223.   frmViewPersonal.tblCategory := tblCategory;
  224.   frmViewPersonal.EditIndicator.Text := 'Gather';
  225.   if frmViewPersonal.ShowModal <> mrOk then begin
  226.       tblPers_add.GotoBookmark(bmPersonal);
  227.       tblPers_add.FreeBookmark(bmPersonal);
  228.     end
  229.   else
  230.     tblPers_add.Edit;
  231.   BtnFindTextClick(Sender);
  232. end;
  233.  
  234. procedure TFrmPers_add.BtnFindTextClick(Sender: TObject);
  235. var
  236.   Rect1 : TRect;
  237.   nFindDlgLeft, nFindDlgTop, nWidth, nHeight : Integer;
  238. //  IniFile : TRegIniFile;
  239. begin
  240.   FindDialog1.Execute;
  241. //  IniFile := TRegIniFile.Create('Address.Ini');
  242. //  nFindDlgLeft := IniFile.ReadString('Personal Address','FindDlgLeft',0);
  243. //  nFindDlgTop := IniFile.ReadString('Personal Address','FindDlgRight',0);
  244. //  IniFile.Free;
  245.   GetWindowRect(FindDialog1.Handle,Rect1);
  246.   nWidth := Rect1.Right - Rect1.Left;
  247.   nHeight := Rect1.Bottom - Rect1.Top;
  248.   SetWindowPos(FindDialog1.Handle,0,(Self.Width-nWidth)+Self.Left,(Self.Height-nHeight)+(Self.Top+10),0,0,
  249.     SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOZORDER);
  250.   BtnFindText.Enabled := False;
  251. end;
  252.  
  253. procedure TFrmPers_add.FindDialog1Find(Sender: TObject);
  254. var
  255.   sFindText : String;
  256.   I : Integer;
  257.   SearchField : TField;
  258. begin
  259.   sFindText := FindDialog1.FindText;
  260.   if tblPers_Add.EOF then begin
  261.     tblPers_Add.First;
  262.     FindDialog1.Tag := 0;
  263.   end;
  264.   tblPers_Add.DisableControls;
  265.   if (FindDialog1.Tag = 1) then
  266.     if (frDown in FindDialog1.Options) then
  267.       tblPers_Add.Next
  268.     else
  269.       tblPers_Add.Prior;
  270.   FindDialog1.Tag := 0;
  271.   if frDown in FindDialog1.Options then
  272.     while not tblPers_Add.EOF do begin
  273.       for I := 0 to tblPers_Add.FieldDefs.Count - 1 do begin
  274.         if (tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name) <> nil) then begin
  275.           SearchField := tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name);
  276.           if (Pos(UpperCase(sFindText),UpperCase(SearchField.AsString)) > 0) then begin
  277.             FindDialog1.Tag := 1;
  278.             tblPers_Add.Edit;
  279. //            tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name).FocusControl;
  280. //            FrmPers_add.Show;
  281. //            tblPers_Add.FieldByName(tblPers_Add.FieldDefs.Items[I].Name).FocusControl;
  282.             Break;
  283.           end;
  284.         end;
  285.       end;
  286.       if (FindDialog1.Tag = 1) then
  287.         Break;
  288.       tblPers_Add.Next;
  289.     end
  290.   else
  291.     while not tblPers_Add.BOF do begin
  292.       for I := 0 to tblPers_Add.FieldDefs.Count - 1 do begin
  293.         if (tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name) <> nil) then begin
  294.           SearchField := tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name);
  295.           if (Pos(UpperCase(sFindText),UpperCase(SearchField.AsString)) > 0) then begin
  296.             FindDialog1.Tag := 1;
  297.             tblPers_Add.Edit;
  298. //            tblPers_Add.FindField(tblPers_Add.FieldDefs.Items[I].Name).FocusControl;
  299. //            FrmPers_add.Show;
  300. //            tblPers_Add.FieldByName(tblPers_Add.FieldDefs.Items[I].Name).FocusControl;
  301.             Break;
  302.           end;
  303.         end;
  304.       end;
  305.       if (FindDialog1.Tag = 1) then
  306.         Break;
  307.       tblPers_Add.Prior;
  308.     end;
  309.   if tblPers_Add.EOF then begin
  310.     FindDialog1.Tag := 0;
  311.     MessageDlg('Text '+FindDialog1.FindText+' Not Found',mtInformation,[mbOk],0);
  312.   end;
  313.   tblPers_Add.EnableControls;
  314. end;
  315.  
  316. procedure TFrmPers_add.FindDialog1Close(Sender: TObject);
  317. begin
  318.   BtnFindText.Enabled := True;
  319.  
  320. end;
  321.  
  322. end.
  323.