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/)
-   -   Delphi existierende TImageList in einem anderen TForm benutzen (https://www.delphipraxis.net/129708-existierende-timagelist-einem-anderen-tform-benutzen.html)

hoika 24. Feb 2009 10:14


existierende TImageList in einem anderen TForm benutzen
 
Hallo #,

ich habe hier eine FarbenTImageList auf einem Form.
Die bentze ich in einem ListView.

Ich möchte diese TImageList in einem anderen Form auch benutzen,
ohne sie zu kopieren.

Das Form mit der existierenden TImageList ist nicht offen !.

Wie gehe ich da am besten vor.

Mit fällt ein Frame ein, in dem ich zur Design-Time die TImageList reinpacke,
und den ich dann in beiden Forms benutze.

Wäre das ein Weg ?


Danke


Heiko

mkinzler 24. Feb 2009 10:16

Re: existierende TImageList in einem anderen TForm benutzen
 
Ja. Sind mehrere der Formulare gleichzeitig sichtbar? Wenn nicht könntet du einfach den Parent umswitchen

himitsu 24. Feb 2009 10:18

Re: existierende TImageList in einem anderen TForm benutzen
 
du kannst doch einfach auf die ImageList der anderen Form zugreifen?
bzw. wie wilst'n die Liste da drüben verwenden?

hoika 24. Feb 2009 10:33

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

Das Form mit der existierenden TImageList ist nicht offen.

Die TImageList soll in einer anderen ListView (ImageIndex) benutzt werden.


Mein Problem ist, dass noch ein paar Images dazukommen.
Zur Zeit ändere ich das (zur Designzeit) in einem Form
und kopiere die TImageList dann zum anderen Form.

Das muss anders gehen.
Die Images verbraten zwar kaum Platz, aber das gefällt mir überhaupt nicht (DRY).


Heiko

Luckie 24. Feb 2009 10:34

Re: existierende TImageList in einem anderen TForm benutzen
 
Einfach die Unit der Form mit der Imagelist in den uses der zweiten Form aufnehmen und die Imagelist mit dem Formnamen davor referenzieren.

DeddyH 24. Feb 2009 10:34

Re: existierende TImageList in einem anderen TForm benutzen
 
Zitat:

Zitat von hoika
Das Form mit der existierenden TImageList ist nicht offen.

Was meinst Du mit offen? Nicht sichtbar oder nicht instanziert?

shmia 24. Feb 2009 10:52

Re: existierende TImageList in einem anderen TForm benutzen
 
Imageliste auf ein gemeinsam genutztes Datenmodul auslagern.
Datenmodule müssen nicht zwangsweise nur für TQuery & Co. verwendet werden.

hoika 24. Feb 2009 11:12

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

nicht instanziert.

Hm, TDataModule habsch noch nie benutzt ... ;)
Mal ausprobieren.

Danke


Edit:
Natürlich packe ich meine Queries nicht auf ein Form,
dafür habe ich eigenständige DB-Klasen.



Heiko

taaktaak 24. Feb 2009 11:21

Re: existierende TImageList in einem anderen TForm benutzen
 
Zitat:

..auf ein gemeinsam genutztes Datenmodul auslagern..
Hm, da muss ich mal nachfragen.
Wieso (in diesem Zusammenhang) ein DatenModul? :?

Ich würde die ImageList auf das automatisch erzeugte und ständig im Speicher verfügbare Hauptformular placieren. Allen dynamisch erzeugten Formularen übergebe ich (sofern sinnvoll) den Zeiger auf die ImageList und kann die Images dann im dyn. Form nutzen.

hoika 24. Feb 2009 11:23

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

interessante Frage ...

Das DatenModul ist besser, weil das Hauptform dann nicht zugemüllt wird.


Heiko

taaktaak 24. Feb 2009 11:25

Re: existierende TImageList in einem anderen TForm benutzen
 
Aha, also im Sinne eines separaten Containers?!

hoika 24. Feb 2009 11:31

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

ja.
Man könnte ja auch unterschiedliche TDataModule benutzen
(DB-Zugriff, Images)

Langsam komme ich auf den Trichter ...


Heiko

Keldorn 24. Feb 2009 11:33

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

wenn Du ein Datamodul verwendest, hast du Zugriff von allen Forms, die darauf zugreifen.
D.h. die Imageliste des Datamoduls steht z.B. im OI zur Auswahl zur Verfügung, ist doch praktisch.

Wenn du die Hauptform verwendest, müßtest du die Imagelist jedesmal per code einbinden?

Finde ich auch übersichtlicher, wenn man nicht überlegen muß, wo denn nun die imagelist herkommt, habe ich die nun in der Hauptform hinterlegt oder doch woanders ;-)

Gruß Frank

taaktaak 24. Feb 2009 13:38

Re: existierende TImageList in einem anderen TForm benutzen
 
Jetzt bin ich neugierig geworden (hatte von TDataModule noch nie etwas gehört) und habe das gleich mal ausprobiert:

1. DatenModul erzeugt
2. ImageList drauf
3. noch'n Timer dazu
3. DatenModul in beliebiges Formular eingebunden

Wie erwartet, habe ich im Quellcode des Formulars jetzt Zugriff auf ImageList und Timer des DatenModuls. Ok, das ist aber noch recht unspektakulär. Komfortabel wäre nun, wie im vorherigen Post von Frank beschrieben, die ImageList und den Timer auch im OI zu finden. Dort kann ich sie aber nun irgendwie gar nicht entdecken.

Mache ich was falsch, funktioniert das mit Delphi 7 nicht, oder ...

ATSV 24. Feb 2009 13:42

Re: existierende TImageList in einem anderen TForm benutzen
 
geh mal in den Source Code vom DataModule und drück F12 das sollte helfen, wenn ich dein Problem richtig gedeutet habe :wink:

taaktaak 24. Feb 2009 13:55

Re: existierende TImageList in einem anderen TForm benutzen
 
Danke! Umschalten Formular/Unit war es aber nicht - es war meine eigene Dummheit :oops:

Im OI wird natürlich nur etwas aus dem Datenmodul angezeigt, wenn ich einer auf dem nutzenden Formular befindlichen Komponente z.B. ein Image zuweisen will. Und dort wird die Imagelist des Datemmoduls auch tatsächlich zur Auswahl angeboten - es funktioniert also.

Prima - das ist 'ne komfortable Sache!
:hi:

hoika 2. Mär 2009 08:51

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

ich bin es noch mal.

Also bei mir funktioniert die Auswahl im OI nicht.
Ich muss die ImageList per Code zuweisen.

Ausserdem musste ich die ImageList selber in der dpr erzeugen.
Ist aber OK.

Woran kann das liegen, dass der OI die ImageList nicht anzeigt ?
Die DataModule-Unit steht unter uses im interface.

Ich benutze D6.


Heiko

himitsu 2. Mär 2009 08:57

Re: existierende TImageList in einem anderen TForm benutzen
 
Im OI werden nur doch Sachen angezeigt, die auch im zugehörigen Modul/Container (z.B. TForm) enthalten sind? :gruebel:

Keldorn 2. Mär 2009 09:01

Re: existierende TImageList in einem anderen TForm benutzen
 
Also ich hab das grad probiert, geht auch mit D6:

- neues Projekt
- ein neues Datamodule
- imagelist drauf
- alles speichern
- Datamoduleunit in uses der Form aufnehmen
- popupmenu zum testen auf die Form, dann kann ich dort unter images die Imagelist des Datamodules auswählen

geht auch mit D6:-)

Gruß Frank

hoika 2. Mär 2009 09:37

Re: existierende TImageList in einem anderen TForm benutzen
 
Hallo,

mit einem neuen Projekt geht es bei mir auch,
nur das alte will nicht ;(

Naja, verschieben wir aufs Wochenende ...


Heiko


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