AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Flackerndes Menü

Ein Thema von Shubit · begonnen am 24. Nov 2009 · letzter Beitrag vom 25. Nov 2009
Antwort Antwort
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#1

Flackerndes Menü

  Alt 24. Nov 2009, 20:51
Hi,
ich würde das MainMenü einer meiner Programm gern zur Laufzeit erstellen.
Das funktioniert eigentlich auch ganz gut, bis außer einer Kleinigkeit: Immer wenn man die Größe des Fenster ändert flackert das Menü kurz als würde der Computer es neu erstellen und dafür so 500ms brauchen^^

so sieht mein MainMenü aus:
Delphi-Quellcode:
  Menu_0 := TJvMainMenu.Create(self);
  with Menu_0 do
  begin
    BiDiMode := bdLeftToRight;
    ParentBiDiMode := false;
    ShowCheckMarks := true;
    Left := 688;
    Top := 8;
    Items.Add(Menu_1_File);
    Items.Add(Menu_1_Settings);
    Items.Add(Menu_1_Tools);
    Items.Add(Menu_1_Help);
  end;
  Menu := Menu_0;
Gibt es eine Möglichkeit das Flackern zu verhindern?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Flackerndes Menü

  Alt 24. Nov 2009, 21:04
Probier es mal mit DoubleBuffered.
Menu_0.DoubleBuffered := True; Oder, wenn die Komponente diese Eigenschaft nicht hat:
Menu_0.Parent.DoubleBuffered := True;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Flackerndes Menü

  Alt 24. Nov 2009, 23:48
Du erzeugst das MainMenu immer komplett neu; das erzeugt das Flackern.
Versuche die alten Items zu löschen und nur die Item nur zu erzeugen, dann wird's besser.

PS: welche Delphi-Version verwendest du?
Kennst du schon die ActionLists (ab D4)?
Damit kannst du dein Design vereinfachen, weil man Actions an Menuitems und Button binden kann.
fork me on Github
  Mit Zitat antworten Zitat
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#4

Re: Flackerndes Menü

  Alt 25. Nov 2009, 08:05
Also ich hab die Erzeugung des MainMenüs nur einmal im Constructor des Formulars drin.
Dort im Constructor erzeug ich dann alle wichtigen Menüitems und am Ende erstell ich das Mainmenü Menu_0 und füg dort alle Items hinzu.
Das ganze compiliere ich dann mit Delphi 2010.

Also versteh ich das richtige das kurze Flackern kommt tatsächlich von einer Neuerstellung und das DoubleBuffered kann diese nicht verhindern?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Flackerndes Menü

  Alt 25. Nov 2009, 09:01
Also wenn du das Menu nur im Konstruktor erzeugst und später dann nicht erneut erzeugst, dann ist eher die Komponente TJvMainMenu im Verdacht.
Ein normales TMainMenu flackert so gut wie nicht beim ändern der Fenstergrösse.
Tausche doch mal probeweise TJvMainMenu gegen TMainMenu.
Flackert es dann immer noch, dann liegt es vermutlich daran, dass die übrigen Controls auf dem Formular in der Summe viel Zeit zum Neuzeichnen benötigen.
Es kommt dann nämlich auf die Reihenfolge des Neuzeichnens an.
Ist das Menu in der Reihenfolge hinter anderen (zeitaufwändigen) Controls, dann entsteht ein Flackern.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 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