AGB  ·  Datenschutz  ·  Impressum  







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

TComponent

Offene Frage von "Knut"
Ein Thema von Knut · begonnen am 8. Aug 2003 · letzter Beitrag vom 9. Aug 2003
 
Christian Seehase
(Co-Admin)

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

Re: TComponent

  Alt 9. Aug 2003, 00:18
Moin Knut,

mit dem Owner (dem Parameter von TImage.Create) wird die Komponente angegeben, die für die Freigabe der durch TImage belegten Resourcen zuständig ist, d.h.:
Schreibst Du hier z.b. Form1 rein, so wird das dynamisch erzeugte Image erst dann zerstört, wenn Form1 zerstört wird (ausser es geschieht vorher gezielt).
Nimmst Du hingegen nil, so musst Du Dich selber um die Freigabe der Resourcen kümmern.

Sehen kannst Du das Image aber erst, wenn die Eigenschaft Parent gefüllt wurde.
Parent wird für die Fensterverwaltung gebraucht.
Die Angaben zur Position des Images werden relativ zum Parent gewertet.
Beispiel:
Du hast ein Panel dessen Eigenschaften Left und Top beide auf 16 gesetzt werden.
Dem Image wird als Parent dieses Panel zugewiesen.
Jetzt werden Top und Left des Images jeweils auf 8 gesetzt.
Die Position des Images auf dem Formular wäre jetzt 24/24, da die 8 ja relativ zum Panel anzusehen sind, das sich auf 16/16 befindet (16+8=24).

Was in Deinem Codeschnipsel übrigens fehlt ist die Freigabe der Bitmap.
Belegte Resourcen müssen wieder freigegeben werden. Dies kann automatisch geschehen (eben über den Owner), oder muss manuell gemacht werden (wenn der Owner auf nil gesetzt wird, oder keiner angegeben werden kann, wie bei TBitmap).

So könnte es aussehen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
stein : TBitmap;
image : array[0..10] of TImage;
i : integer;
begin
for i := 0 to 10 do begin
  stein := TBitmap.Create;
  try
    stein.LoadFromFile('stein.bmp');
    image[i] := TImage.Create(PaintBox1);
    image[i].Picture.Assign(stein);
    image[i].Top := 0;
    image[i].Left := 0;
  finally
    FreeAndNil(stein)
  end;
end;

end;
So sollte es auch gehen, die Bitmap muss aber nur einmal erzeugt werden

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
stein : TBitmap;
image : array[0..10] of TImage;
i : integer;
begin
  stein := TBitmap.Create;
  try
    for i := 0 to 10 do begin
      stein.LoadFromFile('stein.bmp');
      image[i] := TImage.Create(PaintBox1);
      image[i].Picture.Assign(stein);
      image[i].Top := 0;
      image[i].Left := 0;
    end;
  finally
    FreeAndNil(stein)
  end;
end;
da aber TImage.Picture die Methode LoadFromFile kennt wäre diese Variante wohl besser

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  image : array[0..10] of TImage;
  i : integer;
begin
for i := 0 to 10 do begin
  image[i] := TImage.Create(PaintBox1);
  image[i].Picture.LoadFromFile('stein.bmp');
  image[i].Parent := PaintBox1;
  image[i].Top := 0;
  image[i].Left := 0;
end;

end;
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
 


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:07 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