unit frmVyrobniTyden; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid, Vcl.StdCtrls; type TformVyberTydne = class(TForm) grdTydny: TJvDBGrid; cbRok: TComboBox; btnDnes: TButton; procedure FormShow (Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure grdTydnyDblClick(Sender: TObject); procedure cbRokChange(Sender: TObject); procedure btnDnesClick(Sender: TObject); private procedure NactiKalendar (rok: integer; tyden: byte=0; autoIns: boolean=false); public rok, tyden: integer; datOd, datDo: string; retVal: integer; end; var formVyberTydne: TformVyberTydne; implementation uses System.DateUtils, helUtils, datMod2; {$R *.dfm} procedure TformVyberTydne.btnDnesClick (Sender: TObject); var t: integer; begin t:= System.DateUtils.WeekOf(Now); grdTydny.DataSource.DataSet.Locate('colRok;colTyden', VarArrayOf([cbRok.Text, t]), []); end; procedure TformVyberTydne.cbRokChange (Sender: TObject); begin NactiKalendar (cbRok.Text.ToInteger); end; procedure TformVyberTydne.FormClose (Sender: TObject; var Action: TCloseAction); begin Action:= TCloseAction.caFree; end; procedure TformVyberTydne.NactiKalendar (rok: Integer; tyden: byte=0; autoIns: boolean=false); var rNow, m: integer; begin retVal:= 0; datOd:= ''; datDo:= ''; rNow:= YearOf(Now); if (autoIns) then begin cbRok.Items.Clear; cbRok.Items.Add((rok-1).ToString); cbRok.Items.Add(rok.ToString); cbRok.Items.Add((rok+1).ToString); cbRok.ItemIndex:= cbRok.Items.IndexOf(rok.ToString); end; if (Assigned(datMod2.dm2)) then begin if (dm2.vtVyrobniTyden<>nil) then dm2.NactiVyrobniTydny (rok); if (rok=rNow) then m:= WeekOf(Now) else m:= System.DateUtils.WeeksInAYear (rok); if (tyden>0) then m:= tyden; dm2.vtVyrobniTyden.Locate ('colRok;colTyden', VarArrayOf ([rok, m]), []); end; end; procedure TformVyberTydne.FormShow (Sender: TObject); begin NactiKalendar (YearOf(Now), tyden, true); end; procedure TformVyberTydne.grdTydnyDblClick (Sender: TObject); begin retVal:= 10; tyden:= dm2.vtVyrobniTyden.FieldByName('colTyden').AsInteger; rok:= dm2.vtVyrobniTyden.FieldByName('colRok').AsInteger; datOd:= dm2.vtVyrobniTyden.FieldByName('colDatumOd').AsString; datDo:= dm2.vtVyrobniTyden.FieldByName('colDatumDo').AsString; Close; end; end.