AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

shape1+1 ?

Offene Frage von "Potestas"
Ein Thema von Potestas · begonnen am 20. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#1

Re: shape1+1 ?

  Alt 20. Mär 2005, 19:52
Nim eine TObjectList, damit lassen sich die Shapes besser verwalten (da du bspw. per Delete, Insert auf bestimmte Positionen zugreifen kannst und dich nicht um eine Verschiebung der anderen kümmern musst) und bei der Freigabe werden auch alle Objekte gleich mit freigegeben. Hier mal ein Beispiel:

Pack die Units "Contnrs" (TObjectList) und "ExtCtrls" (TShape) in die Uses-Klauses am Anfang deines Codes. Dann definierst du eine Variable der ObjectList:
Delphi-Quellcode:
...
  private
    { Private-Deklarationen }
    ShapeList: TObjectList;
...
Im OnCreate der Form erzeugst du die Liste und im Destroy gibst du sie wieder frei:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  //Objectlist erzeugen
  ShapeList := TObjectList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  //Instanz freigeben (alle Objekte in der Liste werden mit freigegeben)
  ShapeList.Free;
end;
Nun hast du einen Button (als Beispiel) um ein paar Shapes zu erzeugen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  Shape: TShape;
begin
  //10 Shapes erzeugen
  for i := 1 to 10 do
  begin
    Shape := TShape.Create(Self);
    Shape.Parent := Self;
    Shape.Name := 'Shape' + IntToStr(i);
    Shape.Left := 10 * i + 10;
    Shape.Top := 10;
    Shape.Width := 5;
    Shape.Height := 5;
    ShapeList.Add(Shape);
  end;
end;
Jetzt kannst du ganz leicht auf die Shapes zugreifen, bspw. über einen zweiten Button:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
begin
  //auf die Shapes in der Liste zugreifen, bzw. durch
  //die Schleife auf alle
  for i := 0 to ShapeList.Count - 1 do
    TShape(ShapeList[i]).Brush.Color := clLime;
end;
MfG Pr0g
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz