ich frage in einem menüeintrag die anzahl der menüeinträge ab:
menuname.count
solange ich dies nicht aus einem eintrag mache in welchem ich die anzahl brauche klappt auch alles, aber wenn ich zb ein menü "favoriten" habe und in diesem menü 3 untereinträge sind und ich dann aus einem dieser untereinträge die anzahl der einträge vom menü favoriten (favoriten.count) abfrage, dann bekomm ich als rückgabewert immer 0.
wenn ich aber zwei abfragen einfüge [zb 2x showmessage(inttostr(favoriten.count));] dann hab ich in der ersten 0 und in der zweiten die richtige anzahl (hier im bsp 3).
sprich, wenn ich eine verzögerung von ein paar sekunden hab, dann klappt alles.
wie krieg ich das hin, dass gleich beim ersten mal die richtige anzahl kommt
(ich erstelle auch dynamische einträge, deswegen kann ich nicht einfach immer mal einen globalen parameter zählen lassen)
hier noch mal meine prozedur:
Delphi-Quellcode:
procedure TForm1.Favoriten_einlesenClick(Sender: TObject);
//untermenüeintrag von favoriten
var i:integer;
begin
try
//alte einträge löschen
favpos:=0;
favtemp:=TStringList.Create;
//da hier favoriten.count 0 ergibt, werden die einträge nicht gelöscht
for i:=favoriten.Count-1
downto 4
do favoriten.Items[i].Free;
//hier kommt dann logischerweise die exception da der eintrag schon vorhanden ist
favtemp:=Favoriten_Add(pchar(GetShellFolder(CSIDL_FAVORITES,false)));
except
end;
end;