Příklady PASCAL: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
m (Nadpisy příkladů)
m
Řádek 189: Řádek 189:
 
     t.Free;
 
     t.Free;
 
   end
 
   end
 +
end.
 +
----
 +
====Příklad 8 - Spuštění funkce z hlavního menu aplikace====
 +
procedure DoOnWaitKey(WaitForKeyInfo: TKAPAppControlWaitForKeyInfo);
 +
begin
 +
  if PosUp('OBDOB', App.ActiveWindowCaption) > 0 then begin
 +
    App.PressFnKeys('F2');
 +
  end;
 +
end;
 +
// hlavní část
 +
begin
 +
  App.OnWaitForKey := @DoOnWaitKey;
 +
//App.RunMenu(KodMenu1, KodMenu2, PristPravo: byte; Keys: string);
 +
//Kód menu lze zjistit v rámci Systémové menu/Menu
 +
  App.RunMenu(1, 15, 9, '"181212" Tab "201212"');
 +
// v rámci spuštění položky menu s kódem KodMenu1 a KodMenu2 lze klávesy "namačkat" dopředu;
 +
// pokud program vyčerpá klávesy ze zásobníku a obslužná procedura nestiskne další klávesu, pak program funkci automaticky ukončuje pomocí ESC
 
  end.
 
  end.

Verze z 4. 2. 2013, 11:36

Příklad 1 - práce s proměnnými uloženými do databáze

var i: integer;
    s: String;
begin
 s:=IniReadString('ScriptTest', 1, True, _AktualniSklad_, '5');
 ShowMessage(Settings.Values['INI.FirmaJmeno']+chr(13)+Settings.Values['USER.JmenoUziv']+chr(13)+_KonfigDir_);
 LogWrite('Direktivy:'+_Direktivy_);
 if s <> '' then
   i := StrToInt(s)+1
 else
   i := -10;
 if not IniWriteInteger('ScriptTest', 1, True, _AktualniSklad_, i) then
   ShowMessage('V IniWriteInteger se vyskytla chyba');
end.

Příklad 2 - spuštění sestavy z generátoru sestav

var 
 s: String; 
 d1, d2: TDateTime; 
 DD, MM, YY : word; 
begin 
 DecodeDate(Date, YY, MM, DD); 
 if MM=1 then begin // Zjisteni predchoziho mesice 
   MM := 12; 
   YY := YY - 1; 
 end else 
   MM := MM - 1; 
 D1 := EncodeDate(YY, MM, 1); 
 D2 := EncodeDate(YY, MM, DaysInMonth(YY, MM)); 
 S := GSRunReport(6, 1, 'KFG_Datum1='+StrDate(D1)+chr(13)+ 'KFG_Datum='+StrDate(D2)+chr(13)+ 'INI_Jmeno=Pokusný sklad');
 //S := GSRunReportV(6, 1, ['KFG_Datum1', 'KFG_Datum', 'INI_Jmeno'],[StrDate(D1), StrDate(D2), 'Pokusný sklad']); 
 ShowMessage(s); 
end. 

Příklad 3 - odeslání mailu s přílohou pomocí SMTP

var 
 s: String; 
begin 
//From, SendTo, FileAttach, Subject, SMTPServer, SMTPSenderName, SMTPPassword, BodyString, ErrMessage 
  if SendMailBySMTP('odesilatel@posta.cz', 'prijemce@mail.com', 'UZIV\SESTAVA1.SLK'#9'UZIV\SESTAVA2.SES'#13'UZIV\vystup.pdf', 'Test scriptu', 'smtp.posta.cz', 'SMTPjmeno', 'SMTPheslo', 'Testovaci email.'#13'Konec', s) then
    ShowMessage('OK '+ s)
  else
    ShowMessage('CHYBA '+ s); 
end. 

Příklad 4 - odeslání souboru pomocí MaximObjServeru

var MOSCommunicator: TMOSCommunicator; 
begin 
 MOSCommunicator := TMOSCommunicator.Create('MOS.bin', '', '', '', 0); 
 if MOSCommunicator.SendFile('C:\DIR\DATA1.xml', 'DATA1.XML', '', '', '', True) then
   LogWrite('Prenos OK')
 else
   LogWrite(MOSCommunicator.ErrMessage); 
 MOSCommunicator.Free; 
end. 

Příklad 5 - použití funkcí objektu TMOSCommunicator pro komunikaci s MaximObjServerem

var MOSCommunicator: TMOSCommunicator; 
    Info: String; 
    Velikost: Extended; 
    Cas: TDateTime; 
begin 
 MOSCommunicator := TMOSCommunicator.Create('', '192.168.17.1', 'MOSuser', 'MOSpswd', 1); 
 try 
   if MOSCommunicator.Connect then begin  // pokud se připojím, pak se vše realizuje 
                                          // v rámci jednoho připojení 
                                          //    ShowMessage('Pripojeno'); 
     if MOSCommunicator.Connected then begin // test navic 
       if MOSCommunicator.SendSMS('111222333','Pokus o poslani SMS') then
         ShowMessage('SMS odeslana.') 
       else
         ShowMessage('Chyba pri odesilani SMS:'#13+MOSCommunicator.ErrMessage); 
       if MOSCommunicator.SendFile('C:\DIR\DATA1.xml', 'DATA1.XML', '', '', '', False) then 
       begin 
         ShowMessage('Prenos OK'); 
         if MOSCommunicator.GetFileInfo('Sklad6DOC', 'Stavy.xml', Info, Velikost, Cas) then begin 
           ShowMessage('GetFileInfo:'#13 + Info+ #13 + FloatToStr(Velikost) + #13 + DateTimeToStr(Cas)); 
           if not MOSCommunicator.GetFile('C:\DIR\Stavy2.XML', 'Podslozka\Stavy.xml', 'Sklad6DOC') then
             ShowMessage('GetFile:'#13+MOSCommunicator.ErrMessage); 
         end else 
           ShowMessage('GetFileInfo:'#13+MOSCommunicator.ErrMessage); 
       end else 
         ShowMessage('SendFile'#13+MOSCommunicator.ErrMessage); 
       MOSCommunicator.Disconnect; 
     end else 
       ShowMessage(MOSCommunicator.ErrMessage); 
   end else 
     ShowMessage(MOSCommunicator.ErrMessage); 
 finally 
   MOSCommunicator.Free; 
 end; 
end.

Příklad 6 - práce s TKAPBtrTable ve formuláři

  t: TKAPBtrTable;
  f: TForm;
  DBGrid: TDBGrid;
  ds: TDataSource;
begin
 ds := nil;
 t := TKAPBtrTable.Create;
 try  // try-finally část není nutná, ale správně se takto řeší problémové situace
   t.TableName := 'CISELNIK.btr';  // jméno tabulky bez cesty
   t.IndexFieldNames := 'TypCis;Klic1';
   t.Open;
   f := TForm.Create(Application);
   try
     f.Caption := 'Zobrazení ' + t.TableName;
     f.Position := poDefault;
     DBGrid:= TDBGrid.Create(f);   // parametr určuje vlastníka prvku DBGrid
     DBGrid.Parent := f;           // Parent určuje, na kterém formuláři se má DBGrid zobrazit
     DBGrid.Align := alClient;     // alClient znamená vyplnit celý formulář
     ds:= TDataSource.Create(f); // TDataSource propojuje tabulku s vizuálními prvky pro editaci (DBGrid)
     DBGrid.DataSource := ds;
     ds.DataSet := t;
     f.ShowModal;                // hlavní okno je třeba vždy otevírat pomocí ShowModal
   finally
     F.Free;                     // objekty, kterým byl určen vlastník (DBGrid) se ruší automaticky
   end;                          // při rušení vlastníka (při F.Free se ruší DBGrid i ds)
 finally
   t.Free;                       // vytvořené objekty je třeba zrušit
 end;
end.

Příklad 7 - použití paměťové tabulky TKAPMemTable

var t: TKAPMemTable;
   f:TForm;
   DBGr: TDBGrid;
   ds: TDataSource;
   MinA, x: Integer;
begin
 t := TKAPMemTable.Create;
 try
   t.FieldDefs.Add('A',ftInteger,0, false);
   t.FieldDefs.Add('B',ftString,30, false);
   t.FieldDefs.Add('C',ftfloat,0, false);
   t.FieldDefs.Add('D',ftDate,0, false);
   t.FieldDefs.Add('E',ftTime,0, false);
   t.CreateTable(nil);
//    t.IndexFieldNames := 'A;B';
   t.AddIndex('i1', 'A;B',[ixCaseInsensitive]); // nesmi byt prazdna mnozina
   t.IndexName := 'i1';
   t.Open;
   t.Append;
   t.FieldByName('A').AsInteger := 5555;
   t.FieldByName('B').AsString := 'TEST';
   t.FieldByName('C').AsFloat := 10.5;
   t.Post;
   t.Append;
   t.FieldByName('A').AsInteger := 4444;
   t.FieldByName('D').AsDateTime := Date+1;
   t.Post;
   t.Append;
   t.FieldByName('A').AsInteger := 3333;
   t.Post;
   t.Append;
   t.FieldByName('A').AsInteger := 8888;
   t.Post;
   t.First;
   MinA := t.FieldByName('A').AsInteger;
   while not t.EOF do begin
     if t.FieldByName('A').AsInteger < MinA then MinA := t.FieldByName('A').AsInteger;
     t.Next;
   end;
   ShowMessage('Min: '+IntToStr(MinA));
   f := TForm.Create(Application);
   try
     f.Caption := 'Zobrazení MemTable';
     f.Width := 1024;
     f.Height := 768;
     DBGr:= TDBGrid.Create(f);
     DBGr.Parent := f;
     DBGr.Align := alClient;
     ds:= TDataSource.Create(f);
     DBGr.DataSource :=ds;
     ds.DataSet := t;
     f.ShowModal;
   finally
     f.free;
   end
//    x := t.RecordCount;
 finally
   t.Free;
 end
end.

Příklad 8 - Spuštění funkce z hlavního menu aplikace

procedure DoOnWaitKey(WaitForKeyInfo: TKAPAppControlWaitForKeyInfo);
begin
  if PosUp('OBDOB', App.ActiveWindowCaption) > 0 then begin
    App.PressFnKeys('F2');
  end;
end;
// hlavní část
begin
  App.OnWaitForKey := @DoOnWaitKey;
//App.RunMenu(KodMenu1, KodMenu2, PristPravo: byte; Keys: string);
//Kód menu lze zjistit v rámci Systémové menu/Menu
  App.RunMenu(1, 15, 9, '"181212" Tab "201212"');
// v rámci spuštění položky menu s kódem KodMenu1 a KodMenu2 lze klávesy "namačkat" dopředu;
// pokud program vyčerpá klávesy ze zásobníku a obslužná procedura nestiskne další klávesu, pak program funkci automaticky ukončuje pomocí ESC
end.