Autor Téma: FastReport - stále mi zbehne udalosť zrušeného objektu  (Přečteno 201 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3461
  • Karma: 35
    • Verze Delphi: XE7 professional

Kód: Delphi [Vybrat]
  1.   for I := FghUser.ContainerObjects.Count -1 downto 0 do
  2.   begin
  3.     Obj := FghUser.ContainerObjects[I];
  4.     FreeAndNil(Obj);
  5.   end;
  6.  
  7.  
  8.   FghUser.OnBeforePrint := '';
  9.   FreeAndNil(FghUser);
ghUser.OnBeforePrint stále zbehne. :o To odporuje všetkým mojim vedomostiam. FR výraz Assigned nepozná. Ak použijem
Kód: Delphi [Vybrat]
  1.   if Memo25 = nil then
tak to zareve: Nedeklarovaný identifikátor: Memo25
Ako na to?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1355
  • Karma: 31
    • Pepak.net
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #1 kdy: 13-09-2018, 09:15:35 »
Když uděláš FreeAndNil(Obj), jak se podle tebe FR dozví, že objekt byl zničen? Jediný, kdo to ví, je funkce, která vlastní proměnnou Obj. (Ano, teoreticky ten objekt může v destruktoru udělat notifikaci vlastníkovi, ale to bys neměl předpokládat, pokud sis nedohledal v dokumentaci, že to tak je).

Na tvém místě bych se podíval na dokumentaci a/nebo zdroják FghUser.ContainerObjects, jestli se to o zničení objektů stará samo (pak je celý tvůj kód zbytečný a vede k uvolňování už uvolněných objektů) nebo se nestará (potom ti chybí ještě FghUser.ContainerObjects[I] := nil).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3461
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #2 kdy: 13-09-2018, 11:37:22 »
Zdrojáky sú pre mňa španielskou dedinou. Ani netuším kde to hľadať :(
V žiadnom helpe som nenašiel uvoľňovanie objektov vo FR. Asi na to musím ísť ináč.
Mne vadí to, že neviem pri FghUser = GroupHeader zlikvidovať tú jeho udalosť. To jediné má trápi. Nie je možné použiť
Kód: Delphi [Vybrat]
  1. FghUser.OnBeforePrint := nil;
a
Kód: Delphi [Vybrat]
  1. FghUser.OnBeforePrint := '';
to nezriadi.


« Poslední změna: 13-09-2018, 11:40:22 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2232
  • Karma: 117
    • Verze Delphi: D2007, XE3, DX10
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #3 kdy: 13-09-2018, 12:10:08 »
V žiadnom helpe som nenašiel uvoľňovanie objektov vo FR. Asi na to musím ísť ináč.
Proc potrebujes uvolnovat objekty? Melo by ti stacit ponastavovat Visible na false a na ostatni se muzes vykaslat

Citace
Mne vadí to, že neviem pri FghUser = GroupHeader zlikvidovať tú jeho udalosť. To jediné má trápi. Nie je možné použiť
Kód: Delphi [Vybrat]
  1. FghUser.OnBeforePrint := nil;
a
Kód: Delphi [Vybrat]
  1. FghUser.OnBeforePrint := '';
to nezriadi.
To taky nevim. Ale o FastReportu toho moc nevim a vzdycky, kdyz s nim musim neco delat, tak mi naskakuji pupinky, tak to ber z rezervou.

Podle dokumentace je OnBeforePrint typu string a v pripade examplu lze najit, ze udalost v runtime prirazuji jako string
Kód: Delphi [Vybrat]
  1. procedure masterdata1onbeforeprint(sender:tfrxcomponent);
  2. begin
  3. // code....
  4. end;
  5.  
  6. masterdata.onbeforeprint := 'masterdata1onbeforeprint'; // davaji to mezi apostrofy
  7.  
Takze ciste teoreticky by ti melo fungovat to ''.

Ale muzes to obejit:
- jestli pujde priradit jina event, tak muzes vytvorit jeji mickey-mouse handler a presmerovat to na nej
- muzes si udelat globalni promennou jako priznak, ze uz nechces zpracovavat a na zacatku stavaji obsluhy otestovat jeho hodnotu a nic nedelat


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3461
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #4 kdy: 13-09-2018, 12:32:01 »
Ďakujem za odpovede, potrápim sa.
Ale začínam mať z neho osýpky. Doteraz som bez problémov používal
Kód: Delphi [Vybrat]
  1. FmdUser.DataSet := nil;
a odrazu sa mi vďaka tomu nezobrazí zostava
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3461
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #5 kdy: 13-09-2018, 12:48:17 »
Asi to bude tým, že predtým som mal dva DataSet-y a teraz len jediný.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3461
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:FastReport - stále mi zbehne udalosť zrušeného objektu
« Odpověď #6 kdy: 13-09-2018, 13:58:09 »
Vyzerá to tak, že na zmenu udalosti v kóde mi to vôbec nereaguje :(  Neviem či nebude jednoduchšie urobiť si dve zostavy. A bude po probléme.
« Poslední změna: 13-09-2018, 13:59:40 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):