Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Darstellung flackert (https://www.delphipraxis.net/187108-darstellung-flackert.html)

p80286 28. Okt 2015 10:44

Darstellung flackert
 
hallo zusammen,
ja ich weiß, es gibt jede Menge Threads dazu, aber die guten Ratschläge darin sind wohl teilweise überholt.
Delphi-Quellcode:
procedure Hierwird_in_einem_Thread_gearbeitet;
begin
  ....
  postmessage(fhandle,cm_progress,i,inList.count-1);
end;

procedure TForm1.ShowCounter(aValue,maxvalue:integer);
begin
  L_Cnt.caption:=format(' %d von %d ',[avalue,maxvalue]);
  L_Cnt.Repaint;
end;

procedure TForm1.CMProgressBytes(var msg:TMessage);
begin
  ShowCounter(msg.WParam,msg.LParam);
end;
Anstatt einer schön sauberen Darstellung, holpert und stolpert der Zähler, wobei es wohl so ist, das die Darstellung, falls die Anwendung nicht den Focus hat, "Nichts/Ziffern/nichts" ist und wenn Sie den Focus hat, daß es dann "..Ziffern/Ziffern/nichts/Ziffern/Ziffern..." ist.

das Programm wurde mit D7 compiliert, läuft unter W7 und hat ein externes W7 Manifest.
mit doublebuffer ist der Effekt genauso und die Darstellung durch "Trauerränder" verunstaltet.
Ohne Manifest ist die Darstellung wie erwartet, nur eben W95-like.

Habt Ihr eine Ahnung wo man/ich da noch drehen könnte?

Gruß
K-H

TiGü 28. Okt 2015 11:25

AW: Darstellung flackert
 
Ersetze testhalber mal das TLabel mit einen TPanel gleicher Größe.
Nur TPanel hat ja eine DoubleBuffered Eigenschaft.

Außerdem würde ich noch prüfen, ob sich wirklich was geändert hat (if alterWert <> neuerWert then...), sonst aktualisiert du die Beschriftung möglicherweise unnötig und es flackert zusätzlich (mehr).

Roadmap 28. Okt 2015 11:46

AW: Darstellung flackert
 
Poste bitte mal das Manifest, evtl. liegt der "Hund" da begraben!

Ich hatte sowas mal in meiner D7 Applikation.

p80286 28. Okt 2015 11:58

AW: Darstellung flackert
 
Zitat:

Zitat von TiGü (Beitrag 1319946)
Ersetze testhalber mal das TLabel mit einen TPanel gleicher Größe.
Nur TPanel hat ja eine DoubleBuffered Eigenschaft.

wäre noch eine Möglichkeit, da das Form.doublebuffered die genannten Effekte zeigt.

Zitat:

Zitat von TiGü (Beitrag 1319946)
Außerdem würde ich noch prüfen, ob sich wirklich was geändert hat (if alterWert <> neuerWert then...), sonst aktualisiert du die Beschriftung möglicherweise unnötig und es flackert zusätzlich (mehr).

Das zumindest kann ich definitiv ausschließen, PostMessage bekommt immer unterschiedliche Werte.

Zitat:

Zitat von Roadmap (Beitrag 1319954)
Poste bitte mal das Manifest, evtl. liegt der "Hund" da begraben!

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    name="Private.Unknown.chk_epoline"
    type="*"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
(Das hab ich mit dem Manifest-Creator erstellt)

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 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