Autor Téma: Ravereport - lokalizácia  (Přečteno 6339 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Ravereport - lokalizácia
« kdy: 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
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #1 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #2 kdy: 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?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #3 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #4 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #5 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #6 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #7 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #8 kdy: 26-07-2012, 12:40:53 »
Skúsil som dfmedit (použil som ť ) a vyzerá to v poriadku.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #9 kdy: 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"?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #10 kdy: 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ě.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #11 kdy: 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 '
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mirus

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 12
    • Verze Delphi: Delphi 10.2
Re:Ravereport - lokalizácia
« Odpověď #12 kdy: 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.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ravereport - lokalizácia
« Odpověď #13 kdy: 27-07-2012, 16:04:09 »
Vôbec tomu nerozumiem, ale tu predpokladám preklep  omCreate: omShow: - onCreate: onShow:
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2622
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Ravereport - lokalizácia
« Odpověď #14 kdy: 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