AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FastReport in Projekt verwenden wenn Ziel auch Android ist
Thema durchsuchen
Ansicht
Themen-Optionen

FastReport in Projekt verwenden wenn Ziel auch Android ist

Ein Thema von tdeck · begonnen am 31. Aug 2022 · letzter Beitrag vom 1. Sep 2022
Antwort Antwort
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
67 Beiträge
 
Delphi 11 Alexandria
 
#1

FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 12:04
Hallo Leute,

ich stehe vor einem kleinen Problem. Mein aktuelles Projekt hat als Ziel Windows und Android.
Unter Windows möchte ich dem User ermöglichen einen Ausdruck mit FastReportFMX zu erstellen.

Unter Windows funktioniert das auch recht gut.
Wenn ich nun als Ziel Android auswähle erhalte ich "[DCC Fataler Fehler] AppMain.pas(14): F2613 Unit 'FMX.frxClass' nicht gefunden."

ALso habe ich in der Uses Anweisung das Ganze erweitert:

Code:
  {$ifdef MSWINDOWS} ,FMX.frxClass  {$endif MSWINDOWS} // Nur bei Windows, nicht bei Android
Die anderen Reportfunktionen habe ich ebenfalls mit dieser Compileranweisung ausgeklammert.

In der TForm Class ebenfalls:
Code:
...
{$ifdef MSWINDOWS} FR: TfrxReport; {$endif MSWINDOWS}
...
Aber beim übersetzen wird die "uses" immer wieder um diesen Text erweitert: "FMX.frxClass" und führt
beim übersetzen natürlich zum Fehler.

Ein Versuch diese Compileranweisung in dem Formular über die Report-Komp. (TfrxReport) einzubinden, mit
"Ansicht Formular als Text". Hat bei meinen Versuchen zur Zerstörung des Formulars geführt.
Angeblich konnte das Formular nicht gespeichert werden wegen ungültiger Zeichen.
Selbst das löschen der Einträge konnte diesen Defekt nicht mehr Rückgängig machen.
Ich musste das Formular aus einen SCCS-System zurücksichern.

Wie bekomme ich das sauber hin, dass diese Komponente bei Android als Ziel für den
Editor/Compiler nicht mehr vorhanden ist?
Gibt es da irgendwo einen Trick?

Thorsten
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 12:12
Wie bekomme ich das sauber hin, dass diese Komponente bei Android als Ziel für den
Editor/Compiler nicht mehr vorhanden ist?
Gibt es da irgendwo einen Trick?
Die Komponente erst zur Laufzeit erzeugen, nicht im Designer auf die Form legen.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
67 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 12:35
Wie bekomme ich das sauber hin, dass diese Komponente bei Android als Ziel für den
Editor/Compiler nicht mehr vorhanden ist?
Gibt es da irgendwo einen Trick?
Die Komponente erst zur Laufzeit erzeugen, nicht im Designer auf die Form legen.

Sherlock
Hallo Sherlock,

ok, das schaue ich mir mal an. Das erstellen der Komponente kann ich ja dann im FormCreate machen.
Problem ist hier wahrscheinlich nur, das ich nicht mehr in den Fast-Report Designer komme.
In der Embarcadero-Version funktioniert der Designer-Aufruf wohl nicht aus dem Programm, sondern nur
auf der Komponente im Kontextmenü. Die Vollversion möchte ich mir noch nicht kaufen, solange ich nicht
sicher sagen kann das alles gut funktioniert. Aber dafür kann ich mir erstmal ein kleines Programm erstellen
um den Designer mit dem Formular getrennt zu starten.

Thorsten
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 12:58
Ja, im Prinzip musst Du das Design des Formulars in einer anderen App erledigen, und das Formular dann zur Laufzeit in der eigentlichen App laden. Das sollte eigentlich gehen, mit Reports habe ich seit Ewigkeiten nichts mehr gemacht.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
67 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 13:15
Hallo Sherlock,

ich habe mich vor langer Zeit mal mit dem generieren von Komponenten zur Laufzeit beschäftigt.
Ich muss doch eigentlich die erstellte Fastreport-Komponente beim Parent TForm1 eintragen oder?

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {$ifdef MSWINDOWS}
  Form1.Width:=Round(Screen.WorkAreaWidth);
   Form1.Height:=Round(Screen.WorkAreaHeight);
    AppFilePath := ExtractFilePath(ParamStr(0));

  FR             := TfrxReport.Create(Self);
  FR.Parent      := Self;
  {$endif MSWINDOWS}
end;
...
...
...
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  {$ifdef MSWINDOWS}
    Fr.Free;
  {$endif MSWINDOWS}
end;
...
Die Zeile "FR.Parent := Self;" führt zum Fehler "[dcc32 Fehler] AppMain.pas(604): E2010 Inkompatible Typen: 'TfrxComponent' und 'TForm1'"

Lass ich das FR.Parent weg, scheint es zwar zu funktionieren, bin mir aber nicht sicher ob das auf Dauer ok ist.

Thorsten
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 13:20
Ja, der Parent sollte eigentlich das sein, wo der Report drauf liegt. Auch beim Create solltest Du den Owner mit angeben, also wieder die Form.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#7

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 13:20
TfrxReport.Create(Self);

Free nicht nötig


Zitat:
FormClose(Sender: TObject; var Action: TCloseAction);
Aber wenn, dann hätte es ins OnDestroy gehört, da im Create erstellt.

Wird die Form direkt mit Free/Destroy freigeben, dann wird OnClose garnicht mehr aufgerufen.



Zitat:
Form1.Width:=
Du bist schon in der Form ... darin benutzt man niemals die globale Variable.

Width:=
oder
Self.Width:=
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Aug 2022 um 13:24 Uhr)
  Mit Zitat antworten Zitat
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
67 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 13:49
Hallo Sherlock,

danke für die Idee mit der Laufzeitgenerierung

TfrxReport.Create(Self);

Free nicht nötig
Hallo himitsu,

danke für die Info

Zitat:
Form1.Width:=
Du bist schon in der Form ... darin benutzt man niemals die globale Variable.

Width:=
oder
Self.Width:=
Ja, ich weiss und trotzdem passiert es mir beim schreiben immer wieder mal

Thorsten
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#9

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 31. Aug 2022, 14:01
Ja, der Parent sollte eigentlich das sein, wo der Report drauf liegt.
Das gilt nur für TWinControl . TfrxReport ist aber keins: TfrxReport -> TfrxComponent -> TComponent
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: FastReport in Projekt verwenden wenn Ziel auch Android ist

  Alt 1. Sep 2022, 09:10
Ja, der Parent sollte eigentlich das sein, wo der Report drauf liegt.
Das gilt nur für TWinControl . TfrxReport ist aber keins: TfrxReport -> TfrxComponent -> TComponent
Ups! Ich ziehe mich auf meine Aussage zurück, lange nichts mehr mit Reports getan zu haben.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz