Java týden Java týden
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě
Avatar
Martin Chlebovský:7.12.2018 15:54

ERP systém má ve vizuálu Grid, a do něj potřebuji doplnit nový sloupeček, tak aby byl rozdílem dvou, vedle sebe, pro jednoduchost stačí když ve sloupečku bude třebas text "A".
Vstupní parametr je TMultiGrid, nevím jestli je to přímo prvek Delphi/Pascal nebo jen Abry. A každém případě do něj jsem již vložil nový sloupeček, a na event pověsil funkci, která má tento sloupeček plnit. Ale i přesto že celý kód proběhne tak je sloupeček pořád prázdný, má hlavičku atd... ale hodnoty nejsou. Moc nerozumím Co je to za objekty ale věřím že člověk co dělá v tomto jazyku, bude vědět.

Zkusil jsem: Mám již tento kód, vloženo níže, a myslím že ve funkci MyCalcField něco dělám špatně, a hodnota se nedokáže přepsat.

// doplni novy sloupecek
procedure InitSite_Hook(mSi­teForm: TSiteForm);
var
mGrid: TMultiGrid;
mNewColumn: TNxMultiGridCus­tomColumn;
mField: TField;
mFieldDef: TFieldDef;
i: Integer;
begin

// je to grid s rezervacema
mGrid:= TMultiGrid(mSi­teForm.FindCom­ponent('grdRe­servation'));
if Assigned(mGrid) then
begin

//mGrid.DataSou­rce.DataSet.Ac­tive:= False;
//mGrid.DataSou­rce.DataSet.Fi­eldDefs.Clear();

// definuji novy Field
mFieldDef:= TFieldDef.Cre­ate(mGrid.Data­Source.DataSet­.FieldDefs, 'mField', ftString, nil, False, 0);
mField:= mFieldDef.Cre­ateField(mGrid­.DataSource.Da­taSet, nil, 'mField', False);
mField.Calculated:= True;
mField.FieldKind:= fkCalculated;
mField.ReadOnly:= False;
mField.DataSet:= mGrid.DataSou­rce.DataSet;

//mGrid.DataSou­rce.DataSet.Fi­eldDefs.Update();
//mGrid.DataSou­rce.DataSet.Ac­tive:= True;

// definuji akci ktera se spousti pri nacitani dat
mGrid.DataSou­rce.DataSet.On­CalcFields:= @MyCalcField;

// tvorim novy sloupecek
mNewColumn:= TNxMultiGridCus­tomColumn.Cre­ate(mGrid);
mNewColumn.Cap­tion:= 'Nutno rezervovat';
mNewColumn.Kind:= ckText;
mNewColumn.Vi­sible:= True;
mNewColumn.Width:= 100;
mNewColumn.Re­adOnly:= True;
mNewColumn.Elas­tic:= True;
mNewColumn.Order:= 7;
mNewColumn.Name:= 'TB_MCH_RO_DE­TAIL_RESERVATI­ON_COLUMN_C1';
mNewColumn.Fi­eldName:= 'mField';

// pridavam sloupecek
mGrid.InsertCo­lumn(mNewColum­n);

end;

end;

// funkce pri nacitani dat
procedure MyCalcField(mDa­taSet: TDataSet);
begin
mDataSet.Fiel­dByName('mFiel­d').Value:= 'A';
mDataSet.Post();
// mDataSet.Upda­teRecord;
end;

begin
end.

Chci docílit: Potřeboval bych poradit aby výsledkem sloupečku byl v každém řádku text "A"

 
Odpovědět 7.12.2018 15:54
Avatar
Martin Chlebovský:7.12.2018 15:58

Ještě dodám že SQL dotaz je interně v samotném ERP a nelze měnit. Jsou to data vytažená z databáze, a jak se k nim dostat v té funkci MyCalcField už vím, a pracovat s nimi také umím. Pokud se jedná o běžný sloupeček Field co již existuje v Databázi, a je v tom SQL dotazu, tak jej dokážu zobrazit i s hodnotami, ale tento Calculated nejde.

 
Nahoru Odpovědět 7.12.2018 15:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.