Wait cursor beim Aufbau des Previews

Hallo,
leider sind die Reports stark angewachsen, so das es ein paar Sekunden dauert bis ein Inhalt im Previiew Fenster erscheint.

Ich würde daher gerne ein Waitcursor anzeigen bis der Report im report vollständig angezeigt wird.

Können Sie uns noch Details darüber geben wo/wie Sie die Vorschau anzeigen? In einer eigenen Form mit PreviewControl? WinForms? WPF? Haben Sie IncrementalPreview auf true?

Danke für die Antwort
Ich habe nur wenig eingestellt, wie ich in einem Beispiel gefunden habe

    LL.PreviewControl = Me.ListLabelPreviewControl1
   'Dateiauswahl, variablenübergabe
    LL.AutoShowSelectFile = False
    LL.AutoShowPrintOptions = False
    LL.AutoDestination = LlPrintMode.PreviewControl
    LL.Print(LlProject.List, Application.StartupPath & reportdatei_xps)

Und ich nutze Winforms und das Previewcontrol ist in einem eigenen Fenster

In diesem Fall müsste es eigentlich reichen, direkt vor dem Aufruf von Print folgendes zu machen:

Cursor = Cursors.WaitCursor
Application.DoEvents()

und danach dann

Cursor = Cursors.Default

Können Sie das einmal testen? Ansonsten müsste ich einmal versuchen, das hier nachzustellen.

Nein,
es erscheint der wait cursor, der dann wieder auf default wechselt, bevor ca 40 Sekunden man auf ein leeres Prieview Control schaut.

Zu dem Zeitpunkt nach ca 40 Sekunden sind dann 1 von 5 Seiten in dem Seitenanzahlbereich .

Nach wieder etwas Wartezeit erscheint dann dort 1 von 210 Seiten
Und das ist dann der komplette bis dahin fertiggestellte Report.

Das Problem tritt auch beim Export auf, bei grösseren Projektem dauert das und der Cursor bleibt auf Default(Nachdem ich es vorher auf Waitcursor umgestellt habe).

Das Programmicon in der Taskleiste zeigt ein Fortschrittbalen an.

iconlaufbalken

Daher hoffe ich das auch ein Waitcursor machbar ist.

Wir werden uns das ansehen. Meines Wissens haben wir Ihre Anwendung gerade wegen einer anderen Frage ohnehin im Support vorliegen. Ich werde mich hier dann noch einmal melden und bitte um etwas Geduld.

Wir haben hierzu die neuen Optionen LS_OPTION_MOUSEMODE 26 und LS_OPTION_MOUSE_WAIT 4 eingeführt.

Nun kann bei Bedarf der Wait Modus explizit genutzt, und nach dem Print zurückgesetzt werden. Der Mode kann nur programmatisch gesetzt werden. Die Controls zum Moduswechsel (Hand, Zoom, Text) sind dann solange “disabled”.

Eine Implementierung könnte z.B. folgendermaßen aussehen:

private void btnPrintToPreviewControl_Click(object sender, EventArgs e)
    {
        try
        {
            if (LL.PreviewControl == null)
                LL.PreviewControl = previewControl;

            LL.AutoProjectFile = "template.lst";
            LL.AutoShowSelectFile = false;
            LL.AutoShowPrintOptions = false;
            LL.AutoDestination = LlPrintMode.PreviewControl;

            Cursor = Cursors.WaitCursor;
            Application.DoEvents();

            previewControl.SetOption((IntPtr)26, (IntPtr)4);

            LL.Print();

            previewControl.SetOption((IntPtr)26, (IntPtr)2);

            Cursor = Cursors.Default;
        }
        catch (ListLabelException exc)
        {
            MessageBox.Show(exc.Message, exc.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

Der Wait Cursor ist, während der Bericht geladen wird, beim “hovern” über dem Control nun sichtbar. Wurde der Bericht vollständig geladen, wird der Cursor zurückgesetzt.

Die neuen Optionen werden Teil des kommenden Service Packs für List & Label 25 sein.

@Pedro_Lopes_da_Costa Wir werden Ihnen die aktualisierten Module speparat über das Support-Portal zur Verfügung stellen.

1 Like

Unter Vb NET sieht das ganze dann so aus, falls jemand mal danach sucht

   LL.PreviewControl = Me.ListLabelPreviewControl1
    LL.AutoShowSelectFile = False
    LL.AutoShowPrintOptions = False
    Cursor = Cursors.WaitCursor
    Application.DoEvents()
    Me.ListLabelPreviewControl1.SetOption(CType(26, IntPtr), CType(4, IntPtr))
    LL.Print(LlProject.List, "report.lst")
    Me.ListLabelPreviewControl1.SetOption(CType(26, IntPtr), CType(2, IntPtr))
1 Like