Announcement

Collapse
No announcement yet.

Von Component-Klasse ableiten in C#-Builder

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Von Component-Klasse ableiten in C#-Builder

    Hallo zusammen,
    da ich die von Delphi bekannten DataModule in C# nachbilden wollte, bin ich auf die Klasse "Component" gestoßen, die ebenso wie "Form" mit Ressourcen versehen wird.
    Während die C#-Builder IDE in der Objektgalerie alle Forms des Projekts zur Ableitung anbietet, passiert das leider nicht mit Component-Objekten.
    Kennt jemand eine Möglichkeit, von einer eigenen Component-Basisklasse abzuleiten? Ich möchte dabei wie bei Forms den Designer nutzen können.

    Danke im voraus
    Reinhard

  • #2
    Einfach das Object selbst eintragen von dem du ableiten möchtest. In VS funktioniert das dann ohne Probleme. C# Builder weiss ich nicht kannst du dann ja posten

    <PRE>

    public class MyBaseComponent: System.ComponentModel.Component
    {

    }

    public class MyComponent: MyBaseComponent
    {

    }

    </PRE&gt

    Comment


    • #3
      Ach ja -> wenn du im Konstruktor Code ausführst, musst du daran denken das der auch ausgeführt wird wenn du die Klasse im Form Designer öffnest. Wenn du das nicht willst kann du die bool Variable "DesignMode" abfragen. Der Form Designer führt beim anzeigen der Form den Code nämlich aus

      Comment


      • #4
        Danke für die Antwort.

        Die Ableitung als solche funktioniert zwar, aber es fehlt dabei eine eigene Ressourcen-Datei. So kann ich MyComponent leider nicht visuell im Designer bearbeiten, sondern nur MyBaseComponent

        Comment


        • #5
          Aber eigentlich sind doch in C# alle "Resourcen" im Quelltext deklariert? Oder macht der das anders

          Comment


          • #6
            Das stimmt, was du sagst. Es ist auch tatsächlich so, dass die Objekte erzeugt und deren Eigenschaften gesetzt werden über den Code. Trotzdem wird je Form-Datei eine .resx-Datei im XML-Format angelegt, die in der Hilfe als Ressourcendatei bezeichnet wird. Viel steht da nicht drin. Ob man auf diese Datei auch verzichten kann, weiß ich nicht.

            Ich weiß nur, dass bei direkt von Component abgeleiteten Klassen ebenfalls eine solche .resx-Datei angelegt wird. Aber halt nicht bei weiterer Ableitung davon.
            Ich bin jetzt mal davon ausgegangen, dass ich deswegen auch nicht im Designer an die enthaltenen Controls drankomme.

            Gruß Reinhar

            Comment


            • #7
              Ok, versuch mal einfach eine neu Componente anzulegen. Dann legt er diese Datei aufjedenfall mit an und danach einfach die Vererbung eintragen. Bei Windows Forms funktioniert es in VS.NET ohne Probleme. Eventuell vielleicht die modifizierer auf protected stellen

              Comment


              • #8
                Habe erst eine Componte MyBaseCompo mit einem OleDbDataAdapter angelegt. Dabei wurde eine .resx-Datei mit gleichem Namen angelegt.

                Habe dann eine neue Componente MyDerivedCompo angelegt, dann ein DataSet im Designer draufgezogen, wodurch auch die .resx-Datei mit angelegt wurde.

                Anschließend habe ich MyDerivedCompo von MyBaseCompo statt von Component abgeleitet.

                Jetzt kann ich zwar zumindest MyDerivedCompo mit dem DataSet visuell bearbeiten, aber der geerbte OleDbDataAdapter erscheint nicht visuell - selbst wenn der Modifizierer auf public gestellt wird.

                Was ich ausserdem verwunderlich finde, ist dass Component im Designer eine "Name"-Eigenschaft hat und auch mit abspeichert, die ich aber nicht bei der Klasse finde.

                Ich gebe jetzt erst einmal entnervt auf. Vielleicht kann man ja Components erst in C#-Builder 2.0 mit visueller Unterstützung ableiten

                Comment

                Working...
                X