Files
LOVATO-plugin/frmUnit3.pas
2026-04-07 18:23:56 +02:00

444 lines
12 KiB
ObjectPascal
Raw Permalink Blame History

unit frmUnit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ddPlugin_TLB,
Dialogs, ImgList, ComCtrls, ToolWin, ShellAPI, StdCtrls, TBPackageU,
System.ImageList;
const tblAkt = '[dbo].[TabKontaktJednani]';
tblCZam = '[dbo].[TabCisZam]';
tblOrg = '[dbo].[TabCisOrg]';
bidTyp = 195;
bidDruhVystupu = 196;
bidStav = 197;
CRLF = #13#10;
type
TformCRM_Aktivity = class(TForm)
ToolBar1: TToolBar;
btnPrev: TToolButton;
imgList: TImageList;
btnNext: TToolButton;
pgCtrl: TPageControl;
btnOK: TButton;
btnCancel: TButton;
pgAktivity: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
GroupBox2: TGroupBox;
Label3: TLabel;
memoPopis: TTB_Memo;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
edtKat: TTB_Edit;
edtMisto: TTB_Edit;
pgUcast: TTabSheet;
edtTyp: TTB_Edit;
edtStav: TTB_Edit;
selTyp: TTB_3Button;
selStav: TTB_3Button;
edtPredmet: TTB_Edit;
edtCislo: TTB_Edit;
GroupBox3: TGroupBox;
Label8: TLabel;
Label9: TLabel;
edtVedl: TTB_Edit;
selVedlCislo: TTB_3Button;
edtVedlPrijm: TTB_Edit;
edtVedlJm: TTB_Edit;
selVedlPrijm: TTB_3Button;
selVedlJm: TTB_3Button;
edtOrg: TTB_Edit;
edtOrgNazev: TEdit;
selOrg: TTB_3Button;
Label10: TLabel;
Label11: TLabel;
dtpZac: TDateTimePicker;
dtpKon: TDateTimePicker;
dtpZacCas: TDateTimePicker;
dtpKonCas: TDateTimePicker;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtCisloEnter(Sender: TObject);
procedure edtCisloExit(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure edtPredmetExit(Sender: TObject);
procedure edtPredmetEnter(Sender: TObject);
procedure memoPopisEnter(Sender: TObject);
procedure memoPopisExit(Sender: TObject);
procedure edtMistoEnter(Sender: TObject);
procedure edtMistoExit(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure selTypClick(Sender: TObject);
procedure selStavClick(Sender: TObject);
procedure selVedlCisloClick(Sender: TObject);
procedure selVedlPrijmClick(Sender: TObject);
procedure selVedlJmClick(Sender: TObject);
procedure selOrgClick(Sender: TObject);
private
procedure NactiAktivitu;
public
Helios: IHelios;
idAkt: integer;
end;
var
formCRM_Aktivity: TformCRM_Aktivity;
sCis: string;
iCis: integer;
sql: string;
iPrev,iNext: TIcon;
bgCol: TColor;
oVar1, oVar2: OleVariant;
tStr: string;
implementation
uses StrUtils, myUtils, helUtils;
{$R *.dfm}
procedure TformCRM_Aktivity.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TformCRM_Aktivity.btnOKClick(Sender: TObject);
var sql: string;
begin
sql:= '';
if (idAkt>0) then
begin
sql:= 'UPDATE ' + tblAkt + ' SET Predmet=N' + QuotedStr(edtPredmet.Text);
sql:= sql + ',Typ=N' + QuotedStr(edtTyp.Text) + ',Stav=N' + QuotedStr(edtStav.Text);
sql:= sql + ',MistoKonani=N' + QuotedStr(edtMisto.Text);
sql:= sql + ',CisloOrg=';
if edtOrg.Text<>'' then
sql:= sql + edtOrg.Text
else
sql:= sql + 'null';
sql:= sql + ',CisloZam=';
if edtOrg.Text<>'' then
sql:= sql + edtVedl.Text
else
sql:= sql + 'null';
sql:= sql + ',Popis=CONVERT(ntext,' + QuotedStr(memoPopis.Text) + ')';
tStr:= DateToStr(dtpZac.Date) + ' ' + TimeToStr(dtpZacCas.Time);
sql:= sql + ',DatumJednaniOd=CONVERT(datetime,' + QuotedStr(tStr) + ',104)';
tStr:= DateToStr(dtpKon.Date) + ' ' + TimeToStr(dtpKonCas.Time);
sql:= sql + ',DatumJednaniDo=CONVERT(datetime,' + QuotedStr(tStr) + ',104)';
sql:= sql + ' WHERE id=' + IntToStr(idAkt);
end
else
begin
sql:= 'INSERT ' + tblAkt + ' (PoradoveCislo,Kategorie,Predmet,Typ,Stav,DruhVystupu,MistoKonani,';
sql:= sql + 'DatumJednaniOd,DatumJednaniDo,CisloOrg,CisloZam,Popis) VALUES (' + edtCislo.Text;
sql:= sql + ',N' + QuotedStr(edtKat.Text) + ',N' + QuotedStr(edtPredmet.Text);
sql:= sql + ',N' + QuotedStr(edtTyp.Text) + ',N' + QuotedStr(edtStav.Text) + ',N' + QuotedStr('');
sql:= sql + ',N' + QuotedStr(edtMisto.Text) + ',';
tStr:= DateToStr(dtpZac.Date) + ' ' + TimeToStr(dtpZacCas.Time);
sql:= sql + 'CONVERT(datetime,' + QuotedStr(tStr) + ',104),';
tStr:= DateToStr(dtpKon.Date) + ' ' + TimeToStr(dtpKonCas.Time);
sql:= sql + 'CONVERT(datetime,' + QuotedStr(tStr) + ',104),';
if edtOrg.Text<>'' then
sql:= sql + edtOrg.Text
else
sql:= sql + 'null';
sql:= sql + ',';
if edtVedl.Text<>'' then
sql:= sql + edtVedl.Text
else
sql:= sql + 'null';
sql:= sql + ',CONVERT(ntext,' + QuotedStr(memoPopis.Text) + ')';
sql:= sql + ')';
end;
if sql<>'' then
try
Helios.ExecSQL(sql);
except on E:Exception do
Helios.Error('Nelze ulo<6C>it <20>daje pro Aktivitu. ' + CRLF + sql + CRLF + E.Message);
end;
Close;
end;
procedure TformCRM_Aktivity.edtCisloEnter(Sender: TObject);
begin
edtCislo.Color:= bgCol;
end;
procedure TformCRM_Aktivity.edtCisloExit(Sender: TObject);
begin
edtCislo.Color:= clWindow;
end;
procedure TformCRM_Aktivity.edtMistoEnter(Sender: TObject);
begin
edtMisto.Color:= bgCol;
end;
procedure TformCRM_Aktivity.edtMistoExit(Sender: TObject);
begin
edtMisto.Color:= clWindow;
end;
procedure TformCRM_Aktivity.edtPredmetEnter(Sender: TObject);
begin
edtPredmet.Color:= bgCol;
end;
procedure TformCRM_Aktivity.edtPredmetExit(Sender: TObject);
begin
edtPredmet.Color:= clWindow;
end;
procedure TformCRM_Aktivity.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
DestroyIcon(iPrev.Handle);
iPrev.Free;
DestroyIcon(iNext.Handle);
iNext.Free;
end;
procedure TformCRM_Aktivity.NactiAktivitu;
var sql: string;
tStr,tStr2: string;
tInt: Integer;
begin
sql:= 'SELECT * FROM ' + tblAkt + ' WHERE id=' + IntToStr(idAkt);
with Helios.OpenSQL(sql) do
if RecordCount>0 then
begin
edtMisto.Text:= VarToStr(FieldByNameValues('MistoKonani'));
edtPredmet.Text:= VarToStr(FieldByNameValues('Predmet'));
edtTyp.Text:= VarToStr(FieldByNameValues('Typ'));
edtStav.Text:= VarToStr(FieldByNameValues('Stav'));
memoPopis.Text:= VarToStr(FieldByNameValues('Popis'));
tStr:= VarToStr(FieldByNameValues('DatumJednaniOd'));
tStr2:= tStr;
tStr:= Trim(LeftStr(tStr, Pos(' ',tStr)-1));
if tStr<>'' then
dtpZac.Date:= StrToDate(tStr);
tStr:= MidStr(tStr2,Pos(' ',tStr2),255);
if (tStr<>'') and (Pos(':',tStr)>0) then
dtpZacCas.Time:= StrToTime(tStr);
tStr:= VarToStr(FieldByNameValues('DatumJednaniDo'));
tStr2:= tStr;
tStr:= Trim(LeftStr(tStr, Pos(' ',tStr)-1));
if tStr<>'' then
dtpKon.Date:= StrToDate(tStr);
tStr:= Trim(MidStr(tStr2,Pos(' ',tStr2),255));
if (tStr<>'') and (Pos(':',tStr)>0) then
dtpKonCas.Time:= StrToTime(tStr);
tStr:= VarToStr(FieldByNameValues('CisloOrg'));
if tStr<>'' then
with Helios.OpenSQL('SELECT Firma FROM ' + tblOrg + ' WHERE CisloOrg=' + tStr) do
if RecordCount>0 then
begin
edtOrg.Text:= tStr;
edtOrgNazev.Text:= VarToStr(FieldValues(0));
end;
tStr:= VarToStr(FieldByNameValues('CisloZam'));
if tStr<>'' then
with Helios.OpenSQL('SELECT Prijmeni,Jmeno FROM ' + tblCZam + ' WHERE Cislo=' + tStr) do
if RecordCount>0 then
begin
tInt:= StrToInt(tStr);
edtVedl.Text:= Format('%.6d',[tInt]);
edtVedlPrijm.Text:= VarToStr(FieldValues(0));
edtVedlJm.Text:= VarToStr(FieldValues(1));
end;
end;
end;
procedure TformCRM_Aktivity.selOrgClick(Sender: TObject);
var cOrg: string;
begin
if Helios.Prenos(1,'CisloOrg',oVar1,'','Organizace',true) then
cOrg:= VarToStr(oVar1);
if cOrg<>'' then
begin
edtOrg.Text:= cOrg;
with Helios.OpenSQL('SELECT Firma FROM ' + tblOrg + ' WHERE CisloOrg=' + cOrg) do
edtOrgNazev.Text:= VarToStr(FieldValues(0));
end;
end;
procedure TformCRM_Aktivity.selStavClick(Sender: TObject);
begin
if Helios.Prenos2(bidStav,'Cislo','Popis',oVar1,oVar2,'','Typy aktvit',true,true,false,1) then
begin
edtTyp.Text:= VarToStr(oVar1);
edtTyp.Hint:= VarToStr(oVar2);
edtTyp.ShowHint:= true;
end;
end;
procedure TformCRM_Aktivity.selTypClick(Sender: TObject);
begin
if Helios.Prenos2(bidTyp,'Cislo','Popis',oVar1,oVar2,'','Typy aktvit',true,false,false,1) then
begin
edtTyp.Text:= VarToStr(oVar1);
// edtTyp.Text:= StringReplace(edtTyp.Text,'N''','',[rfReplaceAll]);
// edtTyp.Text:= StringReplace(edtTyp.Text,'''','',[rfReplaceAll]);
edtTyp.Hint:= VarToStr(oVar2);
edtTyp.ShowHint:= true;
end;
end;
procedure TformCRM_Aktivity.selVedlCisloClick(Sender: TObject);
var cZam: string;
iZam: integer;
begin
cZam:= '';
if Helios.Prenos(86,'Cislo',oVar1,'','Zam<61>stnanec',true) then
cZam:= VarToStr(oVar1);
if cZam<>'' then
with Helios.OpenSQL('SELECT Prijmeni,Jmeno FROM ' + tblCZam + ' WHERE Cislo=' + cZam) do
begin
iZam:= StrToInt(cZam);
edtVedl.Text:= Format('%.6d',[iZam]);
edtVedlPrijm.Text:= VarToStr(FieldValues(0));
edtVedlJm.Text:= VarToStr(FieldValues(1));
end;
end;
procedure TformCRM_Aktivity.selVedlJmClick(Sender: TObject);
begin
selVedlCisloClick(Sender);
end;
procedure TformCRM_Aktivity.selVedlPrijmClick(Sender: TObject);
begin
selVedlCisloClick(Sender);
end;
procedure TformCRM_Aktivity.FormShow(Sender: TObject);
var sTmp: string;
hFnd: THandle;
idx: Integer;
begin
SendMessage(Self.Handle, WM_SETICON, 0, Helios.MainApplicationIconHandle);
dtpZac.DateTime:= Now;
dtpZacCas.DateTime:= Now;
dtpKon.DateTime:= Now;
dtpKonCas.DateTime:= Now;
Self.Font.Name:= Helios.Font;
Self.Font.Height:= Helios.FontHeight;
bgCol:= clWindow;
with Helios.OpenSQL('SELECT BarvaPodbarveni FROM TabUziv WHERE BarevnePodbarveni=1 AND LoginName=N' + QuotedStr(Helios.LoginName)) do
if RecordCount>0 then
bgCol:= StrToInt(VarToStr(FieldValues(0)));
idx:= 0;
while idx<Self.ComponentCount-1 do
begin
if (Self.Components[idx] is TTB_Edit) then
(Self.Components[idx] as TTB_Edit).ColorOnEnter:= bgCol;
if (Self.Components[idx] is TTB_Memo) then
(Self.Components[idx] as TTB_Memo).ColorOnEnter:= bgCol;
Inc(idx);
end;
iCis:= 1;
sql:= 'SELECT PoradoveCislo FROM ' + tblAkt + ' WHERE ';
if idAkt<1 then
sql:= sql + 'Kategorie=N' + QuotedStr(Helios.KategorieKJ)
else
sql:= sql + 'id=' + IntToStr(idAkt);
with Helios.OpenSQL(sql) do
if RecordCount>0 then
begin
sCis:= VarToStr(FieldValues(0));
iCis:= StrToInt(sCis);
if idAkt<1 then
begin
Inc(iCis);
sCis:= IntToStr(iCis);
end;
end;
sCis:= Format('%.6d',[iCis]);
Self.Caption:= ' ' + Helios.KategorieKJ + ' ' + sCis;
edtCislo.Text:= sCis;
edtKat.Text:= Helios.KategorieKJ;
hFnd:= GetModuleHandle('helios.exe');
SetLength(sTmp, MAX_PATH+1);
SetLength(sTmp, GetModuleFileName(hFnd, PChar(sTmp), MAX_PATH+1));
imgList.Clear;
iPrev:= TIcon.Create;
iPrev.SetSize(32,32);
iPrev.Handle:= ExtractIcon(hFnd,PChar(sTmp),20); // X_DBPRIOR
imgList.AddIcon(iPrev);
iNext:= TIcon.Create;
iNext.SetSize(32,32);
iNext.Handle:= ExtractIcon(hFnd,PChar(sTmp),19); // X_DBNEXT
imgList.AddIcon(iNext);
pgCtrl.ActivePageIndex:= 0;
if idAkt>0 then
NactiAktivitu;
edtCislo.SetFocus;
end;
procedure TformCRM_Aktivity.memoPopisEnter(Sender: TObject);
begin
memoPopis.Color:= bgCol;
end;
procedure TformCRM_Aktivity.memoPopisExit(Sender: TObject);
begin
memoPopis.Color:= clWindow;
end;
end.