Autor Téma: FastCube Rôzne  (Přečteno 123 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
FastCube Rôzne
« kdy: 19-11-2022, 20:03:56 »
Možno to niekoho zaujme a pomôže.
Napísal som vývojárom toto (skrátené):

Rád by som programovo naplnil polia do Measueres.
Šírky stĺpcov v TfcxSlice/TfcxCube sú nastavené programovo! To už nedokážem pre TfcxSliceGrid. Nevidím tam žiadnu možnosť.
Chcem toto:
.  A) programovo naplniť polia do Measueres
.  B) presunúť Measueres do oblasti stĺpcov
.  C) nastaviť šírku stĺpcov v TfcxSliceGrid
.
Prečo tam neuvediete:
  • že TfcxRegionOfField sa nachádza v jednotke fcxTypes
  • príklad ako programovo nastaviť šírky stĺpcov v TfcxSlice
  • nastavenie DisplayLabel. Nastavil som to a nič sa nedialo. Až som začal experimentovať s poradím. Pri čítaní návodu som pochopil, že Cube.Open naplní polia. Prax hovorí, že to nie je pravda. Prikladám ukážku:
.
.  // Poradie jednotlivých úkonov
Kód: Delphi [Vybrat]
  1.   FqryCubeDeposit.Close;
  2.   FCube.Close;
  3.   FDataSource.DeleteFields;
  4.   FqryCubeDeposit.SQL.Text := CubeText;
  5.   SetParameters(FqryCubeDeposit);
  6.   TFDFunction.QryOpen(FqryCubeDeposit);
  7.   FDataSource.AddFields;
  8.   //  Musia sa nastaviť obe vlastnosti
  9.     FDataSource.Fields[Idx].DataField.CubeFieldDisplayLabel := MyTitle;
  10.     FDataSource.Fields[Idx].SourceFieldProperties.CaptionSourceAttribute := MyTitle;
  11.   ...
  12.   FCube.Open;
Príklad nastavenia šírky stĺpcov v TfcxSlice viď bod 3). Môj funkčný kód.
Kód: Delphi [Vybrat]
  1.   var MeasCon := FSlice.MeasuresContainer;
  2.   GetFieldWidth;
  3.   FSlice.BeginUpdate;
  4. .
  5.   try
  6.     for var I := 0 to FqryCubeDeposit.Fields.Count - 1 do
  7.     begin
  8.       FieldName := FqryCubeDeposit.Fields.Fields[I].FieldName;
  9.       Idx := MeasCon.MeasureFields.IndexByName[FieldName];
  10. .
  11.       if Idx = - 1 then
  12.         Continue;
  13. .
  14.       FWidth := GetHeaderWidth(I);
  15. .
  16.       if FFieldWidth[I] > FWidth then
  17.         FWidth := FFieldWidth[I];
  18.   //  Musia sa nastaviť obe vlastnosti
  19.       MeasCon.Measures[Idx].Width := FWidth;
  20.       MeasCon.Measures[Idx].CaptionWidth := FWidth;
  21.     end;
  22.   finally
  23.     FSlice.EndUpdate;
  24.   end;
.
K bodu B). Na fóre je uvedený tento príklad:
Kód: Delphi [Vybrat]
  1.   if (ARegionOfField = rf_CapFacts) then
  2.   begin
  3.   // Move measure fields to X Axis
  4.   slice.AddFieldTo(sMeasuresFieldName, '', rf_CapXAx);  // Metóda AddFieldTo (už?) neexistuje
  5.   // Remove event handler so that this doesn't happen again
  6.   slice.OnAfterAddedSliceFieldToRegion := nil;
  7.   end;
.
Ak niekto pozná odpoveď na niektorý z bodov A) - C) tak sem s tým
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:FastCube Rôzne
« Odpověď #1 kdy: 21-11-2022, 09:34:21 »

Bod A)
Kód: Delphi [Vybrat]
  1.   var MeasCon := FSlice.MeasuresContainer;
  2.   K := MeasCon.Container.AddMeasuresField;
  3.   //  alebo
  4.   K := MeasCon.Container.InsertMeasuresField(0);
  5. ShowMessage(IntToStr(MeasCon.Container.Fields.Count)); //  Vždy je 0, prázdny. Prečo?
V nápovedi FastReport som našiel toto - príloha. O tom neviem vôbec nič. Vidím to prvý krát. Neviem, či to pre mňa nie je ťažké.
.
Bod C) Nastavenie šírok pre stĺpce TfcxCubeDir:
Kód: Delphi [Vybrat]
  1.   FCubeGrid.DataZone.Columns[I].Width := MyWidth;
« Poslední změna: 21-11-2022, 09:54:16 od Stanislav Hruška »
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.