Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Mehrer objekte gleichzeig verschieben auf einer Paintbox

  Alt 30. Okt 2006, 16:04
vielen dank für deine antwort doch leider geht es immer noch nicht sorecht:
die objekte springen bzw. das muster der objekte verändert sich.
ich habe mich an deinen anweinsungen gehlaten:
Delphi-Quellcode:
  Shift: TShiftState; X, Y: Integer);
begin
  startChange:=True;

  objList.itemindex:=objlist.GetItemIndex(x,y,objlist.objList,shift);

  Checklistbox1.itemindex:=objList.itemindex;
  mx:=x; my:=y;
      oldpos.x:=x; oldpos.Y:=y;
  if objList.itemindex =-1 then
    if ListBox1.itemindex > 0 then
    if ssLeft in Shift then begin
      objList.AddObj(ListBox1.itemindex-1,mx,my,20,20,'');
    end;
  objList.DrawObj;
end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i,dx,dy:integer;
begin
  if objlist.itemindex > -1 then begin
    if ssCtrl in Shift then begin
      TPaint2Obj(objList.objList[objlist.itemindex]).Size:=Point(x-mx,y-my);
      objList.DrawObj;
    end
    else begin
      if ssleft in Shift then begin
        oldpos:=GetDiffObj(objlist.objList,x,y,objlist.ItemIndex);
        for i:=0 to objlist.objList.Count-1 do begin
          if (TPaint2Obj(objList.objList[i]).Sel = true) then begin
            with TPaint2Obj(objList.objList[i]) do begin
              if objlist.ItemIndex <> i then begin
      // if position.x-oldpos.x > -1 then
                  dx:=position.x-oldpos.x;
    // else
  // dx:=oldpos.x-position.x;

// if position.Y-oldpos.y > -1 then
                  dy:=position.Y-oldpos.y;
  // else
// dy:=oldpos.y-position.Y;
                position:=Point(dx+x,dy+y);

                caption:=IntTostr(dx) + '\' + IntTostr(dY);
              end
              else
                Position:=Point(X,Y);

              objList.DrawObj;
            end;
          end;
        end;
      end;
// objList.DrawObj;
    end;

  end;
                 oldpos.x:=x;
                oldpos.y:=y;

in position wird nur die position gepseichert also nicht die objekte größe !
die wird in size gepseichert und es auch ein Tpoint
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat