Q1.  ⠪ DigestSDK
A1. DigestSDK - ।⢮ ࠧࠡ⪨, ।祭  㭨஢ ࠡ  ଠ樥, 
࠭  ⠡  ( 饥 ६ ⮫쪮 MSSQL)  ᮪饭 ६  ࠧࠡ. 
筮  ᮧ ꥪ 㦭   ⮬᪨  ᫥騥 :
 짮⥫:
- ⠢   
- 㤠  ( ⮬ ᫥ 㯯)
- ।஢ ( ⮬ ᫥ 㯯)
-  (   ᪠ - ᪠  ந쭮 )
- ஢ ( 㪠 浪 ஢)
-  - ᥩ  ⥪饩 롮ન  뤥 ᥩ
- 뤥 ᥩ
-  室  㪠 
-  ᨬ쭮 - ᥩ  롮થ 
- ࠭ ᫥ ﭨ ࠢ筨   (, ᫮ ⡮  ஢)
- ன ⮡ࠦ  (ਭ  )
-  ᯨ᪠  饭  ।஢
 ணࠬ:   ᥡ  짮⥫᪨   :
- ८। ⠭ 楤 , 㤠, ।஢
-   ࠢ筨 ᮡ⢥ 楤,  室  ᯨ᮪, ন ࠢ筨.
-  ᯨ᪠  饭  ।஢
-  譥  ࠢ筨 (梥 뤥 ᥩ,  ⮡ࠦ   ..)
-  砫 ᪮ 祭

  㣨 ᫮ ᯮ짮 DigestSDK  ணࠬ 
 ᠭ ⨭   ࠡ     
।   ਫ, ࠣ   
஢ ⢨  .


Q2.   ਢ 訩 ਬ
A2.  ਢ ⮩ ਬ, ஬ ⮣ DigestSDK ᭠ ਬࠬ,   ᪠  ᠩ

uses R2SSL, CommonSL;

var
  Digest : TSimpleDigestR;
begin
  //ᮧ ᭮ ࠢ筨
  DigestCars := TSimpleDigestR.Create(
    'select * from Cars',  //  ந쭮 ଥ ( ᮤঠ  ᫮ ᪠ ஢  㯯஢)
    'Cars',   // ⠡  
    edConnectionString.Text,//ப 祭
    grbProduction,          // ᮧ ࠢ筨 (  砥  GroupBox'e)
    0                       //䨪   ⠡ SLOper ( ࠭ ஥
  );

  try
    DigestCars.Open
    DigestCars.ShowModal;
  finally
    DigestCars.Free;
  end;
end;

Q3.    ८। ⠭ 樨?
A3. , ਬ:

procedure MyOperation(const CommonDigest : TCommonDigest);  //짮⥫᪠ 楤 樨  ࠡ  ࠢ筨
begin
  ShowMessage('஢ த: ' + CommonDigest.FieldByName('Name').AsString);
end;

....  
  DigestCars.SLOperation.Update.UserOperation := MyOperation;
....


Q4.  㭪樨   ८।?
    ८। 㭪樨 ।  ⨯ SLOperation:
    Insert
    Delete
    Update
    UpdateGroup
 
Q5.   㪠 ᮡ⢥ ᮡ⨥ ந室饥 /᫥ 믮 ⠭⭮ 樨
A5. , ਬ:

function OnAfterInsert(const CommonDigest : TCommonDigest; OperationFields : TArrayFields) : boolean;
begin
  Result := MessageDlg(' 㭪 ᫥  .  ⠪  ?', mtConfirmation, [mbOK, mbCancel], 0) = mrOk;
end;

function OnBeforeInsert(const CommonDigest : TCommonDigest; OperationFields : TArrayFields) : boolean;
begin
  Result := MessageDlg(' 㭪 ।  .'#13#10' ?', mtConfirmation, [mbOK, mbCancel], 0) = mrOk;
end;
...

  SLProduction.SLOperation.Insert.OnBeforeOperation := OnBeforeInsert;
  SLProduction.SLOperation.Insert.OnAfterOperation  := OnAfterInsert;

Q6. 㤠  ᪨  ?    ?
A6. ᪨    ᫮ (⠡ DataVoc). 室 
   ⠡ ࠢ쭮 .  砥 室  㭪  ࠧ
    筮 짮⥫.   室 맢 ⥪⭮  
ࠢ筨   㭪 " ".

Q6.  ⠪ TSLFields?
A6. TSLFields -  ᮤঠ騩 ᨢ  (TArrayFields), ࠧ筮 祭 ࠢ筨

  TSLFields = class
    public
      CDFields          : TArrayFields;   //祢 
      DisplayFields     : TArrayFields;   // ⮡ࠦ  DBGrid'e
      SortFields        : TArrayFields;   //    ந ஢
      FindFields        : TArrayFields;   //    ந 
      InsertFields      : TArrayFields;   // 室  
      UpdateFields      : TArrayFields;   // 室   ⥪饩 
      UpdateGroupFields : TArrayFields;   // 室   뤥 ᥩ
      LocateFields      : TArrayFields;   //  室  㪠 
      ...
  end;

   ᨢ ନ   ⮬᪨  ᮧ ꥪ ࠢ筨   
      ணࠬ
  


Q7.  ⠪ ⮣ TArrayFields?
A7. TArrayFields - ᨢ, ꥪ⮢ ⨯ TFieldInfo (魮 뢠 ஥   )
  ᭮묨 ᢮⢠   
     Name        : //  ⠪     
     DisplayName : //  ⮡ࠦ 짮⥫
     FieldType   : //⨯ 
     Visible     : //⮡ࠦ   
     Size        : //ᨬ쭮 - ᨬ (0 -  ࠭祭).   ᨬ   .
     Necessary   : //易⥫      (   NULL)
     ProcMode    : //⨯ 맮 楤
     ProcInput   : //㪠⥫  楤   (᫨    nil)
     ProcOutput  : //楤 祭 祭  ⮡ࠦ  ࠭  ⥪饩 
     Value       : //祭  ஥ 㤥 ⢮   (뢠, ᪠  ..)
     DisplayValue: //祭 , ⮡ࠦ  ࠭  㬮砭
     MaskEdit    : //᪠  
     CheckInput  : //楤 ஢ન ࠢ쭮  
     ListValues  : //ᯨ᮪  祭 ( 롮   祭 뢠 㭪
                   //⨯ TProcInputField    ⮡ࠦ 祭  祭 ஥ 㤥
                   //ᯮ짮  饭  ⠡). 㯥 ⮫쪮 ᫨ ⨯   = ftList


Q8.   ࠢ筨  ࠭ ᢮ ᫥ ﭨ
A8. ⭮   맢 ⮤ Free (   ந室 ⮬᪠  ﭨ ࠢ筨)

Q9.   ,  ࠢ筨 ⮡ࠦ ।騩  . 祬?
9. ⮬  ࠢ筨  ᫥ ﭨ (ࠧ ,    ..  ⮬ ᫥  
!!!). ⮬ 室 㤠 ࠭  " ன Ctrl-Alt-Q". 
᫥ 祣 ୮  ࠢ筨.


Q10.   ⠫   訡. 
10.  ⢥ ᫮ 筮,  祭    ந室  ࠭ ࠭ 
 ᮮ⢥ ⥪饩 ணࠬ  . ஡ 㤠 ࠭ ன ࠢ筨.

Q11.    ᬮ ⥪饥 ﭨ ࠢ筨 (᫥ , ﭨ   ..)
11. : Alt-Ctrl-I - ७ ଠ (᫥ , ﭨ )
    Ctrl-W - ।० (᫥ ⥫쭮  )

Q12.    ਬ     'Sex' ⮡ ⠬  ᯨ᮪ 祭?
A12. 室 㪠 ᫥騥 ࠬ  ᮮ⢥饣 :
  ....
  with Digest.SLFields.InsertFields do
  begin
    FieldByName['Sex'].FieldType  := ftSLList;
    FieldByName['Sex'].ListValues := ''#13#10'稭'#13#10'騭';
    FieldByName['Sex'].ProcInput  := InputFromList;
  end;

Q12.    ਬ  ।஢   'Color' ⮡  窠  맮    롮?
A12.  ᢮ 㭪,   砥 InputColor.
 ⮬  ᫥饥:
  -   , ⮫쪮 ᫨ Result = TRUE
  - 祭  짮⥫  ࠭  DisplayValue
  - 祭 뢠    ࠭  SLValue


function InputColor(var DisplayValue : Variant; var SLValue : Variant; const CommonDigest : TCommonDigest) : boolean;
begin
  with TfmSelectColor.Create(nil) do
  try
    Result := ShowModal = mrOk;
    DisplayValue := listColor.Items[listColor.ItemIndex];
    SLValue := listColor.Items[listColor.ItemIndex];
  finally
    Free;
  end;
end;
  ....
+  㪠 ᫥騥 ࠬ  ᮮ⢥饣 :

  with Digest.SLFields.UpdateFields do
  begin
    FieldByName['Color'].ProcMode   := modeUser;
    FieldByName['Color'].ProcInput  := InputColor;
 end;



Q12.    ᤥ ⮦ ᠬ,  ⮡ 짮⥫  ।஢   맮 ?
A12.   ⢨,    ।饬 ਬ, ⮫쪮  㣮 ० :
    FieldByName['Color'].ProcMode   := modeUserWithEdit;


Q13.   易  ࠢ筨?
A13.     筮    Query.

var
  Digest1, Digest2 : TSimpleDigestR;

  Digest1 := TSimpleDigestR.Create('select * from Types', ...);
  Digest2 := TSimpleDigestR.Create('select * from Cars where TypeID = :TypeID', ....);

  ....
  Digest2.DataSource := Digest1.DataSource;
  Digest1.Open;
  Digest2.Open;

Q14.     ?
14.     砫   (ன ࠬ)
  Digest.CreateButton(btnFirst, True);

Q15.   
A15.   ⮫쪮 ᫥  
  Digest.CreateUserPanel(pnlFirst);


Q16.  㦭 ⮡  ࠢ筨  ᢮ ⠡  ᢮ 
A16. 
  C ஥
      䠩  ⠫ Digest
   ꥪ ࠢ筨
  ன  (⮤ Open)
    ᢮ 
  * ࢮ 饭  ,    ⮬᪨ ᮧ ᪮쪮 ⠡!!!!