Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Während der Programmlaufzeit TImage-Object hinzufügen (https://www.delphipraxis.net/84928-waehrend-der-programmlaufzeit-timage-object-hinzufuegen.html)

Telefonkabel 23. Jan 2007 18:01


Während der Programmlaufzeit TImage-Object hinzufügen
 
Hy!
Ich würde gerne in meinem Programm, wie der Threadtitel schon sagt, ein TImage-Object hinzufügen, doch habe ich keine Ahnung, wie das funktioniert.
Kann mir jemand helfen?


MfG
Telekab.

3_of_8 23. Jan 2007 18:04

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Delphi-Quellcode:
MyImage:=TImage.Create(Self);

SirThornberry 23. Jan 2007 18:06

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
wie jedes andere Object erzeugt man es in dem man den Constructor aufruft:
Delphi-Quellcode:
DeinImage := TImage.Create(nil);
natürlich kannst du auch einen Owner angeben.
Damit das TImage auch sichtbar ist musst du einen Parent noch angeben (also wo es drauf liegen soll)
Delphi-Quellcode:
DeinImage.Parent := Form1;//alternativ Self wenn es in der Formklasse erzeugt wird
Und dann müssen nur noch die Bilder reingeladen werden und eventuell die größe noch geändert werden
Delphi-Quellcode:
DeinImage.SetBounds(Links, Rechts, Breite, Hoehe);

Telefonkabel 23. Jan 2007 18:35

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Danke, das funktioniert soweit. :)
Nun habe ich aber ein weiteres Problem.
Es soll nicht nur ein TImage erstellt werden können, sondern bis zu 8.
Ok, hab ich also ein Array genommen. Klappt auch soweit.
Und ich habe auf die Bilder ein onclick Event gelegt.
Und genau hier ist das Problem. Denn ich müsste dann in der aufgerufenen Procedure wissen, welches der TImages (also die Indexnummer des Arrays) das Event ausgelöst hat, denn es soll bei jedem Bild etwas anderes passieren.
Kann mir da einer helfen?

TonyR 23. Jan 2007 19:03

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
ich hab da so eine idee:
du weist allen Bildern einen anderen Tag zu
Delphi-Quellcode:
for i:=0 to 7 do
  ImageArray[i].tag:=i;
Wenn du jetzt deine Prozedur hast, die aufgerufen wird, wenn du ein Bild anklickst, bekommst du mit sender den Tag des Images raus und kannst eine Fallunterscheidung vornehmen!
Delphi-Quellcode:
procedure TueEtwasBeiKlick(sender: Tobject);
begin
  case TImage(sender).tag of
    0: ... ;
    1: ... ;
        .
        .
        .
  end;
end;
Dazu musst du dann an der Stelle, wo du den Klick abfängst noch den sender des Images übergeben!
Ich hoffe ich konnte ein bisschen helfen :wink:

3_of_8 23. Jan 2007 19:10

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Man könnte auch im OnClick den Sender überprüfen.

TonyR 23. Jan 2007 19:12

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Stimmt, ist besser.... :oops:
und einfacher :-D

3_of_8 23. Jan 2007 19:15

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Nicht unbedingt. Wenn man aus irgendeinem Grund den Arrayindex braucht, ist die Methode mit dem Tag besser. Aber ansonsten wohl das mit dem Sender.

TonyR 23. Jan 2007 19:18

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Das ist jetzt ganz schön OT, aber...
Wenn unsere HandyAntenne hier sich mal wieder melden würde, dann wüssten wir in welcher Form er es braucht... :?

Telefonkabel 23. Jan 2007 20:29

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
In Form1 braucht das die Handyantenne. :P

Danke, ihr habt mir sehr geholfen!
Klappt alles wunderbar! :)


MfG
Telekab.

TonyR 23. Jan 2007 20:31

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
:lol: Perfekt :wink:

DP-Maintenance 23. Jan 2007 20:47

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.

xZise 23. Jan 2007 20:59

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Zitat:

Zitat von TonyR
Stimmt, ist besser.... :oops:
und einfacher :-D

Aber ich denke nicht umbedingt besser.
In deinen Fall muss nur ein Integerwert überprüft werden.

Außerdem ist es meiner Meinung nach Übersichtlicher :P

PS: Nichts gegen 3 of 8 :D

3_of_8 23. Jan 2007 21:08

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Okay, fassen wir das mal zusammen:

Ein Integer-Vergleich der Tags geht schneller als der Vergleich der Instanzenpointer. Wo ist der Denkfehler in dieser Aussage?

xZise 24. Jan 2007 07:40

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Zitat:

Zitat von 3_of_8
Wo ist der Denkfehler in dieser Aussage?

Okay... Es sind beides Integer (oder nicht ^^)

Allerdings kann man doch das eine in Case packen ;)


Ich sag dazu nichts mehr :D
Obwohl ich bei einem Array immer tags nehmen würde xP

3_of_8 24. Jan 2007 13:24

Re: Während der Programmlaufzeit TImage-Object hinzufügen
 
Genaugenommen muss bei Sender.Tag erst noch TComponent.FTag in ein Register geladen werden muss, während Sender schon im Register drinsteht.


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