Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 25-07-2012, 10:14:41

Název: Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 25-07-2012, 10:14:41
Chcem poslovenčiť RaveReport. V D7 som vytvoril súbory *.pas (ani neviem ako) a tam so to urobil.
Teraz sa mi to nedarí. Prepisovanie textu v *.dfm nevedie k cieľu.
Ako na to? Sú tam súbory *.dcu, *.dfm a *.hpp
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 25-07-2012, 11:20:37
Myslím, že stačí přidat cestu s DFM soubory do Source Path nebo Library Path a zkompilovat. Kdysi jsem to dělal nejsem si teď úplně jist.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 26-07-2012, 07:23:11
Včera večer som s tým skúšal niečo robiť.
Ak otvorím priamo *.dfm, tak sa s tým nedá nič robiť.
Ak založím projekt, tak tam môžem pridať iba *.pas, ktoré nemám. Pridanie iných typov nemá žiaden účinok.
RaveReport nie je Delphi program, ale sada formulárov a "príslušenstva.

Iná rada?
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 26-07-2012, 08:06:55
Tak jsem si to teď vyzkoušel v Delphi XE2
Můžeš zkusit upravit dfm soubory programem dfmedit (www.mitec cz) a uložit zpět do složky RaveReports\Lib. A ani jsem nemusel přidávat cestu jak jsem psal minule. Pak stačí udělat znovu build.
Ty původní DFM soubory jsou v binární podobě. Pokud je chceš upravovat v textovém editoru tak se musí překonvertovat programem convert.exe ze složky ve které je bds.exe. DFM v textové podobě se už nemusí nutně převádět zpět do binární podoby. V textovém editoru použít kódování diakritiky středoevropské CP1250.

Tip: Caption formuláře setup se nastavuje v komponentě RvSystém. Nebere se z DFM souboru.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 26-07-2012, 09:31:41
Pak stačí udělat znovu build.
Tým myslíš otvoriť *.rav priamo z Delphi a dať uložiť môj *.rav? O ničom inom neviem.

Ty původní DFM soubory jsou v binární podobě.
To viem. Otváram ich priamo v Delphi. Je tam možnosť v popup File Forma -> Text Form. Len neviem ako postupovať, ak vyberiem túto možnosť.
Pokiaľ by tu bola možnosť, tak by som jej dal prednosť. Ináč použijem Tebou odporúčaný program.
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 26-07-2012, 10:14:11
Build jsem myslel jako znovu zkompilovat aplikaci klávesou F9 (v Delphi). S *.rav soubory to nemá nic společného.

Samotné DFM v delphi otevřeš jenom jako textový soubor.
Podle mne by si musel mít i zdrojový PAS soubor k tomu DFM, aby šlo upravovat v design módu a otevírat to přes PAS soubor.
Pomocí toho programu dfmedit si můžeš i pohodlně upravit velikosti komponent na formuláři jako v design módu a nepotřebuješ PAS soubor.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 26-07-2012, 11:11:44
// Build jsem myslel jako znovu zkompilovat aplikaci klávesou F9 (v Delphi). S *.rav soubory to nemá nic společného.
To mám vyskúšané. Tak to nefunguje. Musím otvoriť svoje zostavy a dať uložiť. Takto sa prejavia zmeny vykonané v *.dfm.
So samotnou aplikáciou nie je nutné nič robiť.
Ďakujem za rady. Večer to vyskúšam.

Poznámka: Pri priamej úprave *.dfm mám problém s rozhádzanou diakritikou. Tak to bolo aj v D7.
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 26-07-2012, 12:24:46
Možná tím jak dáš uložit sestavy, tím donutíš linker aby znovu přidal *.dfm soubory k aplikaci pokud používáš property StoreRAV v TRvProject pro ukládání souboru sestav RAV.
Je to jenom o tom udělat Clean projektu (smažou se zkompilované unity *.dcu) a při dalším Build se vše znovu sestaví a změny provedé v DFM se přilinkují do projektu.
Doporučuji po změnách v DFM udělat Clean, Build v menu Projekt.

DFM editované v PSPadu po kodování Windows 1250 jsou dobře čitelné v aplikaci. Delphi editor používá jiné kódování myslím, že UTF-8. Také se mi funkční DFM soubory v WINDOWS-1250 při otevření v delphi editoru zmrší lokalizované texty.
Ve finále je funkční DFM v kódování Windows-1250 v kompilovaném projektu.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 26-07-2012, 12:40:53
Skúsil som dfmedit (použil som ť ) a vyzerá to v poriadku.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 27-07-2012, 08:20:14
Máš pravdu. Build sa musí použiť.
Mám jednu kozmetickú chybu
Label.Caption : = 'of 10';

