| Autor |
Beitrag |
LonghornUser
      
Beiträge: 796
|
Verfasst: Mi 01.02.06 18:58
Hallo,
Ich habe hier eine Navigation, die im oberen Bereich des Programmes ist und unten ist das Fenster, was dann wie eine Art Frame immer wechselt, je nach dem was man in der Navi angeklickt hat.
Aber es gibt da ein Problem: Beim Umschalten flackert es immer sehr stark, was nicht wirklich schön aussieht (die einzelnen bildschirme habe ich über Panels realisiert, welche mit einem großen (400 mal 600) Image bedeckt ist.
Kann man das Bild eventuell irgendwie "vorladen", damits nicht flackert ?
Danke schonmal für alle Hilfe.
Ciao LonghornUser.
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 01.02.06 19:04
|
|
MrFox
      
Beiträge: 208
WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
|
Verfasst: Mi 01.02.06 19:05
FormX.DoubleBuffered := true in OnCreate aufrufen dürfte helfen. Einfach mal probieren...
_________________ Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Mi 01.02.06 19:49
Mhm, funktioniert irgendwie nicht.
Ich erklärs am besten nochma etwas grafisch:
Immer wenn ich auf einen Navi eintrag klicke, wird unten der Frame aktualisiert. Aber es flackert immer brutal, obwohl die JPEGs, die in den 3 verschiedenen Panels sind je nur 8 KB groß sind. Woran kann das liegen ?
|
|
MrFox
      
Beiträge: 208
WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
|
Verfasst: Mi 01.02.06 19:53
Wäre glaube ich sehr hilfreich wenn du uns mal die EXE-Datei hochladen könntest.
_________________ Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
|
|
Sinspin
      
Beiträge: 1340
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Mi 01.02.06 19:57
ich kenne das problem, bzw. habe es auch. allerdings nur unter WinXP.
ich habe ein programm in dem auf einem image verschiedene grafiken angezeigt und verschoben werden können. unter win2000 gibt es beim neu zeichnen keine probleme. unter WinXP ist es grotten lahm und flagert extrem.
auch bei anderen programmen bei denen ein großes bild bearbeitet wird habe ich das problem schon gehabt.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Mi 01.02.06 21:12
OK. Ich habs mal angehangen als RAR. Wenn man die Buttons klickt, sieht man was ich meine.
Einloggen, um Attachments anzusehen!
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 01.02.06 22:15
Versuch mal am Anfang der procedure
Delphi-Quelltext 1:
| LockWindowUpdate(DeinFenster.Handle); |
und am Ende
Delphi-Quelltext
Funktioniert das nicht?
|
|
Danniolo
      
Beiträge: 693
|
Verfasst: Mi 01.02.06 22:45
Nur so als Tipp: was wäre mit einem "TPageControl", soweit ich weiß flackert das net so... 
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Mi 01.02.06 22:48
@Coder: Nein, das geht nicht. Ich habs nochmal eingebaut, aber es ging nicht.
Was kann ich tun ? Kann man das nicht irgendwie "vorladen" ?
Zuletzt bearbeitet von LonghornUser am Mi 01.02.06 22:52, insgesamt 1-mal bearbeitet
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 01.02.06 22:51
Vielleicht wenn du die Panels alle hintereinander lässt und
per SendToBack und BringToFront sichtbar machst.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Mi 01.02.06 22:56
@ Danniolo: Das flackert leider genauso
@ Coder: Auch das bringt nix.
Ihr könnt es ja mal auf euren Rechnern probieren. Ich verzweifel langsam  Irgendwie liegt es daran, dass der rechner die großen images nicht so schnell laden kann. Aber es sind doch nur 8 KB. Das wird doch wohl möglich sein ?
|
|
Danniolo
      
Beiträge: 693
|
Verfasst: Mi 01.02.06 23:18
Sind die Images auf Strech eingestellt?
Dann wäre es nämlich kein Wunder, dass sie flackern...
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Do 02.02.06 00:33
Nein, kein Stretch ist aktiviert. Ich habe das ganze Projekt mal angehangen.
Einloggen, um Attachments anzusehen!
|
|
Alpha_Wolf
      
Beiträge: 297
Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
|
Verfasst: Do 02.02.06 08:03
Bei Bildern reicht es meistens nicht nur die Form zu "double buffern"
probier das mal aus.. Am besten ins on Create.. vielleicht hilfts ja
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ... var lCounter: integer; begin for lCounter:= 0 to ComponentCount-1 do begin if Components[lCounter].InheritsFrom(TWinControl) then begin TWinControl(Components[lCounter]).DoubleBuffered:= true; end; end; end; |
Edit:
Hatte doch ma kurz Zeit in dein Projekt zu gucken... vergiss was ich oben gesagt habe(kann dir aber später vielleicht nochmal helfen).. du musst einfach die Reihenfolge des sichtbar/unsichtbar setzen der Panels umdrehen.
Hier der verbesserte Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); begin panel1.Visible:=true; panel2.Visible:=false; end;
procedure TForm1.Button2Click(Sender: TObject); begin panel2.Visible:=true; panel1.Visible:=false; end; |
_________________ Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Do 02.02.06 15:06
@ Alpha Wolf: Beides hat nichts genützt. Es flackert immernoch:
Immer, wenn man auf einen der beiden Panels klickt, wird die Form erst extrem kurz (aber sichtbar) grau und dann kommt das andere Panel.
Aber eine Idee hätte ich noch. Gibts eventuell eine Möglichkeit, vom einen ins andere Panel zu "faden" (sanfter Übergang). Also, dass das im Vordergrung befindliche Panel immer transparenter wird. Geht sowas ?
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 02.02.06 15:28
_________________ We are, we were and will not be.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Do 02.02.06 16:19
Ach panel1.doublebuffered. Ich dachte Form1.doublebuffered  Jetzt gehts wunderbar. Zumindest in meinen Tesprojekt. Aber aus irgendeinem Grund gehts in meinem HauptProggramm nicht (was ich leider nicht hochladen darf).
Gibts nicht irgendeinen(e) Befehl / Komponente, was ein bzw. ausblenden von Panels beherrscht ?
|
|
Alpha_Wolf
      
Beiträge: 297
Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
|
Verfasst: Do 02.02.06 20:11
LonghornUser hat folgendes geschrieben: | @ Alpha Wolf: Beides hat nichts genützt. Es flackert immernoch:
Immer, wenn man auf einen der beiden Panels klickt, wird die Form erst extrem kurz (aber sichtbar) grau und dann kommt das andere Panel.
|
Hmm bei mir gings einwandfrei..hatte ja dein Projekt runtergteladen.. hatte ja zuerst auch Double Buffered vorgeschlagen allerdings für alle Komponenten..
Guck mal bei den JEDI Kompos(Suche benutzen) vielleicht findest du da was..
Sonst wüsste ich eigentlich nicht was dir noch weiterhelfen könnte denn normalerweise dürfte es keinen unterschied machen obs in deinem testprogramm oder in deiner Hauptanwendung ausführst..
Probier doch einfach mal in Verbindung mit Gausi's Code und meinem Double Buffered Code für alle Komponenten in deiner Hauptanwendung aus.
Es gibt auch noch kostenpflichtige Komponenten die dieses Look&Feel hinbringen aber dennoch denke ich das falls es ohne flackern nicht geht die Vorgabe auch ändern kann..(evtl. PageControl oder ähnliches) schließlich ist da so viel nicht um.. 
_________________ Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.
|
|