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 Eigene Komponente ??? (https://www.delphipraxis.net/75404-eigene-komponente.html)

Bernd29bln 18. Aug 2006 22:19


Eigene Komponente ???
 
hallo,

ich habe mir eine imagekomponente gebastelt.

wenn auf meiner form eine bitmaplist vorhanden ist, möchte ich sie im objecktinspecktor meiner komponente auswählen können .

wie kann ich das machen?

gruss bernd

Meflin 18. Aug 2006 23:12

Re: Eigene Komponente ???
 
Delphi-Quellcode:
private
  FBitmapList: TBitmapList;
  { Private-Deklarationen }
protected
  { Protected-Deklarationen }
public
  { Public-Deklarationen }
published
  property BitmapList: TBitmapList read FBitmapList write FBitmapList;
  { Published-Deklarationen }

Bernd29bln 19. Aug 2006 17:41

Re: Eigene Komponente ???
 
Hallo,

Danke für deine Hilfe, bei :
Delphi-Quellcode:
private
  FBitmapList: TBitmapList;
Da kommt undefinierer Bezeichner TBitmapList , hab ich was vergessen ?

Gruss Bernd

mkinzler 19. Aug 2006 17:43

Re: Eigene Komponente ???
 
Könnte es sein die Klasse TImageList heißt?

Bernd29bln 19. Aug 2006 17:55

Re: Eigene Komponente ???
 
hallo,

ist schon richtig aber auch mit TImageList , kommt die meldung.

gruss bernd

mkinzler 19. Aug 2006 17:56

Re: Eigene Komponente ???
 
Hast du die Unit in die Uses übernommen?

Bernd29bln 19. Aug 2006 17:58

Re: Eigene Komponente ???
 
hmmmm... welche meinste denn?

Bernd29bln 19. Aug 2006 18:00

Re: Eigene Komponente ???
 
du meinst TImageList ( Graphics ) , hab ich gemacht . geht nicht.?????

gruss bernd

mkinzler 19. Aug 2006 18:03

Re: Eigene Komponente ???
 
Wie sieht der Code jetzt aus?

Meflin 19. Aug 2006 18:03

Re: Eigene Komponente ???
 
Du musst die Unit, in der TImageList deklariert ist, in den Uses-Teil deiner Unit eintragen. Falls die Unit Graphics ist, musst du sie bei uses eintragen.
Delphi-Quellcode:
uses Classes, ..., Graphics;

Bernd29bln 19. Aug 2006 18:18

Re: Eigene Komponente ???
 
hallo,

also müsste ich unit1 in uses schreiben , das wäre ja doof .

kann ich das nicht mit findcomponent machen oder so ?


gruss bernd

mkinzler 19. Aug 2006 18:25

Re: Eigene Komponente ???
 
Zitat:

also müsste ich unit1 in uses schreiben , das wäre ja doof .
Jein. Für die Deklaration nicht. Aber für die Zuweisung der in Unit1 definierten Imageliste muß diese bekannt sein.

Zitat:

kann ich das nicht mit findcomponent machen oder so ?
Nein.

Bernd29bln 19. Aug 2006 18:32

Re: Eigene Komponente ???
 
Hallo,

ich will meine komponente auf meine form ziehen, was ja funcktioniert , und den einfach bitmaplist auswählen .

wenn nun beim anwender die unit nun nicht unit1 heisst gehts ja nicht .

wie könnte man das den ändern , um den namen der unit zubekommen . bei der komponente image gehts doch auch egal wie die unit heisst.


gruss bernd

mkinzler 19. Aug 2006 18:34

Re: Eigene Komponente ???
 
In der Komponentenunit darf Unit1 natürlich nicht in den Uses stehen, in der Unit, der Form auf der die Komponente später liegt.

Meflin 19. Aug 2006 19:45

Re: Eigene Komponente ???
 
Nunja, ich glaube du hast da etwas nicht ganz verstanden ;) Die Klasse TImageList ist in einer Unit deklariert. Diese Unit heisst Graphics. Damit du in deiner eigenen Komponente (Klasse) die Klasse TImageList verwenden kannst, musst du diese deiner Unit, in der deine eigene Klasse deklariert wird, ja irgendwie bekannt machen. Das tust du, in dem du dem uses-Teil DEINER EIGENEN Unit, in der deine Komponente deklariert wird, die Unit Graphics hinzufügst. Dann hast du Zugriff auf alle Klassen, Typen, Konstanten etc aus der Unit Graphics in deiner eigenen Unit.

Um deine Komponente wiederum zu verwenden, muss nun die Unit in der deine Komponente deklariert ist, zu der Unit des PRogramms hinzugefügt werden. Dann ist es aber egal, wie diese deine Unit heisst :)


Bernd29bln 19. Aug 2006 20:12

Re: Eigene Komponente ???
 
hallo,

habs jetzt keine fehler meldung supi. aber wenn ich die imagelist auf der form habe bleibt die auswahl leer. :cry:


gruss bernd

Dax 19. Aug 2006 20:15

Re: Eigene Komponente ???
 
Du musst das Teil auch noch auswählen... Mit Komponente aufs Form klatschen is da nix getan :roll:

Meflin 19. Aug 2006 20:15

Re: Eigene Komponente ???
 
Du musst ja auch im Object Inspector bei deiner Komponente die ImageList auswählen ;) das sollte über eine DropDown-Liste, in der alle Image-Lists auf dem Formular angezeigt werden, möglich sein :)

Oder meinst du dass es nichts zum auswählen gibt? Dann wäre dein Quelltext wie du ihn bis jetzt hast ganz nützlich.


Bernd29bln 19. Aug 2006 20:22

Re: Eigene Komponente ???
 
danke DAX für deine info aber so senil bin ich nun auch nicht.

okay also mein quell text:
Delphi-Quellcode:
uses
  Windows, ...., ImgList, Graphics;

...

private

FBitmapList    : TImageList;

...

published

property BitmapList : TImageList read FBitmapList write FBitmapList;
gruss bernd

Meflin 19. Aug 2006 20:48

Re: Eigene Komponente ???
 
Ich kann dein Problem nicht nachvollziehen, hier mein Quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses Windows, Classes, ImgList, Graphics, Controls, CommCtrl;

type
  TFoo = class(TComponent)
    private
      fImageList: TImageList;
    published
      property ImageList: TImageList read fImageList write fImageList;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TFoo]);
end;

end.
ImageList auf die Form, TFoo auf die Form, und ich kann wunderbar die ImageList unter ImageList auswählen :?


Bernd29bln 19. Aug 2006 20:54

Re: Eigene Komponente ???
 
okay hab vielen dank. :thumb:

jbg 19. Aug 2006 21:46

Re: Eigene Komponente ???
 
Zitat:

Zitat von Meflin
property ImageList: TImageList read fImageList write fImageList;

Die Komponente sollte jetzt noch eine FreeNotification für die ImageList einrichten, da es sonst ziemlich stark kracht, wenn jemand die ImageList vom Formular nimmt.

Meflin 19. Aug 2006 22:10

Re: Eigene Komponente ???
 
Ja schon klar. Aber darum ging es ja hier nicht :stupid: so in etwa:
Delphi-Quellcode:
protected
  procedure Notification(AComponent: TComponent; Operation: TOperation); override;

procedure TFoo.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and (fImageList <> nil) and (AComponent = ImageList) then
    ImageList := nil;
end;


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