Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: crystal am November 02, 2016, 17:42:55

Titel: Register-Steuerelement und Echo
Beitrag von: crystal am November 02, 2016, 17:42:55
Hallo,

auf einer Seite eines Register-Steuerelements habe ich ein paar Pictures, die im Current-Event aktualisiet werden.

Damit der Bildschirm nicht flackert, habe ich am Anfang der betr. Routine "application.echo false" und am Ende "...echo true" eingefügt.

Das funktioniert aber nicht. Bei jedem Record-Wechsel blitzen die alten Bilder kurz auf, bevor die neuen dargestellt werden.

Wie kann ich das verhindern?

Danke im Voraus,

crystal

Edit: wenn ich kein Reg.-Steuerelement benutze, sondern die Pictures direkt im Formular platziere, funktoniert es.
Titel: Re: Register-Steuerelement und Echo
Beitrag von: Josef P. am November 02, 2016, 18:10:43
Hallo!

Wie stellst du die Bilder ein und welche Access-Version verwendest du?
Anm.: ab 2010 (oder schon ab 2007?) kann man ein Bildsteuerelement an die Datenquelle binden und muss per Code nichts machen.

BTW: Application.Echo ist schon ein wenig "Methode Brutalo" ;)
Me.Painting = false/true würde sich bei einem Formular auch anbieten.

mfg
Josef
Titel: Re: Register-Steuerelement und Echo
Beitrag von: crystal am November 02, 2016, 18:36:46
Hallo Josef,

vielen Dank für deine Antwort.

Ich arbeite mit Acc2016.
Eine Bindung an Datenfelder ist nicht möglich; die Namen der Bilder werden zur Laufzeit gebildet und dann so zugewiesen:


...
    Me.Form.Painting = False
    strDirImages = Application.CurrentProject.Path & "\mp\" & ...
...
    For i = 1 To 5
        strFile = strDirImages & "th" & i & ".jpg"
        If fso.FileExists(strFile) Then
            If i = 5 Then
                btnNextT.Visible = True
            Else
                btnNextT.Visible = False
                Me.Controls("th" & i).Picture = strFile
            End If
        Else
            If i < 5 Then Me.Controls("th" & i).Picture = ""
        End If
    Next



Es können jeweils max. 4 Bilder dargestellt werden, aber mehr als 4 vorhanden sein (th1 bis thx).

Application.echo hatte ich versucht, weil man docmd.echo laut MSDN nicht mehr benutzen soll.
Ich habs auch mit reg...visible=false probiert, ohne Erfolg.

Titel: Re: Register-Steuerelement und Echo
Beitrag von: Josef P. am November 02, 2016, 18:46:01
ZitatEine Bindung an Datenfelder ist nicht möglich
Das "ist nicht möglich" glaub ich nicht. Ein "ist nicht gewollt" kann ich akzeptieren. ;)
Du könntest z. B. die Bilder in einem Unterformular darstellen und dort die Datenquelle so aufbereiten, dass 4 Bilder in 4 Feldern je Datensatz verfügbar sind. Der nächste 4er-Block kommt dann im nächsten Datensatz.

Anm.: ich machte auch schon die Erfahrung, dass Access 2016 bei Bildern mehr flackert als Access 2010. Nur bei der Verwendung der "eingebetteten Bildern" gab es kein Geflackere.

mfg
Josef
Titel: Re: Register-Steuerelement und Echo
Beitrag von: crystal am November 02, 2016, 19:05:14
Hallo Josef,

ZitatDas "ist nicht möglich" glaub ich nicht. Ein "ist nicht gewollt" kann ich akzeptieren.
Du könntest z. B. die Bilder in einem Unterformular darstellen und dort die Datenquelle so aufbereiten, dass 4 Bilder in 4 Feldern je Datensatz verfügbar sind. Der nächste 4er-Block kommt dann im nächsten Datensatz.

"Nicht gewollt" ist OK, denn das würde größere Änderungen  in der Anwendung bedeuten...

Egal, wie ich den Bildtyp setze (eingebettet, verknüpft, freigegeben) - am Flackern ändert sich nichts.

Und es flackert nur bei Verwendung des Reg.-Elements. Vielleicht sollte ich einfach ein Rechteck drüber legen und mit .visible arbeiten. Mal probieren.

Guß
crystal
Titel: Re: Register-Steuerelement und Echo
Beitrag von: Josef P. am November 02, 2016, 19:12:15
Oder du legst die Bilder über das Registersteuerelement und blendest sie je nach Registerseite ein oder aus.

Vielleicht hilft der Umweg über ein Unterformular.
Ein ungebundenes Unterformular ins Register legen und dem die 4 Bildpfade übergeben, damit die Bilder in diesem Formular dargestellt werden.
Ab das etwas hilft, weiß ich nicht. Ist mir nur so eingefallen. ;)

mfg
Josef
Titel: Re: Register-Steuerelement und Echo
Beitrag von: crystal am November 02, 2016, 19:28:02
Hallo Josef,
mein Versuch mit einem Rechteck, das das ganze Reg.-Element überdeckt, hat auch nicht geklappt.

Es scheint so zu sein, das ein Reg.-Element immer als letztes beim Rendern dargestellt wird, denn auch Versuche mit den Events BeforeRe0nder und AfterRender haben nicht geklappt.

Vielleicht hilft nur noch eine API-Funktion, aber welche?

Schade, dass manche Dinge nicht so funktionieren, wie man es erwarten würde...

Gruß

crystal
Titel: Re: Register-Steuerelement und Echo
Beitrag von: Josef P. am November 02, 2016, 19:34:32
Kannst du eine kleine Beispiel-Datenbank erstellen, bei der das Flackern zu sehen ist?

Anm.: da um 20 Uhr der Virtuelle Access-Stammtisch startet, hätte ich vielleicht ein paar weitere "Ideengeber" zur Verfügung. ;-)

LG
Josef
Titel: Re: Register-Steuerelement und Echo
Beitrag von: crystal am November 02, 2016, 19:44:53
Sorry Josef,

eine anonymisierte DB kann ich so schnell nicht erstellen. Und eben hat mein Nachbar geklingelt, weil er eine Überschwemmung in der Küche hat. Spülmaschine. Da muss ich jetzt schnell helfen, sonst tropft das Wasser durch die Decke in meine Wohnung.

Danke jedenfalls,

crystal
Titel: Re: Register-Steuerelement und Echo
Beitrag von: crystal am November 05, 2016, 22:05:33
Hallo,

hat jemand noch eine Idee?
Ich habe inzwischen viel gegoogelt und ein paar interessante Informationen gefunden (z.B. DoubleBuffer), aber diese gelten nicht für VBA.

Gibt es eine API-Funktion?
Oder gibt es ein Freeware-Tabcontrol, dass zu empfehlen wäre?

Vielleicht hat jemand einen Tipp.

Danke,

crystal