Einzelnen Beitrag anzeigen

Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Listbox.ItemIndex und Nebenwirkungen

  Alt 14. Sep 2016, 13:10
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;
  Mit Zitat antworten Zitat