Potrebujem 'z 10'. Problém je v tom, že text sa generuje dynamicky. Je nejaká možnosť prepasírovať tam "z" namiesto "of"?
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 27-07-2012, 10:33:25
Nevím co máš přesně na mysli, ale myslím, že se to dá pomoci pomocí property TRvSystem.SystemFiler.StatusText (popř. StatusFormat).
Je to TStrings a myslím, že se dává na každý řádek nějaká forma toho textu, ale nikdy jsem to nepotřeboval.
Dost se toho dá ovlivnit upravením komponenty TRvSystem.
Pozn. Samozřejmě ty lokalizace fungují pouze u spuštěné aplikace. V delphi návrhu a náhledu je to původní v angličtině.

Raději použij jiný generátor sestav. Třeba FastReport.
Od RaveReports jsem utekl.
a) nelze vyexportovat PDF s českýmy znaky v BE verzi (použil jsem potom export přes eDocEngine od Gnostice, abych si pomohl)
b) fastreport je opravdu rychlejší a lépe se lokalizuje.

- u Rave reportu jsem si stejně udělal vlastní preview form, setupform jsem nepoužíval.
- u FastReportu není problém s češtinou v sestavách.
- fast report dokáže dělat i sestavy pro jehličkové tiskárny. lépe se tam skriptuje v sestavě než u rave reports.
- u rave reports mi po upgradech delphi nastávaly problémy v sestavách které obsahovaly skripty.
Jestli to myslíš vážně s reporty, tak se RaveReports určitě vyhni.

FastReport jsem si koupil v plné verzi a je tam i Designer, který se může nabídnout v programu. A vyjde to levněji, než koupit plný RaveReports a ještě je to v DLL knihovně.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 27-07-2012, 11:20:52
Ja som sa raz pýtal čo uprednostniť. Nebola žiadna reakcia.
To je existujúci projekt a prerábať zostavy je v tomto prípade nezmysel. Lokalizácia bola podstatne jednoduchšia.

V nových projektoch som sa rozhodol pre  FastReport. Jeden z dôvodov je aj práca priamo v Delphi. V RaveReport to bol trest. Napr. písať podmienky pre farbu textu, sčítavať hodnoty - musí byť dodržané poradie.

Som amatér. Väčšinou mi stačia free verzie. Ak by mi nestačili tak si to viem aj kúpiť. Rád kupujem veci, ktoré potom nevyužijem. Som rád, že si mi potvrdil moje rozhodnutie.

K samostatnému problému.

Vo formulári v nejakej udalosti (napríklad predchádzanie strán zostavy) sa generuje (zjednodušene) niečo také
Label.Caption := 'of ' + IntToStr(Page);

A v *.dfm samotný kód nie je dostupný. Myslím tým DFMEdit a Delphi. V D7 som si nejako vytvoril *.pas. V DXE2 to neviem.
Neviem či by bolo niečo možné pomocou PSPad a jemu podobných. Nie som programátor. Som samouk.

Ide o náhradu textu  'of '
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 27-07-2012, 15:02:07
Asi to půjde jedině.
Vytvorit proceduru pro event v komponentě TRvSystem.OverridePreview.

Kód: Delphi [Vybrat]
  1. procedure TForm1.RvSystem1OverridePreview(ReportSystem: TRvSystem;
  2.   OverrideMode: TOverrideMode; var OverrideForm: TForm);
  3. begin
  4. case
  5.     OverrideMode of
  6.     omCreate:
  7.       begin
  8.         OverrideForm := TRavePreviewForm.Create(nil);
  9.         OverrideForm.Caption := ReportSystem.TitlePreview;
  10.         (OverrideForm as TRavePreviewForm).ReportSystem := ReportSystem;
  11.       end;
  12.     omShow:
  13.       begin
  14.           ReportSystem.SystemPreview.InitPreview((OverrideForm As TRavePreviewForm).RvRenderPreview);
  15.           If Assigned(ReportSystem.OnPreviewSetup) Then
  16.           Begin
  17.             ReportSystem.OnPreviewSetup((OverrideForm As TRavePreviewForm).RvRenderPreview);
  18.           End; { if }
  19.           (OverrideForm As TRavePreviewForm).RvRenderPreview.InputFileName := ReportSystem.SystemFiler.Filename;
  20.           (OverrideForm As TRavePreviewForm).RvRenderPreview.NDRStream := ReportSystem.SystemFiler.Stream;
  21.           (OverrideForm As TRavePreviewForm).RvRenderPreview.Active:=True;
  22.           (OverrideForm As TRavePreviewForm).PageLabel.Caption:='z ' + IntToStr((OverrideForm As TRavePreviewForm).RvRenderPreview.Pages);
  23.  
  24.           (* *)
  25.           If soPreviewModal In ReportSystem.SystemOptions Then
  26.           Begin
  27.              (OverrideForm As TRavePreviewForm).ShowModal;
  28.           End
  29.           Else
  30.           Begin
  31.              (OverrideForm As TRavePreviewForm).Show;
  32.           End; { else }
  33.       end;
  34.     omWait:
  35.       begin
  36.           If Not (soPreviewModal In ReportSystem.SystemOptions) Then
  37.           Begin
  38.               // Wait for close
  39.               Repeat
  40.                    Sleep(250);
  41.                    Application.ProcessMessages;
  42.               Until Not OverrideForm.Visible;
  43.           End; { if }
  44.       end;
  45.     omFree:
  46.       begin
  47.         OverrideForm.Free;
  48.       end;
  49.   end;
  50. end;
  51.  
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 27-07-2012, 16:04:09
Vôbec tomu nerozumiem, ale tu predpokladám preklep  omCreate: omShow: - onCreate: onShow:
Název: Re:Ravereport - lokalizácia
Přispěvatel: pf1957 27-07-2012, 16:22:49
Vôbec tomu nerozumiem, ale tu predpokladám preklep  omCreate: omShow: - onCreate: onShow:

Ale ne, to om je prefix odvozeny z Override Mode -> pojmenovani clenu z vyctoveho typu TOverrideMode
Název: Re:Ravereport - lokalizácia
Přispěvatel: Sender 27-07-2012, 20:13:13
Lze dostat nějak do Rave diakritiku ? V D7 s tím mám problémy.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 28-07-2012, 09:05:29
V akom zmysle? Kde presne? V zostavách som s tým problém nemal.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 28-07-2012, 14:15:33
Tak som skúsil tú procedúru. "z" tam je, ale nezobrazí sa samotná zostava. Formulár je prázdny.

(OverrideForm As TRavePreviewForm).RvRenderPreview.InputFileName := ReportSystem.SystemFiler.Filename;

Filename nemá priradenú hodnotu.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Sender 28-07-2012, 18:36:20
S diakritikou jsem měl (pořád mám) při ukládání za pomoci komponenty RvRenderPDF do PDF souboru.
(používám D7 prof)
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 29-07-2012, 15:46:35
Report už zobrazím. Len to má jednu chybu. Pri listovaní zostavou sa vždy aktualizuje
(OverrideForm As TRavePreviewForm).PageLabel.Caption
a tak sa tam objaví "of".
Pokiaľ nejakým spôsobom nezískam *.pas, tak tam nechám "of".
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 29-07-2012, 15:48:32
to Sender - žiaľ nie si sám. Pozri sa do archívu. V minulosti sa tomu venovali.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Sender 29-07-2012, 15:59:27
jj,archiv jsem prohlížel několikrát.Experimenty s Rave taky,ale bez úspěchu.Vyřešil jsem to stažením komponenty která umí tisk do PDF bez externích zdrojů.
Myslel jsem spíš to tak,jestli už to někdo s tím Rave nevyřešil...
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 04-08-2012, 21:31:28
to Sender. Jak jsem již psal dříve komponetou RvRenderPDF se nezdaří vyexportovat sestavu s českou diakritikou. Řešil jsem to napojením RaveExportem v komponentách GNostice eDocEngine. Také jsem hodně hledal a nenašel jsem funkční řešení přímého exportu sestavy do PDF komponentou RvRenderPDF. Je to způsobeno snad fontem ve vegenrovaném PDF. Snad po úpravě zdrojáků prý by to snad mělo jít, ale to chce si koupit Rave BEX (se zdrojovými kódy).
Název: Re:Ravereport - lokalizácia
Přispěvatel: mirus 04-08-2012, 22:29:30
To Stanislav hruška: Vyřešil jsem to vlastním preview formulářem a měl jsem preview v celé své režii. Pomocí té procedury OverridePreview se nastaví vlastní previewform.

Tohle vygeneruje náhled. Mám to až ve svém PreviewFormu v onShow, proto nefungoval výňatek kódu minule.
Kód: Delphi [Vybrat]
  1. ..
  2. RvRenderPreview.RenderPage(1);
  3. ..
  4.  
Ta lokalizace asi bude řešitelná pouze přes vlastní preview form.
Název: Re:Ravereport - lokalizácia
Přispěvatel: Stanislav Hruška 06-08-2012, 09:07:38
Zobrazenie som vyriešil pomocou Repaint. Nakoniec som sa rozhodol na to of vykašľať.