Kannst Du mal den code Zeigen an dem die Listbox2 gefüllt wird?
Code:
procedure TFormStanzprogrammeditor.ListBox1Click(Sender: TObject);
var
Stanzschritt: TStanzschritt;
begin
ListBox2.Items.Clear;
CurrentProgram := (ListBox1.Items.Objects[ListBox1.ItemIndex] as TStanzprogramm).Steps;
for Stanzschritt in CurrentProgram.Ordered(
function(const left, right: TStanzschritt): Integer
begin
result:=Sign(right.PosX-Left.PosX);
end) do
begin
ListBox2.Items.AddObject('PosX:'+Stanzschritt.PosX.ToString+' PosY:'+Stanzschritt.PosY.ToString, Stanzschritt)
end;
CurrentIndex:=ListBox2.ItemIndex;
MyPaintbox1.Invalidate;
end;
Zeichnen dann (vereinfacht) hier:
Code:
procedure TFormStanzprogrammeditor.ZeichnePlatine;
var
Stanzschritt: TStanzschritt;
begin
if not Assigned(CurrentProgram) then
Exit;
for Stanzschritt in CurrentProgram do
begin
if Stanzschritt.Werkzeug.wmfgrafik.mmwidth > 0 then
begin
MyPaintbox1.DrawBitmap(Stanzschritt.AbsPosX(Platine), Stanzschritt.AbsPosY(Platine), Stanzschritt.Werkzeug.wmfgrafik);
end
// sobald diese Zeile aktiv ist, stimmt die Grafik nicht mehr
ListBox2.ItemIndex;
if CurrentIndex<0 then
continue;
if Stanzschritt.OID=currentObject.OID then // Hier wollte ich auf die Listbox2 mit dem aktuellen Objekt zugreifen
begin
MyPaintbox1.Bitmap.Canvas.Pen.Color:=clRed;
MyPaintbox1.Circle(Stanzschritt.AbsPosX(Platine)+imgwidth, Stanzschritt.AbsPosY(Platine) ,8);
MyPaintbox1.Bitmap.Canvas.Pen.Color:=clBlack;
end;
end;
end;