Einzelnen Beitrag anzeigen

Fingolfin

Registriert seit: 7. Okt 2003
62 Beiträge
 
#1

Actions zur Laufzeit: Absturz bei ImageListzuweisung

  Alt 5. Mär 2004, 02:14
Hallo, ich habe versucht folgenden Code aus der Code Library zu testen, um Actions zur Laufzeit zu erstellen:

Delphi-Quellcode:
var iItem:TActionClientItem;
    iAction:TAction;
begin
  iAction := TAction.Create(myActionManager); //Hier wird die Action für das Item erstellt
  iItem := myActionManager.ActionBars[0].Items.Add; //Und hier wird das Item zu dem Menü mit Index 0 geaddet.
  iAction.Caption := 'Mein Item'; //Hier wird dem Item die Eigenschaft Caption zugewiesen.
  iItem.Action := iAction; //Hier wird dem Item seine Action zugewiesen.
end;
Das funktioniert an sich wunderbar. Jetzt habe ich aber dem Actionmanager noch eine ImageList hinzugefügt und versucht per:

  iAction.ImageIndex:=0; den jeweiligen ImageIndex zuzuweisen.
Dabei bekomme ich allerdings eine EAccessViolation und habe keinen Plan, wo die herkommt. Er meckert bei folgendem Code in der ActnMan:

Delphi-Quellcode:
procedure TCustomActionControl.DrawGlyph(const Location: TPoint);
var
  ImageList: TCustomImageList;
  DrawEnabled: Boolean;
begin
  if not HasGlyph then exit;
  if Assigned(Action) then
    ImageList := ActionClient.Action.ActionList.Images //Hier scheint er abzuschmieren
  else
    ImageList := ActionClient.OwningCollection.ActionManager.Images;
  if not Assigned(ImageList) then exit;
  DrawEnabled := Enabled and (ActionClient.ImageIndex <> -1) or
    (csDesigning in ComponentState);
  ImageList.Draw(Canvas, Location.X, Location.Y, ActionClient.ImageIndex,
    dsTransparent, itImage, DrawEnabled);
end;
Hat vielleicht jemand eine Idee, was man da machen kann?

Ich nutze übrigens Delphi 7 Enterprise und habe das ActionUpdate von Steve Trefethen http://homepages.borland.com/strefethen/ benutzt.

Vielen Dank im voraus,

Fingolfin
  Mit Zitat antworten Zitat