home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctchnqs / 1991 / number5 / dlg / dlgsave.pas < prev    next >
Pascal/Delphi Source File  |  1991-10-01  |  3KB  |  127 lines

  1. { dlgsave.pas by Tom Swan -- Demonstrate transfer record }
  2.  
  3. program DlgSave;
  4.  
  5. {$IFDEF BWCC}
  6. {$R notes.res}
  7. uses WinTypes, WinProcs, WObjectB, IDs;
  8. {$ELSE}
  9. {$R notesx.res}
  10. uses WinTypes, WinProcs, WObjects, IDs;
  11. {$ENDIF}
  12.  
  13. const
  14.   len_KeyWords = 80;
  15.   len_Source = 64;
  16.   len_Date = 10;
  17.   len_CrossRef = 64;
  18.   len_Remarks = 4096;
  19.   num_Sources = 3;
  20.  
  21.   Sources: array[0 .. num_Sources - 1] of PChar = (
  22.     'PC Techniques',
  23.     'Dr. Dobbs Journal',
  24.     'Computer Language'
  25.   );
  26.  
  27. type
  28.   TComboTransferRec = record
  29.     Strings: PStrCollection;
  30.     Selection: array[0 .. len_Source] of Char;
  31.   end;
  32.  
  33.   TDlgRec = record
  34.     KeyWords: array[0 .. len_KeyWords] of Char;
  35.     Source: TComboTransferRec;
  36.     Date: array[0 .. len_Date] of Char;
  37.     CrossRef: array[0 .. len_CrossRef] of Char;
  38.     Remarks: array[0 .. len_Remarks] of Char;
  39.     Note: Word;
  40.     Mail: Word;
  41.     Todo: Word;
  42.     Urgent: Word;
  43.     Done: Word;
  44.   end;
  45.  
  46.   TDlgApp = object(TApplication)
  47.     procedure InitMainWindow; virtual;
  48.   end;
  49.  
  50.   PDlgWin = ^TDlgWin;
  51.   TDlgWin = object(TWindow)
  52.     DlgRec: TDlgRec;
  53.     constructor Init(AParent: PWindowsObject; ATitle: PChar);
  54.     destructor Done; virtual;
  55.     procedure CMDialogDisplay(var Msg: TMessage);
  56.       virtual cm_First + cm_DialogShow;
  57.   end;
  58.  
  59.   PDlg = ^TDlg;
  60.   TDlg = object(TDialog)
  61.     constructor Init(AParent: PWindowsObject; ATitle: PChar);
  62.   end;
  63.  
  64. procedure TDlgApp.InitMainWindow;
  65. begin
  66.   MainWindow := New(PDlgWin, Init(nil, 'DlgSave'));
  67. end;
  68.  
  69. constructor TDlgWin.Init(AParent: PWindowsObject; ATitle: PChar);
  70. var
  71.   I: Integer;
  72. begin
  73.   TWindow.Init(AParent, ATitle);
  74.   Attr.Menu := LoadMenu(HInstance, PChar(id_Menu));
  75.   FillChar(DlgRec, Sizeof(TDlgRec), 0);
  76.   with DlgRec, Source do
  77.   begin
  78.     Strings := New(PStrCollection, Init(10, 10));
  79.     for I := 0 to num_Sources - 1 do
  80.       Strings^.Insert(Sources[I]);
  81.     Note := 1;  { Set default radio button }
  82.   end;
  83. end;
  84.  
  85. destructor TDlgWin.Done;
  86. begin
  87.   with DlgRec.Source do if Strings <> nil then
  88.   begin
  89.     Strings^.DeleteAll;
  90.     Dispose(Strings, Done);
  91.   end;
  92.   TWindow.Done;
  93. end;
  94.  
  95. procedure TDlgWin.CMDialogDisplay(var Msg: TMessage);
  96. var DialogP: PDialog;
  97. begin
  98.   DialogP := New(PDlg, Init(@Self, PChar(id_NotesDlg)));
  99.   DialogP^.TransferBuffer := @DlgRec;
  100.   Application^.ExecDialog(DialogP);
  101. end;
  102.  
  103. constructor TDlg.Init(AParent: PWindowsObject; ATitle: PChar);
  104. var
  105.   X: PControl;  { Throw-away control object pointer }
  106. begin
  107.   TDialog.Init(AParent, ATitle);
  108.   X := New(PEdit, InitResource(@Self, dlg_KeyWords, len_KeyWords + 1));
  109.   X := New(PComboBox, InitResource(@Self, dlg_Source, len_Source + 1));
  110.   X := New(PEdit, InitResource(@Self, dlg_Date, len_Date + 1));
  111.   X := New(PEdit, InitResource(@Self, dlg_CrossRef, len_CrossRef + 1));
  112.   X := New(PEdit, InitResource(@Self, dlg_Remarks, len_Remarks + 1));
  113.   X := New(PRadioButton, InitResource(@Self, dlg_Note));
  114.   X := New(PRadioButton, InitResource(@Self, dlg_Mail));
  115.   X := New(PRadioButton, InitResource(@Self, dlg_Todo));
  116.   X := New(PCheckBox, InitResource(@Self, dlg_Urgent));
  117.   X := New(PCheckBox, InitResource(@Self, dlg_Done));
  118. end;
  119.  
  120. var
  121.   DlgApp: TDlgApp;
  122. begin
  123.   DlgApp.Init('DlgShow');
  124.   DlgApp.Run;
  125.   DlgApp.Done;
  126. end.
  127.