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
Seite 1 von 2  1 2      
Potestas

Registriert seit: 20. Mär 2005
4 Beiträge
 
#1

shape1+1 ?

  Alt 20. Mär 2005, 20:14
Hi,
folgendes Problem:
Ich habe einen Array der einen Würfel mit [x,y,z] erstellt und möchte diesen nun visualisieren.
Die Idee:
ich habe mehrere kleine shapes die ich nun nacheinander in einer Schleife anspreche und je nachdem, ob der Wert im Array false oder true ist, eine andere Farbe zuweise.
Wenn die Schleife durchläuft wir der Array immer umus diesen nun visualisieren.
Die Idee: us diesen nun visualisieren.
Die Idee: ein Feld erweitert, doch wie kann ich innerhalb einer Schleife
den Shape erweitern (wenn überhaupt möglich)
Dachte erst an so etwas:

Zitat:
var shape= TShape
-----
shape:=shape +1
shape.brush.color:=clyellow
Das geht so leider nicht.

1. Ist die Frage in der richtigen Kategorie?
2. Ist das verständlich ausgedrückt?
3. Kann mir jemand da helfen/Tipp geben .... ?

MFG Potestas
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: shape1+1 ?

  Alt 20. Mär 2005, 20:26
Suche mal nach Hier im Forum suchenFindComponent.

Nachtrag: Herzlich wollkommen!
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

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

Re: shape1+1 ?

  Alt 20. Mär 2005, 20: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
Potestas

Registriert seit: 20. Mär 2005
4 Beiträge
 
#4

Re: shape1+1 ?

  Alt 20. Mär 2005, 21:06
erstmal danke für die Begrüßung und die schnelle Hilfe
Werde mal versuchen, ob ich das so hinbekomme, denn ich arbeite erst seit knapp zwei Monat mit Delphi, aber das wird bestimmt schon

Also erstmal danke im vorraus, falls was nichts klar ist meld ich mich wieder

PS.:

"Contnrs" (TObjectList) << Datei nicht gefunden: 'Contnrs.dcu'
Benutze die Delphi 3 Version. Ist die Falsch geschrieben, oder existiert die in der 3er nicht nicht
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#5

Re: shape1+1 ?

  Alt 20. Mär 2005, 23:53
Also, geschrieben ist sie richtig. Statt der TObjectList kannst du auch ein Array of TShape nehmen. Sieht in etwa so aus:

Delphi-Quellcode:
var
  ShapeArray: array[0..10] of TShape; //deklarieren

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  for i := 0 to 10 do
    ShapeArray[i] := TShape.Create(self); // erzeugen
end;
Jetzt kannst du mit ShapeArray[i] auf die einzelnen Shapes zugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

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

Re: shape1+1 ?

  Alt 21. Mär 2005, 00:01
Dann aber das Freigeben nicht vergessen.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: shape1+1 ?

  Alt 21. Mär 2005, 00:05
Zitat von Pr0g:
Dann aber das Freigeben nicht vergessen.
stimmt. Folgendes fehlt dann noch:

Delphi-Quellcode:
TForm1.FormClose(Sender: TObject);
var i: integer;
begin
  for i := 0 to 10 do
    ShapeArray[i].Free;
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: shape1+1 ?

  Alt 21. Mär 2005, 00:13
Moin Malo,

wenn Du die Shapes so erzeugst:

ShapeArray[i] := TShape.Create(self); // erzeugen müssen sie nicht freigegeben werden, da dies der Owner (in diesem Falle das Formular), automatisch erledigt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: shape1+1 ?

  Alt 21. Mär 2005, 00:37
Zitat von Pr0g:
Dann aber das Freigeben nicht vergessen.
stimmt. Folgendes fehlt dann noch:

Delphi-Quellcode:
TForm1.FormClose(Sender: TObject);
var i: integer;
begin
  for i := 0 to 10 do
    ShapeArray[i].Free;
end;
//edit: Das kommt davon, wenn man ne halbe Stunde nicht am PC ist
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

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

Re: shape1+1 ?

  Alt 21. Mär 2005, 00:40
Warum postest du das nach ner halben Stunden nochmal?

@Christian Seehase: Stimmt, das hatte ich nicht bedacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz