AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# Eigenes Ereignis für eine Klasse
Thema durchsuchen
Ansicht
Themen-Optionen

C# Eigenes Ereignis für eine Klasse

Ein Thema von Luckie · begonnen am 15. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 20:56
So, ich habe das jetzt mal nach diesem Galileo Dingsbums probiert. Hier mal der Komplette Source im Anhang.

So langsam habe ich fast die Nase voll. Muss das denn so kompliziert sein?
Angehängte Dateien
Dateityp: zip filesplitter_196.zip (30,6 KB, 4x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 20:59
Das Thema mit den Namespaces von Help 2.0-Dateien hatten wir doch schon bei deiner CHM-Datei, die Links aus dem Framework benutzt. Ich sehe ja von hier nicht, welche Version oder Sprachversion du benutzt. Also, du könntest entweder im Hilfebetrachter von Microsoft nachschauen, ob der Name
Code:
MS.NETFrameworkSDKv1.1.DE
mit deiner Version übereinstimmt, oder du schaust im Index unter "Auslösen von Ereignissen", oder du benutzt die Suche und suchst nach "AlarmEventArgs". Das sollte dich alles in das entsprechende Kapitel deiner Framework-SDK-Version bringen.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#13

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:08
Zitat von Luckie:
So, ich habe das jetzt mal nach diesem Galileo Dingsbums probiert. Hie rmal der Komplette Source:
Code:
...eine Menge blödsinniger Code, der einem alles mögliche erklären will. Nur als abstraktes event Beispiel taugt er nix... :?
Zu solchen "Tutorials" sage ich jetzt besser nix...

Zitat von Luckie:
So langsam habe ich fast die Nase voll. Muss das denn so kompliziert sein?
Ist es doch gar nicht!
Wie deklarierst du in Delphi einen Event?
Du deklarierst einen FunktionsPointer:
type TSampleEventHandler = procedure (Sender :TObject;e :TMyEventArgs) of object; Jetzt braucht deine Klasse noch die passende Property
Delphi-Quellcode:
type TEventTest = class
  private
    fSampleEvent :TSampleEventHandler;
  public
    property OnSampleEvent :TSampleEventHandler read fEvent write fEvent;
end;
In irgend einer Methode würdest du ihn dann aufrufen:
Delphi-Quellcode:
var
  MyEventArgs :TMyEventArgs;
begin
  ...
  if Assigned(fSampleEvent) then
  begin
    MyEventArgs := TMyEventArgs.Create('Hallo');
    try
      fSampleEvent(this, MyEventArgs);
    finally
      MyEventArgs.Free();
    end;
  end;

  ....
end;
Ist doch fast das gleiche. Wobei ich den .Net Weg für einfacher halte. Der eigentliche Unterschied besteht nur darin, dass du in .Net soviele Delegates an den Event hängen kannst wie du lustig bist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:13
Na ja . bei .NET kommt noch die Klasse für die Argumente hinzu. Und igrnedwann gehen einem die Varaiblennenamen aus bzw. man hat so viele, dass man nicht mehr weiß, wo was hingehört. Ich bin übrigens der Meinung, dass ich schon ziemlich dicht dran bin. Könntest du mir bitte mal eben unter die Arme greifen (Aber bitte nicht kitzeln.) und den Rest machen? Es soll einfach nur der Fortschritt in der Progressbar angezeigt werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:14
Ich hänge mich mal rein und sage, dass sich der Quellcode mit folgenden Änderungen immerhin kompilieren lässt:
Code:
   class FileSplitter
   {   
      public delegate void FSProgressEventHandler(object sender, FSProgressEventArgs e);
      public event FSProgressEventHandler   OnProgressHandler;
      
      protected void OnProgress(FSProgressEventArgs e)
      {
         if(OnProgressHandler != null)
         {
            OnProgressHandler(this, e);
         }
      }
      

      /*
      FSProgress fsProgress;
      public void OnProgress(FSProgress fsProgress)
      {
         this.fsProgress = fsProgress;
         fsProgress.OnProgressHandler += new FSProgress.OnProgressHandler();
      }
      */

// der Rest der Klasse
}
und dann für die Form:
Code:
      public WinForm()
      {
         //
         // Required for Windows Form Designer support
         //
         InitializeComponent();

         FileSplitter splitter = new FileSplitter();
         splitter.OnProgressHandler += new FileSplitter.FSProgressEventHandler(this.FileSplittingProgress);
         
         //
         // TODO: Add any constructor code after InitializeComponent call
         //

      }


      private void FileSplittingProgress(object sender, FSProgressEventArgs e)
      {
         // mach was draus
      }
Boah, endlich kann ich auch mal den Chef kritisieren , @Luckie: Du solltest unbedingt deinen Klassencode in eine extra Datei auslagern. Bei dem Gewurschtel sieht man ja nicht durch.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#16

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:15
Zitat von Luckie:
Könntest du mir bitte mal eben unter die Arme greifen (Aber bitte nicht kitzeln.)
Ach so, Robert soll ... Okay,
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:26
Jetzt habe ich nur noch mit dieser Zeile Probleme:
Code:
fs.OnProgressHandler += new FileSplitter.FSProgressEventHandler(this.OnProgress, FSProgressEventArgs);
@Mathias: Das kommt im nächtsen Schritt, das Auslagern in eine extra Datei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#18

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:33
Zitat von Luckie:
Jetzt habe ich nur noch mit dieser Zeile Probleme:
Code:
fs.OnProgressHandler += new FileSplitter.FSProgressEventHandler(this.OnProgress, FSProgressEventArgs);
Mensch Micha...
Du kannst doch kein Delagte mit Parametern übergeben. Das geht doch mit Delphis FunktionsPointern auch nicht.

Du hängst einfach an den event eine neue Instanz deines Delegates ran. Diese bekommt die benötigte Methode im Konstruktor übergeben. So hatte es Methias doch auch geschrieben....
Zitat von Luckie:
@Mathias: Das kommt im nächtsen Schritt, das Auslagern in eine extra Datei.
Nix leichter als das.
Combine\add\new project\ClassLibrary
Einfach die Dateien mit deinen Klassen runter ziehen und in deiner WinForms GUI eine Referenz auf das neue ClassLib Projekt setzen -> färtsch.
Genau wie in Delphi32 mit Packages auch. (C# und Delphi sind sich viel ähnlicher als es die meisten wahrhaben wollen. )
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#19

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 21:33
Was für ein Problem ist denn das? Bei mir hat´s nur nix angezeigt, ansonsten ließ sich das Programm kompilieren und starten. Aber kann sein, dass ich das irgendwie falsch zugeordnet habe, und dass der Progressbar deshalb nichts zeigte. Die Dateiteile wurden problemlos erstellt. Hm ...

Ich wollte dir einfach nur zeigen, wo IMHO der Code reinmuss, und wie du das Ereignis dann in deiner Form benutzt. Ich habe -Gott sei Dank!- keine eigenen Werte gebraucht, darum ging das bei mir mit meinem Ereignis in meinen Pads ratzfatz.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#20

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 23:03
Hah, bei mir geht´s jetzt.
Vielleicht nicht gerade der schönste Code, aber das überlass ich dir.
Angehängte Dateien
Dateityp: zip filesplitter-patch_175.zip (4,2 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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