AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein dotnet:Komponente in einem anderen Formular ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

dotnet:Komponente in einem anderen Formular ansprechen

Ein Thema von Rainer Wolff · begonnen am 20. Mai 2010 · letzter Beitrag vom 21. Mai 2010
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

dotnet:Komponente in einem anderen Formular ansprechen

  Alt 20. Mai 2010, 19:25
Hallo,

obwohl eingefleischter Delphianer, bin ich trotzdem dabei, mal zu schauen, wie der Mitbewerber dotnet so funktioniert. Und da sicherlich einige hier im Forum auch zusätzlich mit dotNet arbeiten, frage ich mal neugierig:

In Delphi kann ich bequem im Objektinspektor auf Komponenten in anderen Formularen zugreifen, sobald ich das Formular in die uses-Klausel aufgenommen habe (z.B. vom DBGrid im Formular auf die Datasource im Datenmodul).

Wie geht so was in dotNet? Die Datenanbindung funzt ja dort über das Dataset, auf das ich auch aus allen Formularen zugreifen kann.

Aber ich will versuchsweise meine eigenen Komponenten nach dotNet übertragen, und da habe ich auch eine "Masterkomponente", die von mehreren Clientformularen angesprochen wird.
Klar kann ich das ganze in dotNet im Quelltext verknüpfen, aber ich möchte das ganze genauso bequem per Mausklick konfigurieren wie in Delphi. Und da taucht halt meine Masterkomponente aus Formular 1 nicht in der Clientkomponente in Formular 2 auf, wenn ich im Objektinspektor klicke.

Da mir Google nicht helfen konnte (wahrscheinlich fehlen mir nur die richtigen Suchstichworte), hoffe ich, hier kann mir jemand helfen.

Gruß Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: dotnet:Komponente in einem anderen Formular ansprechen

  Alt 20. Mai 2010, 23:05
Zitat von Rainer Wolff:
Und da taucht halt meine Masterkomponente aus Formular 1 nicht in der Clientkomponente in Formular 2 auf, wenn ich im Objektinspektor klicke.
Wie soll das denn funktionieren, wenn Formular 1 mehrfach instantiiert wird? Das geht in Delphi doch nur durch diese merkwürdigen globalen Form-Singletons.
Selbst im Code kannst du mit den Standardeinstellungen nicht auf Komponenten anderer Forms zugreifen, .NET meint es ernst mit der Kapselung . Subforms sollten komplett unabhängig von ihrem Parent sein.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: dotnet:Komponente in einem anderen Formular ansprechen

  Alt 20. Mai 2010, 23:41
Zitat von Khabarakh:
Wie soll das denn funktionieren, wenn Formular 1 mehrfach instantiiert wird? Das geht in Delphi doch nur durch diese merkwürdigen globalen Form-Singletons.
Selbst im Code kannst du mit den Standardeinstellungen nicht auf Komponenten anderer Forms zugreifen, .NET meint es ernst mit der Kapselung . Subforms sollten komplett unabhängig von ihrem Parent sein.
An der Stelle sind diese merkwürdigen Form-Singletons aber recht angenehm zu benutzen, finde ich, Kapselung hin oder her. Formular 1 ist eben ein Singleton, das muss mir schon klar sein, wenn ich das einsetze.
Aber dann mal schnell alle Komponenten auf Formular 2 markieren, Komponenten.Masterkomponente im Objektinspektor auf Formular1.Masterkomponente setzen, damit komm ich sehr gut zurecht, ohne mir über CleanCode zuviel Gedanken zu machen.

Und ganz klar ist mir an der Stelle jetzt auch nicht, wo der wesentliche Unterschied zu den Datasets von .Net liegt, die auch in mehreren Formularen verwendet werden können, das sind doch auch Singletons. Ich würde ja auch meine Masterkomponente(n) so in der Richtung Dataset einbauen, wenn ich wüßte, wie man das in .Net macht.

Aber momentan kenn ich mich ja mit .Net soviel aus, dass ich für das simpelste StrToInt erst mal ein Buch zur Hand nehmen muss.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: dotnet:Komponente in einem anderen Formular ansprechen

  Alt 21. Mai 2010, 00:27
Zitat von Rainer Wolff:
Kapselung hin oder her.
Wenn es darum geht, ob ich lediglich einen weiteren Konstruktor-Parameter hinzufügen muss, nehme ich lieber "hin" . Ich weiß nicht genau, was für ein Beispiel du gerade im Kopf hast, aber spätestens mit WPF/Silverlight würde es wahrscheinlich sowieso wieder komplett anders gelöst werden .

Zitat:
Und ganz klar ist mir an der Stelle jetzt auch nicht, wo der wesentliche Unterschied zu den Datasets von .Net liegt, die auch in mehreren Formularen verwendet werden können, das sind doch auch Singletons.
So würde ich nur etwas mit einer global registrierten Instanz bezeichnen, aber keine Instanz, die von lose gekuppeltem Code von Komponente zu Komponente gereicht wird. Aber DataSets sind (.NET-unabhängig) doch sowieso nur eine Überbrückung, bis man mit O/RMs richtig loslegen kann .

Zitat:
Aber momentan kenn ich mich ja mit .Net soviel aus, dass ich für das simpelste StrToInt erst mal ein Buch zur Hand nehmen muss.
In dem steht hoffentlich nicht Convert.ToInt32 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#5

Re: dotnet:Komponente in einem anderen Formular ansprechen

  Alt 21. Mai 2010, 07:10
1.) DataSets in .NET sind langsam. Insbesondere die typisierten. So langsam und so speicherfressend, dass man sie besser nicht (also gar nicht) einsetzt.

Datenzugriff in .NET läuft inzwischen besser via LINQ 2 SQL oder via Entity Framework. Oder, wenn man viel Doku lesen mag, über nHibernate. Oder, wenn man Geld ausgeben mag, über andere O/R Mapper.


2.)
Code:
var myInt = Int32.Parse("123"); // wirft ne exception wenn der String kein Int ist
oder
Code:
int myInt;
if (Int32.TryParse("12 Hallo", out myInt)
{
  // dosomething with int
} else {
  // hier hat MyInt den Default-Wert (0), es wird keine Exception geschmissen
}
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:23 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