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 von TCustomForm abgeleitet (https://www.delphipraxis.net/90221-eigene-komponente-von-tcustomform-abgeleitet.html)

little-x 13. Apr 2007 14:14


Eigene Komponente von TCustomForm abgeleitet
 
DIE AUSSAGE "GEHT NICHT"
würde mir ja auch schon reichen!

Hallo,

habe schon öfter mal eigene Komponenten entwickelt, z.B. DBEdits mit erweiterten Funktionen etc., hat auch immer gut funktioniert.

Diesmal bin ich mir nicht sicher ob es sich nur um eine Wissenslücke, oder um ein Verständnisproblem handelt. Ich müsste eine eigene Komponente von TCustomForm ableiten. Das geht auch alles, nur:

Beim Registrieren will Delphi ja die Palette wissen. Bei Formularen ist das doch aber unsinnig. Schließlich "platziert" man Formulare nicht auf einem anderen Formular, sondern man erstellt diese halt mit

Datei -> Neu ->
und dann eben ->Formular , ->unit oder etc.

Wie kann ich dafür sorgen dass eine eigene Formularkomponente dort erscheint?

Viele Grüße!

shmia 13. Apr 2007 16:56

Re: Eigene Komponente von TCustomForm abgeleitet
 
Alles, was von TCustomForm abgeleitet ist braucht/darf nicht als normale Komponente installiert werden.
Deine Komponente ist ja in einer eigenen Unit.
Du kannst nun einfach diese Unit in dein Projekt einfügen und mit der Uses-Klausel einbinden.
Dann wird das Formular so wie es ist in die EXE eingebunden und du musst nur noch eine Instanz erzeugen:
Delphi-Quellcode:
uses ...,MeinSuperFormular;

var
   f : TMeinSuperFormular;
begin
   f := TMeinSuperFormular.Create(Application);
   try
      f.ShowModal;
   finally
      f.Free
   end;
end;
Du kannst aber auch von diesem Formular ableiten und somit die vorgegebenen Properties ändern und auch alle Events benützen.
In der IDE -> Datei -> Neu... -> den Reiter mit dem Namen deines Projekts auswählen und dann TMeinSuperFormular auswählen.

SirThornberry 13. Apr 2007 17:00

Re: Eigene Komponente von TCustomForm abgeleitet
 
@shmia: Er will es aber nicht dynamich erzeugen sondern im Designer weiter bestücken.
Ich weiß das es irgendwie ging, weiß im Moment nur nicht mehr wie (auf jeden fall musste man das Form nicht registrieren)

shmia 13. Apr 2007 17:16

Re: Eigene Komponente von TCustomForm abgeleitet
 
Zitat:

Zitat von SirThornberry
@shmia: Er will es aber nicht dynamich erzeugen sondern im Designer weiter bestücken.

Dann muss die Unit in einem Design-Time Package untergebracht werden und die Funktion RegisterNoIcon() aufgerufen werden.
Ich würde aber von dem ganzen Plan abraten, weil ein TCustomForm - Abkömmling gar nicht so allgemein sein kann, dass
man es in beliebigen Anwendungen gebrauchen kann. (Mal abgesehen von irgendwelchen Spielereien mit transparenten Formularen oder "Skins")

Muetze1 14. Apr 2007 00:08

Re: Eigene Komponente von TCustomForm abgeleitet
 
Ansonsten die Basisform aufmachen, Rechtsklick drauf und dort dann "In das Repository einfügen" und dann liegt es als Vorlage bei Datei -> Neu -> Andere... vor und kann frei von dem abgeleitet oder kopiert werden (je nach darunterliegenden Radiobutton Einstellung)

little-x 16. Apr 2007 08:02

Erstmal Dankeschön für die Antworten -
 
Ja, genauso ist es, ich will sie weiter bestücken und daher idealerweise in der Objektablage verfügbar haben. Grund ist dass ich an einer Software arbeite mit sehr vielen Teilprogrammen arbeite, deren deren Masken nun ein einheitliches Design- und auch Verhaltenskonzept verfolgen müssen.

Nun weiß ich zwar, dass ich einfach per
Zitat:

Rechtsklick -> In Objektablage zufügen
das bewerkstellige, aber das genügt nicht, weil ich die Vorlage auch sukzessive weiterentwickeln möchte und dann die Änderungen in allen Programmen durch einfaches Kompilieren wirksam werden lasse.

Ich habe gehört, das geht, allerdings habe ich hier 3 dicke Delphi-Bücher, darunter das offizielle Entwicklerhandbuch, aber DAS steht nicht drin...

Viele Grüße!

uwewo 16. Apr 2007 08:21

Re: Eigene Komponente von TCustomForm abgeleitet
 
Hallo little-x,

hier habe ich was gefunden für dich, sollte die helfen.

little-x 17. Apr 2007 13:44

LÖSUNG GEFUNDEN -> Jetzt Folgeproblem! Jetzt aber allgeme
 
Hallo,

Euer letzter Tipp hat's gebracht. Nach einiger Suche nach der Unit designIntf.pas hab ich das jetzt mit RegisterComponents hinbekommen.

Jetzt möchte ich die Komponente (-nklasse) sukzessive weiterentwickeln (Properties, Konstruktoren, Eigenschaften erweitern etc.)...

Wenn ich das aber mache, wirken sich die Änderungen nicht aus, auch wenn ich die Unit, in der ich die Komponente deklariert habe, neu compiliere.

Könnte es sein dass ich die Klasse neu registrieren muss? Wenn ich das aber versuche, kommt die Fehlermeldung "...Exception...Eine Klasse mit dem Namen blabla existiert bereits." Auch wenn ich vorher ein Unregister mache, klappt es nicht.

Was mach ich jetzt falsch?

Grüße

Muetze1 17. Apr 2007 14:05

Re: Eigene Komponente von TCustomForm abgeleitet
 
Schonmal in der Form-Textansicht kontrolliert, ob ein korrektes "inherited" anstatt "object" vermerkt wurde?


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