Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   C# Komponente mit Event versehen. (https://www.delphipraxis.net/96229-komponente-mit-event-versehen.html)

Alexander 20. Jul 2007 13:07


Komponente mit Event versehen.
 
Hallo DP'ler :),
ich probiere gerade mal ein wenig C# aus und schreibe mir eine kleine Komponente für SQL.
Jetzt möchte ich der Komponente Events hinzufügen. Probiert habe ich das so:
Code:
namespace QueryBuilder
{
    public partial class SQLQueryPanel : Panel
    {
        //-------- EVENTS ----------------------------------------------------------------------------------
        public delegate void SqlEventHandler(object sender, SqlUpdateEventArgs e);
        public event SqlEventHandler SqlChanged;

        protected void OnSqlChanged(SqlUpdateEventArgs e) // hier mag der Compiler nicht mehr weiter arbeiten
        {
            if (SqlChanged != null)
            {
                SqlChanged(this, e);
            }
        }

        public void updateSql()
        {
            ISqlExporter exporter = new AnsiSql92Exporter();
            OnSqlChanged(new SqlUpdateEventArgs(exporter.getSql(children, joinList)));
        }
    }
}
Die Klasse SqlUpdateEventArgs sieht dabei so aus:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace QueryBuilder
{
    class SqlUpdateEventArgs : System.EventArgs
    {

        public SqlUpdateEventArgs(string sql)
        {
            this.sql = sql;
        }
        public string Sql
        {
            get
            {
                return(sql);
            }
        }
        string sql;
    }
}
Leider bekomme ich folgenden Fehler:
Inkonsistenter Zugriff: Parametertyp "QueryBuilder.SqlUpdateEventArgs" ist weniger zugreifbar als Methode "QueryBuilder.SQLQueryPanel.OnSqlChanged(QueryBuil der.SqlUpdateEventArgs)".
Verwiesen wir auf die markierte Stelle im Quelltext oben.

Kann mir da jemand helfen? Ich verstehe den Fehler leider nicht :(.

Besten Dank :)

Sidorion 20. Jul 2007 13:30

Re: Komponente mit Event versehen.
 
Dein Delegat ist public, die eventargs-Klasse nicht.
Demzufolge kann man dem Event keinen Handler zuordnen, da man den Typ der Übergabe nicht angeben kann (es ist also nicht möglich eine passende Handler-Prozedur zu deklarieren)

Alexander 20. Jul 2007 16:48

Re: Komponente mit Event versehen.
 
Ahh, vielen Dank. Das war's.
Muss aber schon zu geben, dass C# doch eigentlich gar nicht so schlecht ist :P.

Khabarakh 20. Jul 2007 16:55

Re: Komponente mit Event versehen.
 
Zitat:

Zitat von Alexander
Muss aber schon zu geben, dass C# doch eigentlich gar nicht so schlecht ist :P.

Die Sprache ist eigentlich ziemlich witzlos, richtig lustig wird es erst in Verbindung mit Framework(s), IDE und Blogosphäre ;) .

Alexander 20. Jul 2007 16:58

Re: Komponente mit Event versehen.
 
Natürlich, dass war auch alles zusammen gemeint ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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