![]() |
Tutorial für visuelle Komponenten gesucht
Hallo,
kennt jemand ein vernünftiges Tutorial, in dem die Erstellung visueller WinForms-Komponenten erklärt wird? Insbesondere eine Aufstellung der möglichen Vorfahren und ihrer Methoden (und welche Methoden man überschreiben sollte) wäre interessant. Gruß xaromz |
Re: Tutorial für visuelle Komponenten gesucht
Meinst Du die Erstellung von eigenen visuellen Komponenten? wie hier:
![]() |
Re: Tutorial für visuelle Komponenten gesucht
Hallo,
Zitat:
Gruß xaromz |
Re: Tutorial für visuelle Komponenten gesucht
Zitat:
Dafür bietet Delphi.NET folgendes Vorgehen:
Delphi-Quellcode:
Diese Vorlage kannst Du nach eigenen Vorstellungen abwandeln, z.B. von Panel abgeleitet:
type TComponent = class(System.ComponentModel.Component)
Delphi-Quellcode:
Welche Vorfahren verwendet werden und welche Methoden überschrieben werden sollten, hängt natürlich von Deinen Vorstellungen und Wünschen ab. Dafür gelten die gleichen Regeln wie bei Delphi für Win32:
type TComponent = class(System.Windows.Forms.Panel)
Ein Tutorial kenne ich nicht. Ich habe mich orientiert an: Doberenz/Gewinnus: Borland Delphi 2005 für NET, Hanser-Verlag, ISBN 3-446-40202-0, Seite 717 ff. Ich schlage vor, Du versuchst erst einmal, mit diesen Hinweisen weiterzukommen, und danach sagst Du genauer, was für eine Komponente Du erstellen willst mit welchen Eigenschaften und Methoden. Gruß Jürgen |
Re: Tutorial für visuelle Komponenten gesucht
Hallo,
Zitat:
Zitat:
Zu "welche Methoden ich überschreiben muss": Wenn ich weiß, welche Methoden es gibt, und was diese machen, dann weiß ich auch, welche ich überschreiben muss. Leider fehlt mir hier eine Übersicht. Zitat:
Zitat:
Zitat:
![]() P.S. Falls es so rüber gekommen sein sollte, dass ich gerade anfangen will, Komponenten zu entwickeln, und mir die Grundlagen fehlen: Nein, ich will mein Wissen nur auf WinForms ausdehnen. Gruß xaromz |
Re: Tutorial für visuelle Komponenten gesucht
Oha, da hast Du Dir ja einiges vorgenommen:
Zitat:
Bei Deinen Vorkenntnissen weißt Du doch aber ziemlich gut, wie Du vorgehen musst. Dein Problem dürfte in erster Linie die hervorragende Borland-Hilfe für NET sein. Statt dessen musst Du Dich mit der .NET Framework SDK-Dokumentation befassen; als Ausgangspunkt empfehle ich ![]() Wenn Du Zugriff auf den Quelltext von MWKEdit hast, dann kannst Du meiner Ansicht nach wirklich so vorgehen, wie Du es von Delphi/Win her gewöhnt bist: zunächst Eigenschaften und Methoden hinzufügen. Schwierig wird vor allem die ungewohnte Behandlung der Ereignisse werden. Ich hatte mal eine kurze Anleitung in einem DP-Beitrag eingegeben, die Khabarakh leicht geändert hatte, aber ansonsten als brauchbar bezeichnete. Leider finde ich diesen Beitrag nicht mehr; ich kann Dir - wenn gewünscht - dies zukommen lassen (öffentlich oder als PN). Ich hoffe, ich habe jetzt etwas helfen können. Jürgen |
Re: Tutorial für visuelle Komponenten gesucht
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Gruß xaromz |
Re: Tutorial für visuelle Komponenten gesucht
Moin xaromz :hi:
Schnappe dir einfach mal den Refletor und "surfe" durch die FCL. Das ist praktisch so als würdest du in den VCL Sourcen wühlen, nur ein wenig geordneter, weil typenbezogen. Was Jürgen mit Events meint ist ein kleiner Kulturschock von Delphianern wenn sie es mit .Net zu tun bekommen. In Delphi32 hieß ein event OnClick und war einfach nur eine property eines Funktionszeigers. In .Net heißt er dann Click und ein Event ist dort ein eigener Membertyp. Er ähnelt ener Property, doch anstatt get_/set_ haben seine Accessor die prefixe add_ und remove_. Konsumenten deiner Klasse können also nur Delegateinstanzen hinzufügen oder ihre eigenen entfernen, aber nicht direkt den ganzen Event besetzen und somit auch nicht andere Eventhandler überschreiben. In C# sähe das so aus:
Code:
Entgegen den Hirnies in die die MSDN Docs zu dem Thema schrieben, solltest du bei der Abfrage ob dein Event leer ist nicht das Eventfeld hernehmen.
public event DeinDelegate DeinEvent;
protected virtual void OnDeinEvent() { DeinDelegate deinEvent = DeinEvent; if(deinEvent != null) deinEvent(someParameter); } Delegates sind immutable, d.h. wenn jemand zwischen deiner Null-Prüfung und dem Ausführen den letzten Verweis eines Handlers in einem anderen Thread entfernt, würde dein Feld null sein. Und du würdest versuchen einen null-Zeiger auszuführen. :shock: Deshalb packe ich es immer in eine lokale Variable und prüfen die bevor ich sie ausführe. btw: Am 25.10. ist mal wieder DP Stammtisch in M., da kannst du mich ja persönlich ausquetschen. :mrgreen: |
Re: Tutorial für visuelle Komponenten gesucht
@xaromz
Beachte: Events sind unter NET immer Multicast-Events. Zitat:
Zitat:
Gruß Jürgen |
Re: Tutorial für visuelle Komponenten gesucht
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 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