Autor Beitrag
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Di 27.08.02 21:48 
Hallo!

Ich verwende Delphi 3.0 Professional und habe folgendes Problem: Ich möchte eine eigene Komponente erstellen, die TMainMenu in meinem Formular ersetzen soll. Jetzt ist es so, dass ich Properties zu den Eigenschaften der TMenuItem-Liste hinzufügen möchte ...

Frage: Wie funktioniert das? Ich möchte immer noch ein Menü, das man über den Objektinspektor so bequem und einfach erstellen kann wie immer, nur dass ein TMenuItem-Eintrag zwei oder drei Properties mehr besitzt ...

Wie man zu Komponenten Properties hinzufügen kann, weiß ich bereits, es geht mir jetzt nur um diese TMenuItems ...

Bitte helft mir so schnell wie möglich, stehe unter (selbst auferlegtem) Zeitdruck, da ich dieses eine Projekt, an dem ich momentan arbeite, so schnell wie möglich fertiggestellt haben will, und dafür ist dieser Weg leider un-umgänglich ...

Vielen Dank im Voraus!

Yours,
Indeterminatus.

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
MedanoCC
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 30.08.02 00:26 
Wenn Du über die Komponenten-Lösung gehen willst, also kein MainMenü mithilfe der WinAPI erstellen willst, dann musst Du "ganz einfach" eine neue Komponente erstellen, die von der Komponente TMenu oder TMainMenu (das weiß ich jetzt grade nicht genau) abgeleitet ist.

Also, Datei -> Neu -> Komponente -> abgeleitet von TMenu -> Neuer Name z.B TMenuEx -> Ok und fertig.

Jetzt musst Du nur noch Deine neune Properties in die jeweiligen Sections (private, public, protected or published) eintragen und los kanns gehen.

Es lassen sich somit auch vorhandene Funktionen überschreiben und zum Teil sinnvoll erweitern, sodass man aus der Stammkomponente eine hübsche und vielleicht viel praktischere eigene Komponente entwickeln kann.

P.S. Nicht vergessen, den Constructor "Create" zu überschreiben und (!!) mithilfe inherited, wie in jeder anderen überschriebenen Function, die Parameter an die Stammfunktion weitergeben. (Mehr dazu in der Delphi Hilfe unter "Komponenten erstellen")


Greetings

MedanoCC
Indeterminatus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Fr 30.08.02 23:08 
Danke für die Antwort! Allerdings muss ich leider zugeben, dass sie mir nicht weitergeholfen hat. Die Schritte, die Du vorgeschlagen hast, habe ich bereits erledigt.

Es sieht nur so aus, dass eine Komponente, die von TMainMenu abgeleitet wurde, eine Unterklasse TMenuItems besitzt, die wiederum TMenuItems besitzen kann (und in der Regel auch tut).

Das ganze Problem bei der Sache ist, dass die ganzen für mich sinnvollen Properties nicht in der TMainMenu-Klasse selbst, sondern in TMenuItem liegt - dort sind nämlich alle Properties zu den einzelnen Menü-Einträgen gespeichert.

Meine Frage war, wie man diese Properties in TMenuItem erweitern kann, also zur kompletten Struktur ein oder zwei Einträge mehr machen kann.

Die Anwendung soll folgendermaßen aussehen:

Ich will ein Hauptmenü, das (pro Menüeintrag!) folgende Properties zusätzlich haben soll:

* Boolean-Variable: FIsScripted
* Word-Variable: FTriggerNum

Beim Aufruf der Methode Click soll automatisch ein Script ausgeführt werden (falls FIsScripted auf TRUE gesetzt ist) und zwar mit der ID FTriggerNum.

Es geht mir also nicht darum, zu TMainMenu ein paar Properties hinzuzufügen, sondern zu der Liste von TMenuItems, die wiederum von TMainMenu verwaltet werden ...

Kannst Du mir bitte dabei weiterhelfen ? Ich weiß nämlich nicht, wie das funktionieren soll ... was ich auf jeden Fall vermeiden will, ist dass ich eine Ableitung von TMenuItem machen muss und den gesamten Sourcecode auf meine Wünsche anpassen soll ... ich habe mir den Quellcode der Unit menus.pas schon einmal angesehen und der Aufwand wäre mir um einiges zu groß ...

Falls Du eine einfachere (und schnellere!) Lösung parat hättest, wäre mir dadurch echt geholfen !

Indeterminatus.

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
XPert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129

Windows 98/00/Me/XP
D6 Pers
BeitragVerfasst: Sa 31.08.02 00:58 
Hi
ich bin mir zwar nicht ganz sicher, weil ich jetzt auf'm sprung aus'm netz bin, aber versuch's doch mal mit folgendem link, vieleicht hilft er dir:
www.delphi-treff.de/...als/komponentenkurs/

_________________
MfG Fabian Schweers :lol:
MedanoCC
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 31.08.02 22:53 
:D @Indeterminatus: Also, ich denke, der von XPert genannte Link wär wirklich was für Dir. Das sind ja schon ziemlich *räusper* anfängliche Fragen der Komponentenentwicklung.

Aber nur noch kurz dazu was. Dann leite eben die Komponente nicht von TMainMenu ab, sondern dann leite sie eben von TMenuItem ab. Da musst Du noch überhaupt nix dazu programmieren ! Dazu ist ja das "ableiten" da !!!

Dann einfach, wie ich schon gesagt habe, die gewünschten Properties hinzufügen, Deine Functions einbauen und fertig !

Aber schau Dir am besten den Link an...


Nix für ungut

MedanoCC