![]() |
schnelles Anzeigen von SpeedButtons
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe ein Formular, welches große teilweise deaktivierte Speedbuttons mit Grafiken enthält. Wenn diese Formular angezeigt wird, so ist gerade auf Rechnern mit Grafikkarte (Matrox und Ati getestet) der Aufbau sehr langsam. Auf einem Rechner mit Intel 815-Grafik war der Effekt nicht sichtbar. Wenn ich das Formular nun im Speicher lasse und nur immer wieder anzeige, geht der Aufbau immer schnell. Ich habe mal ein kleines Beispiel gemacht, anbei. Was mir noch auffiel: Wenn ich alle Speedbuttons deaktiviere, ist der Effekt besonders stark sichtbar, es braucht auf einem Athlon 1800 mit Matrox MGA 400 auf Windows XP über eine Sekunde zum Einblenden der 25 Speedbuttons. Hat jemand eine Idee, was ich dagegen machen kann, ausser das Formular permanent im Speicher lassen? |
Re: schnelles Anzeigen von SpeedButtons
Also ich muss sagen, dass ich keine Probleme hab!
(XP2800+, 1GB-Ram, GeForce4 Ti 4800) //angeb angeb :D |
Re: schnelles Anzeigen von SpeedButtons
Hallo Mario,
habe Deine Buttons statisch und dynamisch probiert. Kein Unterschied in der Darstellungsgeschwindigkeit erkennbar. Verwendet: XP2700+ auf Asrock-Mainboard K7S8X mit 512 MB RAM, 64 MB GF4 MX440 Versuch's doch mal mit einer anderen Grafikkarte auf Deinem Board bzw. Deine Grafikkarte auf einem anderen Board. Vielleicht läßt sich das Problem dann klären. mfg eddy |
Re: schnelles Anzeigen von SpeedButtons
hi
also ich kann mario zustimmen wenn man nur einen 1800 hat denn lässt sich da schon was erkennen! aber warum weis ich auch nicht |
Re: schnelles Anzeigen von SpeedButtons
Ich habe es mir gerade mal auf dem PIII600 meiner Frau angeschaut (SIS Grafikkarte mit 4MB :lol: )
... nicht zum Aushalten. Das komische ist, dass es auf meinem PIII 1000 mit onBoard Intel-Grafik gar keine Verzögerung zu erkennen ist. Ich denke also mal, dass es mit einigen Treiber schlechter und mit einige besser klappt. Da wir uns aber unsere Kunden nicht aussuchen können, wäre es natürlich schön, wenn ich es auf allen Rechnern flüssig bekomme! Noch mal zum Rechner mit 4MB Grafik. Wenn ich da statisch wähle, also das Form nicht mehr frei gebe, ist der zweite Aufruf flüssig! Wenn ich jetzt wüßte, wie ich sagen könnte: "Initialisiere Dich fix und fertig, so wie Du es nach OnShow machst", wäre mir schon sehr geholfen. |
Re: schnelles Anzeigen von SpeedButtons
Hallo Mario,
P3 600, 512 MByte Ram, Matrox Millenium G450 AGP, 16 MByte, NT 4.0 SP6: nur kurze Verzögerung beim Formularaufbau (ca 1-2 sec.) |
Re: schnelles Anzeigen von SpeedButtons
Jetzt habe ich es geknackt :firejump:
Also, an der Ladezeit lässt sich nix drehen, aber die Ladezeit kann ich fast vollständig ins OnCreate verlagern, also in den nichtvisuelle Teil! Dazu muss ich nur die Routine Loaded der Buttons nach dem Laden der Grafik aufrufen, damit die Glyphs initialisiert werden. Da diese ja aber private ist, muss halt ein kleiner Trick herhalten:
Delphi-Quellcode:
Dann ist der eigentliche Bildschirmaufbau sogar auf einem 600er flüssig.
interface
... type TWorkSpeedButton = class(TSpeedButton) end; ... implementation ... procedure LoadGrafik(aButton: TSpeedButton); var Rect: TRect; begin aButton.Glyph.LoadFromFile('test.bmp'); TWorkSpeedButton(aButton).Loaded; end; |
Re: schnelles Anzeigen von SpeedButtons
Versuch doch mal den Quelltext
Delphi-Quellcode:
So umzuschreiben:
procedure TForm2.FormCreate(Sender: TObject);
begin LoadGrafik(SpeedButton1); LoadGrafik(SpeedButton2); LoadGrafik(SpeedButton3); LoadGrafik(SpeedButton4); LoadGrafik(SpeedButton5); LoadGrafik(SpeedButton6); LoadGrafik(SpeedButton7); LoadGrafik(SpeedButton8); LoadGrafik(SpeedButton9); LoadGrafik(SpeedButton10); LoadGrafik(SpeedButton11); LoadGrafik(SpeedButton12); LoadGrafik(SpeedButton13); LoadGrafik(SpeedButton14); LoadGrafik(SpeedButton15); LoadGrafik(SpeedButton16); LoadGrafik(SpeedButton17); LoadGrafik(SpeedButton18); LoadGrafik(SpeedButton19); LoadGrafik(SpeedButton20); LoadGrafik(SpeedButton21); LoadGrafik(SpeedButton22); LoadGrafik(SpeedButton23); LoadGrafik(SpeedButton24); end;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var i : integer; begin for i := 1 to 24 do begin LoadGrafik(Form2.FindComponent('Speedbutton' + i); end; end; |
Re: schnelles Anzeigen von SpeedButtons
@Sebastian: Das war nur eine Demo, der tatsächliche Source ist schon so ähnlich :wink:
|
Re: schnelles Anzeigen von SpeedButtons
Achso...Konnt ich ja nicht wissen. Oder stand das irgendwo schon?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz