Wir haben bei uns aktuell LL28 und haben folgendes Problem.
Wenn ich einen PDF Drucker ausgewählt habe, und dann Drucke, erscheint das Fenster Druckausgabe Speichern unter. Früher (LL20) war das so, dass dieses Fenster Modal im Vordergrund erschien und ich im Hintergrund nichts mehr bearbeiten konnte, was so richtig war. Jedoch jetzt bei LL28 erscheint es teilweise im Hintergrund und ich kann den Dialog welcher nicht bearbeitbar sein sollte, editieren. Auch kann ich dann keinen Dateinamen zum Speichern eingeben. Für mich ist das eine BlackBox, da die Anzeige des Speichern unter Fenster von LL ausgeführt wird. Hat da jemand eine Lösung oder evtl. eine Info dazu ob sich da was geändert hat? Vielen Dank.
Codeaufruf welcher danach das Speichern unter Fenster anzeigt:
Result := cmbTLl28.LlPrintEnd(hTheJob, AdditionalPages);
**procedure TReportSystemListLabel.Print(OutputType: TReportOutputType;** doPrint: Boolean = True);
begin
if (FCopies = 0) then
OutputType := rotNone;
if (OutputType = rotNone) then
FHasPrinted := True;
try
DoPrintStart(OutputType);
PrintListOrLabel();
if doPrint then
FLL.LlPrintEnd(0);
except
on Ex: Exception do
begin
try
FLL.LlPrintAbort();
except
end;
raise Exception(AcquireExceptionObject());
end;
end;
CreateArchiveFile(OutputType);
if (OutputType = rotPreview) or (OutputType = rotOnlyPreview) then
ShowPreview();
end;
**procedure TReportSystemListLabel.DoPrintStart(OutputType: TReportOutputType);**
begin
if (OutputType = rotNone)
or (FArchiveFilename <> '') then // Zum archivieren ist eine LL erfoderlich...
PrintStart(LL_PRINT_PREVIEW)
else
if OutputType = rotPrint then
PrintStart(LL_PRINT_NORMAL)
else
if OutputType = rotPreview then
PrintStart(LL_PRINT_PREVIEW)
end;
**procedure TReportSystemListLabel.PrintStart(PrintOptions: Integer);**
var
ReturnValue: Integer;
begin
if (IsListe()) then
PropagateTables();
FLL.LlDefineVariableStart();
PropagateVars();
if (IsListe()) then
begin
if (not Assigned(FOnDefineFields)) then
raise Exception.Create('Dem Ereignis OnDefineFields ist keine Ereignisbehandlungsroutine zugewiesen.');
if (not Assigned(FOnSetFields)) then
raise Exception.Create('Dem Ereignis OnSetFields ist keine Ereignisbehandlungsroutine zugewiesen.');
FLL.LlDefineFieldStart();
CallOnDefineFields();
CallOnSetFields(True);
PropagateFields();
end;
if (FTextWaitingDialog = '') then
Check(FLL.LlPrintStart(FProjectType, FFileName, PrintOptions),
'LlPrintStart(' + IntToStr(FProjectType) + ', ''' + FFileName + ''', ' + IntToStr(PrintOptions) + ')')
else
Check(FLL.LlPrintWithBoxStart(FProjectType, FFileName, PrintOptions,
LL_BOXTYPE_EMPTYWAIT, 0, FTextWaitingDialog),
Format('LlPrintWithBoxStart(%d, ''%s'', %d)',
[FProjectType, FFileName, PrintOptions]));
ReturnValue := FLL.LlPrintGetOption(LL_PRNOPT_COPIES_SUPPORTED);
Check(ReturnValue, 'LlPrintGetOption(LL_PRNOPT_COPIES_SUPPORTED)');
if (ReturnValue = 1) then
Check(FLL.LlPrintSetOption(LL_PRNOPT_COPIES, IfThen(FCopies <= 0, 1 , FCopies)),
Format('LlPrintSetOption(LL_PRNOPT_COPIES, %d)', [IfThen(FCopies <= 0, 1 , FCopies)]));
end;
Vielen Dank für deinen Input. Da FTextWaitingDialog = ‘’ ist, wird dieser Code jedoch nicht ausgeführt und somit wird dieser Code stattdessen ausgeführt.
Ich habe nun zu Testzwecken FTextWaitingDialog gesetzt damit der besagte Code mit PrintwithBoxStart ausgeführt wird und damit klappt es, somit habe ich schonmal eine mögliche Lösung.
Gibt es auch einen Weg damit es mit diesem Aufruf funktioniert?
Wenn der Dialog zum Abbruch nicht angezeigt werden soll könntest du einmal versuchen, dennoch LlPrintWithBoxStart zu verwenden, aber als boxtype-Parameter LL_BOXTYPE_NONE zu übergeben. Das sollte eigentlich das gleiche Ergebnis liefern.