Einzelnen Beitrag anzeigen

Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

Problem mit TObject und ItemDraw

  Alt 26. Aug 2008, 18:55
Hallo DPler,

kann mir mal jemand helfen mit dem Code? Ich bekomme eine AV beim Ausfuehren der DrawItem Methode.

Delphi-Quellcode:
procedure TfoOutput.LbxInfoDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with TListBox(Control) do
  begin
    Canvas.FillRect(Rect);
    case Integer(LbxInfo.Items.Objects[Index]) of
      0:
      begin
        if ( TValues(LbxInfo.Items.Objects[Index]).Value / 1000000) < 10 then
          LbxInfo.Canvas.Font.Color := clGreen
        else
          LbxInfo.Canvas.Font.Color := clRed;
        Canvas.TextOut(Rect.Right - 62, Rect.Top, 'Suspend: ' + IntToStr(TValues(LbxInfo.Items.Objects[Index]).Value));
      end;
    end;
  end;
end;
Hier sollte das befuellen stattfinden:
Delphi-Quellcode:
procedure TfoOutput.PopMenItmHibClick(Sender: TObject);
var
  AppDir: String;
  lXMLLib: TXMLLib;
  lNode: TXMLNode;
  lAttr: TXMLAttribute;
  Values: TValues;
begin
  LbxInfo.Clear;
  Values := TValues.Create;
  AppDir := BrowseDialog('Select Directory', BIF_NEWDIALOGSTYLE or BIF_RETURNONLYFSDIRS);
[...]
      begin
        lNode := lXMLLib.GetNodeFromPath('suspend/scenario');
        if ( assigned(lNode) ) then
        begin
          lAttr := lNode.Attributes.AttributeByName['suspend'];
          begin
            if ( assigned(lAttr) ) then
            begin
              LbxInfo.Items.AddObject(IntToStr(DataIndex), Values);
              TValues(LbxInfo.Items.Objects[DataIndex]).Value := lAttr.Value.AsInteger;
            end;
          end;
[...]
Danke!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat