Einzelnen Beitrag anzeigen

Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

Re: JvDesignPanel Component Editor

  Alt 3. Aug 2008, 16:55
Zu A habe ich eine Lösung gefunden:

Delphi-Quellcode:
PROCEDURE TMain.SelectRect;
VAR I:Integer; FObjects: Array of TObject;

  procedure AddObjectAtEndOfList (const aObject : TObject);
  begin
    SetLength (FObjects, Succ (Length (FObjects)));
    FObjects [High (FObjects)] := aObject;
  end;

BEGIN
  FOR I := 0 TO DesignPanel.ControlCount -1
    DO BEGIN
      IF NOT (DesignPanel.Controls[I].Name = '') // selector komponenten natürlich nicht!
        THEN
          IF PtInRect(DesignPanel.Surface.Controller.DragRect,
                          (CenterPoint(Rect(DesignPanel.Controls[I].Left,
                                            DesignPanel.Controls[I].Top,
                                            DesignPanel.Controls[I].Left+DesignPanel.Controls[I].Width,
                                            DesignPanel.Controls[I].Top+DesignPanel.Controls[I].Height))))
             THEN BEGIN
               AddObjectAtEndOfList(DesignPanel.Controls[I]);
               DesignPanel.Surface.SetSelected(FObjects);
         END;
    END;
END;
Eingebunden wird das ganze als oberstes im "OnSelectionChange".
Also ich ermittle den Mittlepunkt von jeder Komponente und schaue dann ob dieser Punkt im markierten Rechteck liegt.
Sebastian
  Mit Zitat antworten Zitat