Příklady PASCAL: Porovnání verzí
Z K.A.P.
Skočit na navigaciSkočit na vyhledáváníŘádek 225: | Řádek 225: | ||
begin | begin | ||
App.OnMenu := @DoOnMenu; | App.OnMenu := @DoOnMenu; | ||
− | App.RunMenu(3, 4, 9, ''''); | + | App.RunMenu(3, 4, 9, '''''); |
end. | end. |
Verze z 9. 2. 2013, 16:02
Obsah
- 1 Příklad 1 - práce s proměnnými uloženými do databáze
- 2 Příklad 2 - spuštění sestavy z generátoru sestav
- 3 Příklad 3 - odeslání mailu s přílohou pomocí SMTP
- 4 Příklad 4 - odeslání souboru pomocí MaximObjServeru
- 5 Příklad 5 - použití funkcí objektu TMOSCommunicator pro komunikaci s MaximObjServerem
- 6 Příklad 6 - práce s TKAPBtrTable ve formuláři
- 7 Příklad 7 - použití paměťové tabulky TKAPMemTable
- 8 Příklad 8 - Spuštění funkce z hlavního menu aplikace
- 9 Příklad 9 - Spuštění funkce z hlavního menu s obslužnou procedurou menu
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.
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.
procedure DoOnMenu(MenuInfo: TKAPAppControlMenuInfo); begin if MenuInfo <> nil then if Trim(App.ActiveWindowCaption) = 'Kontrola' then begin if MenuInfo.MenuItemsCount > 1 then MenuInfo.SelectedMenuItem := 2; end else if PosUp('Kontrola datumu spotřeby', App.ActiveWindowCaption) >= 1 then begin MenuInfo.SelectedMenuItem := 3; App.PressKeys('"50" F2'); end; end; // hlavní část begin App.OnMenu := @DoOnMenu; App.RunMenu(3, 4, 9, ); end.