Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TImage im Array -> Erstellen ? (https://www.delphipraxis.net/114132-timage-im-array-erstellen.html)

k4ni 20. Mai 2008 11:41


TImage im Array -> Erstellen ?
 
Hallo,

Ich hab hier folgenden code:
Delphi-Quellcode:
          Players[iplayers].playerimg := Timage.Create(Form2);
          Players[iplayers].playerimg.Visible := true;
          Players[iplayers].playerimg.Transparent := false;
          Players[iplayers].playerimg.Width := 49;
          Players[iplayers].playerimg.Height := 49;
          Players[iplayers].playerimg.top := 360;
          Players[iplayers].playerimg.left := 8;
Wie ihr seht erstell ich ein image auf Form2. Doch diese wird nicht angezeigt.
Ich denke es liegt nicht an meinem code, sondern das man noch irgendwas machen muss, damit es auch angezeigt wird, oder?


danke im vorraus! :)
k4ni

delphimaedel 20. Mai 2008 11:44

Re: TImage im Array -> Erstellen ?
 
Hst du im Menü alle Befehle umgestellt??

... nicht zu danken. :lol:

mkinzler 20. Mai 2008 11:45

Re: TImage im Array -> Erstellen ?
 
Es fehlt die Zuweisung des Parent.

Nuclear-Ping 20. Mai 2008 11:46

Re: TImage im Array -> Erstellen ?
 
Zitat:

Zitat von k4ni
Hallo,

Ich hab hier folgenden code:
Delphi-Quellcode:
          Players[iplayers].playerimg := Timage.Create(Form2);
          Players[iplayers].playerimg.Visible := true;
          Players[iplayers].playerimg.Transparent := false;
          Players[iplayers].playerimg.Width := 49;
          Players[iplayers].playerimg.Height := 49;
          Players[iplayers].playerimg.top := 360;
          Players[iplayers].playerimg.left := 8;
Wie ihr seht erstell ich ein image auf Form2. Doch diese wird nicht angezeigt.
Ich denke es liegt nicht an meinem code, sondern das man noch irgendwas machen muss, damit es auch angezeigt wird, oder?


danke im vorraus! :)
k4ni

Delphi-Quellcode:
Players[iplayers].playerimg := Timage.Create(Form2);
Players[iplayers].playerimg.Parent := Form2;
Und nicht vergessen, am Schluss alles wieder freizugeben. ;)

k4ni 20. Mai 2008 11:47

Re: TImage im Array -> Erstellen ?
 
Zitat:

Zitat von delphimaedel
Hst du im Menü alle Befehle umgestellt??

... nicht zu danken. :lol:

:D
Öhhm, welche befehle?
Sorry, hab noch nie mit dynamischen komponenten gearbeitet :(

@Nuclear-Ping: Danke vielmals! :)

Medium 20. Mai 2008 14:02

Re: TImage im Array -> Erstellen ?
 
Zitat:

Zitat von Nuclear-Ping
Und nicht vergessen, am Schluss alles wieder freizugeben. ;)

Das Formular als Owner der Objekte überimmt dies schon. Machst de es zusätzlich manuell, kauf dir schon mal einen Exception-Regenschirm ;)

Manche Controls bieten ausserdem den überladenen Konstruktor "CreateParented", der den Parent gleich mit setzt. Bei TImage ist das jedoch nicht der Fall.

Aus deinem Code scheint mir aber generell die Verwendung von so vielen TImages als unsinnig, was aber gern von Einsteigern so betrieben wird. Nimm lieber eine Reihe von TBitmaps, und zeichne sie auf ein Hier im Forum suchenOffscreen Bitmap, welches du dann in einem einzigen TImage anzeigst. Ist performanter, sauberer und flexibler.

sirius 20. Mai 2008 14:05

Re: TImage im Array -> Erstellen ?
 
Zitat:

Zitat von Medium
Das Formular als Owner der Objekte überimmt dies schon. Machst de es zusätzlich manuell, kauf dir schon mal einen Exception-Regenschirm ;)

Das Objekt meldet sich beim freigeben ordnungsgemäß beim Owner ab, so dass da keine Exception kommt.

Medium 20. Mai 2008 14:13

Re: TImage im Array -> Erstellen ?
 
Ist das schon bei D7 der Fall? Weil ich bin in meinen Anfängen da gelegentlich mit auf die Nase gefallen. Welcher Vorfahre implementiert dieses Verhalten? Weil ich erinnere mich dunkel daran, dass es einen guten Grund gibt, weshalb ich dynamisch erstellte Komponenten tunlichst nicht manuell wieder freigebe - das schwirrt mir im Hinterkopf rum :)

Selbst wenn es aber nun möglich ist, ist es zumindest nicht zwingend nötig. Lässt sich drüber streiten, was stilistisch die gefälligere Variante ist. Auf der einen Seite gilt: Gibt frei, was du selber erzeugst. Auf der anderen Seite gibt es die Konvention, dass ein Owner alle seine "Untertanen" automatisch mit frei gibt.

Interessant wirds ja auch bei nicht-Komponenten. Soll ich eine TObjectList als Owner auftreten lassen, oder von Hand dran gehen - vorausgesetzt ich habe strukturell beide Möglichkeiten, so dass es reine Kosmetik wäre. Aber bla, das ist etwas OT. Hab heut meinen Philosophischen :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 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