AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rave Report nicht modal benutzen.

Ein Thema von Peter-Ziegler · begonnen am 7. Okt 2004 · letzter Beitrag vom 14. Okt 2004
Antwort Antwort
Peter-Ziegler

Registriert seit: 7. Okt 2004
7 Beiträge
 
#1

Rave Report nicht modal benutzen.

  Alt 7. Okt 2004, 09:24
Hallo Forum,

(Hallo Thomas von Team Nevrona, hoffentlich liest er mit

ich benütze den Rave Report 5.0.8 mit Delphi 7.1.1.und
versuche den Rave Report nicht modal zu benutzen,
damit die Hauptanwendung nach RvProject.Execute; weiter bedienbar bleibt.
Leider klappt das nicht!!

Hat jemand dazu einen Tip?
@Thomas: Kann man das mit der kostenpflichtigen BEX Version erreichen?

Folgendes hab' ich schon ausprobiert:
1.) Den Rave Report in einem extra Thread (TThread) starten
Das führte zu sporadischen Laufzeitfehlern,
obwohl laut einigen Posts Rave threadsicher sein soll, solange man keine DataViews benützt.

2.) TCriticalSection benützen
RvProject.Execute und andere Code Teile wurden im Thread innerhalb einer CriticalSection aufgerufen.
Gleiches Verhalten.

3.) Ersetzen des Rave System-Formulars durch ein eigenes
Hat auch nichts bewirkt.

Danke und Gruß
Peter
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Rave Report nicht modal benutzen.

  Alt 8. Okt 2004, 09:04
Peter,

Zitat:
hoffentlich liest er mit
ja er liest ab und zu mit

Zitat:
versuche den Rave Report nicht modal zu benutzen,
was genau willst du erreichen?
meistens gehen die Fragen in Richtung DataView und den zwei unterschiedlichen anbindungsmöglichkeiten,
aber hier hast du ja schon recherchiert....
geht es Dir nur um die Preview-anzeige und das du mehrere Previewfenster offen haben kannst??

thomas, TeamNevrona
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
Peter-Ziegler

Registriert seit: 7. Okt 2004
7 Beiträge
 
#3

Re: Rave Report nicht modal benutzen.

  Alt 8. Okt 2004, 09:17
Hallo Thomas,

der Wunsch ist, daß aus der Hauptanwendung (MDI-Anwendungsformular mit Child-Formularen) ein Druckdialog aufgerufen werden kann und
dabei die Anwendung nicht blockiert wird, d. h. sie muß parallel weiterhin bedienbar sein.

Am einfachsten wäre das zu erreichen, wenn Rave Report, wie die anderen Child-Formulare, als MDI-Child nicht-modal aufgerufen
werden könnte. Dazu habe ich keine Möglichkeit gefunden.

Eine andere Möglichkeit ist, Rave Report in einem eigenen Thread (TThread) aufzurufen, dadurch wäre die MDI-Anwendung auch nicht blockiert.
Hat im Prinzip auch funktioniert, aaabbbeeer es gab sporadische Laufzeitfehler.

Gruß
Peter
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Rave Report nicht modal benutzen.

  Alt 8. Okt 2004, 09:26
Hallo,
und wenn du rave "einfach" in einer Scrollbox in einem von deinen Formularen einbettest und die div. Einstellung selber triffst bzw. in deiner Anwendung vom Anwender abfragst....:

thomas

einfach mal nachfolgenden Code testen (habe ich gerade auf die schnelle geschrieben, nicht getestet...:

Code:
var
  MeinNDRStream: TMemoryStream;
begin
  MeinNDRStream := TMemoryStream.Create;
  RvProject1.Open;
  RvProject1.Engine := RvNDRWriter1;
  with RvNDRWriter1 do
  begin
    StreamMode := smUser;
    Stream := MeinNDRStream;
  end;
  RvProject1.Execute;
  MeinNDRStream.Position := 0;

  with RvRenderPreview1 do
  begin
    ScrollBox := ScrollBox1;
    NDRStream := MeinNDRStream;
    Render;
  end;
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
Peter-Ziegler

Registriert seit: 7. Okt 2004
7 Beiträge
 
#5

Re: Rave Report nicht modal benutzen.

  Alt 8. Okt 2004, 10:58
Hallo Thomas,

so, den Vorschlag musste ich jetzt erst mal verdauen

Anmerkung/Probleme:

1.) Wir haben ein grösseres Projekt.
Das MDI-Hauptfenster und auch andere Projekte mit anderen Umfeld (COM-Server) sollen
unabhängig eine Druck-Unit benützen können mit möglichst einfacher Schnittstelle.
D. h. die Druck-Unit erzeugt (dynamsisch) alle notwendigen Rave Objekte.
Ich müsste also vieles (was genau? (Setup-, Preview-Fenster, Druckersteuerung?)) nachbauen. Was ist das für ein Aufwand?

2.)
Mit obiger Randbedingung und deinem Vorschlag, blockiert dann der Druck-Aufruf wirklich nicht wieder den Haupt-Thread?
Ich sehe da im Moment keinen prinzipiellen Unterschied zu meiner bisherigen Lösung.
Wo liegt der Unterschied? Wegen eigenem TMemoryStream und/oder RvNDRWriter, RvRenderPreview?

Und wenn ich dann wieder einen zusätzlichen Thread erzeuge, gibt es dann nicht wieder die Laufzeitfehler,
weil RvProject1.Execute; weiterhin nicht threadsicher ist?

3.) Mein eigener Vorschlag ist,
dass ich die Druck-Unit/Interface in einen extra COM-Server packe,
den dann die Clients (Anwendungen) benachrichtigen.
Wie ist deine Meinung dazu?

Gruß
Peter
  Mit Zitat antworten Zitat
Peter-Ziegler

Registriert seit: 7. Okt 2004
7 Beiträge
 
#6

Re: Rave Report nicht modal benutzen.

  Alt 14. Okt 2004, 10:27
Hallo allerseits,

hier ist eine Lösung zum Problem: Rave nicht-modal zu benützen, ohne die Anwendung zu blockieren.

1.) Ein COM-Objekt (Server) erstellen, das die ganzen Rave Aufrufe durchführt.

2.) In der Anwendung, die Schnittstelle des COM-Objekts (Server) in einem extra Thread aufrufen.
Wichtig ist beim Thread, damit COM funktioniert, vor dem COM-Aufruf die Funktion CoInitializeEx( nil, COINIT_MULTITHREADED )
der Unit ActiveX aufzurufen. Nach dem COM-Aufruf dann CoUnInitialize aufrufen.

Rave läuft dann unabhängig von der Applikation in einem extra (Haupt)-Fenster und
ich hatte bisher keine Laufzeitfehler mehr.

Vielen Dank an Thomas für seine Beiträge
und Gruß an allle.
Peter Ziegler
  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 05:07 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