Autor Beitrag
LonghornUser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 01.02.06 19:04 
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Mi 01.02.06 19:49 
Mhm, funktioniert irgendwie nicht.
Ich erklärs am besten nochma etwas grafisch:
user defined image
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1340
Erhaltene Danke: 120

Win 10
RIO, CE, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 01.02.06 22:15 
Versuch mal am Anfang der procedure
ausblenden Delphi-Quelltext
1:
LockWindowUpdate(DeinFenster.Handle);					

und am Ende
ausblenden Delphi-Quelltext
1:
LockWindowUpdate(0);					


Funktioniert das nicht?
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Mi 01.02.06 22:45 
Nur so als Tipp: was wäre mit einem "TPageControl", soweit ich weiß flackert das net so... :wink:
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 01.02.06 22:51 
Vielleicht wenn du die Panels alle hintereinander lässt und
per SendToBack und BringToFront sichtbar machst.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Mi 01.02.06 23:18 
Sind die Images auf Strech eingestellt?
Dann wäre es nämlich kein Wunder, dass sie flackern...
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Do 02.02.06 00:33 
Nein, kein Stretch ist aktiviert. Ich habe das ganze Projekt mal angehangen.
Einloggen, um Attachments anzusehen!
Alpha_Wolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 297

Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
BeitragVerfasst: 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 ;)

ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 02.02.06 15:28 
So flackert bei mir nix mehr - hab einfach beide Vorschläge, die mir hier bisher sinnvoll vorkamen, kombiniert ;-)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject);
begin
panel1.Visible:=true;  // Erst sichtbar machen, dann unsichtbar
panel2.Visible:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
panel2.Visible:=true;
panel1.Visible:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  panel2.DoubleBuffered := True;
  Panel1.DoubleBuffered := True;
end;

_________________
We are, we were and will not be.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 297

Ubuntu, Win XP, Win Vista
C#, Delphi 6 Prof, Delphi 2007 Prof, Java
BeitragVerfasst: Do 02.02.06 20:11 
user profile iconLonghornUser 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.