Announcement

Collapse
No announcement yet.

C#-Fragen eines Delphi-Benutzers

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

  • C#-Fragen eines Delphi-Benutzers

    Hallo
    Habe vor einigen Monaten angefangen mich mit .NET im C#-Umfeld zu befassen. Habe mehrere Jahre Erfahrung in Delphi.

    Nachdem ich nun einiges gemacht habe um Best Practices heraus zu finden und ein bisschen zu lernen, möchte ich langsam nun mal ein älteres Delphi-Projekt nach C# bringen, um mal was "Echtes" zu machen.

    Daher einige konkrete Fragen:

    1. Gibt es in .NET/C# sowas ähnliches wie der Coolbar in Delphi ? Oder würde ich evtl. automatisch XP-Style Menüs und Tool/Coolbars bekommen, wenn ich auf XP ein Manifest einbinde ? (Hab's bisher nur auf einem Win2000-Rechner probiert)

    In VS 2005 scheint es dann einfacher zu werden coole XP-GUIs zu erstellen, da einiges gleich automatisch erfolgt...

    2. Auf dem Hauptformular meines Programms habe ich links (ca. 1/3 des Fensters) einen Baum (TreeView) - jenachdem welche Nodes angewählt sind, erscheint auf der rechten Fensterhälte unterschiedlicher Inhalt. Beispielsweise ein Grid oder sonst was. In Delphi hab ich das mit Panels gemacht, die ich je nach TreeView-Selection visible/invisible gesetzt habe.

    Was wäre hier der empfohlene Weg in C# ? Auch Panels oder gibt's vieleicht sowas wie Frames ?

    3. Thema Komponenten&Controls. Kann man sowas auch herunterladen und wie in Delphi installieren ? Wenn ja, sind da ja dann vermutlich Assemblies in DLLs, die ich dann mitgeben muss...

    4. Schickt es sich noch, Einstellungen in die Windows-Registry zu schreiben ? In meinem MSPress-Buch, das zwar nicht so tief in Details geht, dafür kommt man aber gut vorwärts, ist ständig nur die Rede der Config-Files (app.config etc.)

    Danke & Gruss
    Roger

  • #2
    zu 1, wenn nicht gleich von MS dann mit sicherheit von Fremdherstellern

    zu 2, M.E. spricht nichts dagegen. Kommt jedoch auf die Komplexität des "Panel-Codes" an, ob man nicht eine bessere Kapslung wählt (z.B. Abstrakte Ableitung von CustomControl als Basisklasse der einzuhängenden "Panels".

    zu 3, Richtig. Nur Delphi in der .NET-Version bietet AFAIK die möglichkeit die Assemblies in die Exe zu kompilieren. Aber es genügt diese im Anwendungsverzeichnis zu lassen. Installation im System ist i.d.R. nicht nötig.

    zu 4, Registry ist möglich, aber nicht mehr empfohlen. MS hat mal wieder erkannt das alles in eine Datei zu speichern auch seine Nachteile hat

    Comment


    • #3
      1: Ich habe an diversen Stellen, was von einem COM-Control Namens "Microsoft Coolbar" gesehen, das in VB offenbar Rebar hiess. Habe leider dieses Control auf meiner Kiste nicht installiert.
      Hab dann ein C#-Control gefunden, das ich zwar referenzieren, aber nicht installieren kann. Leider ist mein MSPress-Buch zu Hause :-/ Aber sollten visuelle COM-Controls nicht automatisch in die Toolbox aufgenommen werden ? Wie kann ich diese Controls denn verwenden ?

      2: Wie würde sowas aussehen ?

      4: Ich fand zwar die Registry sinnvoll, da sie auch insbesondere sich drum kümmert, dass immer die für den angemeldeten Benutzer richtigen Werte zur Verfügung standen.
      Nun, was wird den jetzt empfohlen ?

      5: Neue Frage ;-)
      Gibt's sowas Ähnliches wie eine ActionList in Delphi ? Die ActionList ist eine unsichtbare Komponente, im Prinzip ein Array/Collection von Funktionen. Die so implementierte Funktion konnte dann im Designer schön an Buttons, Menüs etc. angehängt werden..

      Comment


      • #4
        zu 1: Würde ich nicht nehmen. Wenn schon .NET-Programmierung dann keine COM-Komponenten. Damit handelt man sich alle nachteile von Installationaufwand und DLL-Hölle wieder ein

        zu 2, hier mal in Delphi-Syntax (bin da auch fitter):
        <pre>
        TBasePanel = class(TPanel)
        public
        function Setup: Boolean; virtual; abstract;
        ...
        end;

        SpecialPanel = class(TBasePanel)
        public
        function Setup: Boolean; override;
        ...
        end;
        </pre>
        Und im Selekt-Ereignis des TreeViews wird der Zustand des alten Panels evtl. gesicht (falls es freigegeben wird) und das neue erzeugt und angezeigt.

        zu 4: Du kannst ja in den XML-Ini-Dateien deine Daten ensprechend auch nach User organisieren. Oder für jeden User eine (zusätzliche) XML-Inidatei anlegen.

        zu 5, AFAIK gibt es sowas ähnliches erst mit VS.NET 2005. Ansonsten mal die Fremhersteller abgrase

        Comment


        • #5
          2: Was genau würde denn die Setup-Funktion machen ? Irgendein zuvor designted Panel auf visible setzen ?

          4: Naja hier scheiden sich einfach die Geister ;-)
          Sowas empfinde ich als Rückschritt zum INI-Gewurstel wie wir's in Win 3.x hatten. Da fand ich die Registry echt besser

          Comment


          • #6
            zu 2: Setup-Funktion ist nur ein Beispiel. Du definierst eine Basisklasse um das einhängen und handeln von ähnlichen "Panelklassen" zu vereinfachen bzw. ein gemeinsame Schnittstelle zu definieren. Was du genau machst must Du dir selbst überlegen.

            zu 4: Ist schon etwas besser als Ini unter Win3.1 (vor allem wen die Ini-Datei noch ins Systemverzeichnis geschrieben wurde). Ein einfaches XCopy/installation ist mit den Registry-Einträgen nicht möglich. Aber mit einer XML-Ini im Anwendungsverzeichnis

            Comment


            • #7
              Komponenten bekommt man in die Toolbox durch Rechtsklick+ hinzufügen, dann wählt man die entsprechende dll aus.

              frames aus delphi entsprechen UserControls in c#

              die manifestdatei kann man umgehen, wenn man im programm application.enablevisualstyles aufrif

              Comment


              • #8
                Danke Thomas

                Die Sache mit den User Controls ist cool ;-)

                Das einzig störende ist nun nur noch das Fehlen von Actions wie man sie aus Delphi oder C++ MFC kennt

                Comment


                • #9
                  Hallo,

                  &gt;..das Fehlen von Actions wie man sie aus Delphi ..

                  dafür gibt es bereits einen Nachbau: <i>http://www.codeproject.com/cs/miscctrl/actionlist.asp</i> (Implementation of Delphi's ActionList for Windows.Form

                  Comment

                  Working...
                  X