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/)
-   -   Prism VCL.NET -> Winforms .NET (https://www.delphipraxis.net/70599-vcl-net-winforms-net.html)

Alexander 1. Jun 2006 13:39


VCL.NET -> Winforms .NET
 
Hallo,
ich arbeite derzeit an mehreren kleinen .NET Programmen und nutze die Winforms und nicht die VCL.NET. Jetzt möchte ich aber eine Komponente, die ich sowohl als reine VCL und als VCL.NET Komponente habe, in einer Winforms Anwendung nutzen.
Ist das irgendwie möglich? Schließlich handelt es sich hierbei ja auch nur um eine DLL.
Ich meine darüber auch schon schon mal etwas gelesen zu haben, dass das funktioniert. Nur finde ich dazu nichts mehr :?
Mir ist klar, dass es dann kein reines .NET mehr wird, aber das ist mir zunächst erstmal wurscht :stupid: .

PS: Sourcen habe ich zwar diese sind aber mit mehreren 10 000 Zeilen nicht so handlich.

Bernhard Geyer 1. Jun 2006 13:59

Re: VCL.NET -> Winforms .NET
 
Wenns in Delphi gemacht wird: VCL2NET

Elvis 1. Jun 2006 14:27

Re: VCL.NET -> Winforms .NET
 
Implementiert TComponent nicht bereits IComponent?
Wenn nicht mach's einfach selbst, und schon kannst du die Komponente auf die .Net Design surface ziehen.
Wieviel dir das bringt sei mal dahin gestellt...

Alexander 1. Jun 2006 14:36

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Bernhard Geyer
Wenns in Delphi gemacht wird: VCL2NET

Ich konnte es zwar (bisauf das gezeigte Example) noch nicht ausprobieren, aber es sieht schon mal sehr interessant aus.
Hast du Erfahrung mit einer komplexeren in Delphi geschrieben Komponente ? Hat das irgendwelche Nachteile gegenüber "richtigen" Komponenten auf .NET Basis? (außer dass man es nur Windows nutzen kann)

@Elvis: Was genau meinst du mit "wieviel dir das bringt, sei mal dahin gestellt"? Meinst du es kommt zu massiven Problemen?

Bernhard Geyer 1. Jun 2006 14:38

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Alexander
Hast du Erfahrung mit einer komplexeren in Delphi geschrieben Komponente ?

Nein

Zitat:

Zitat von Alexander
Hat das irgendwelche Nachteile gegenüber "richtigen" Komponenten auf .NET Basis? (außer dass man es nur Windows nutzen kann)

Laxere Sicherheitseinstellungen werden notwendig sein wenn (wie allgemein wenn VCL.NET verwendet wird) da ja jetzt P-Invoke im Anwendungscode erfolgt und nicht mehr nur im .NET-Framework wo MS ja diesen .NET-Framework-DLL's das Vertrauen eh schon sehr hoch eingestellt hat.

Alexander 1. Jun 2006 14:43

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Alexander
Hast du Erfahrung mit einer komplexeren in Delphi geschrieben Komponente ?

Nein

Schade ;).

Zitat:

Zitat:

Zitat von Alexander
Hat das irgendwelche Nachteile gegenüber "richtigen" Komponenten auf .NET Basis? (außer dass man es nur Windows nutzen kann)

Laxere Sicherheitseinstellungen werden notwendig sein wenn (wie allgemein wenn VCL.NET verwendet wird) da ja jetzt P-Invoke im Anwendungscode erfolgt und nicht mehr nur im .NET-Framework wo MS ja diesen .NET-Framework-DLL's das Vertrauen eh schon sehr hoch eingestellt hat.
Ich schätze mal, dass es dadurch auch etwas langsamer läuft, oder? Aber bis es die Komponente auch in reinem .NET gibt, scheint es nichts besseres zu geben.

Bernhard Geyer 1. Jun 2006 14:56

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Alexander
Ich schätze mal, dass es dadurch auch etwas langsamer läuft, oder?

Wenn es viel P-Invoke gibt: Ja

Zitat:

Zitat von Alexander
Aber bis es die Komponente auch in reinem .NET gibt, scheint es nichts besseres zu geben.

Bastel dir eine Wrapper-Komponente die aktuell die VCL.NET-Komponenten beinhaltet und später intern durch die reine .NET-Komponente ersetzt wird.

Alexander 1. Jun 2006 15:13

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Alexander
Aber bis es die Komponente auch in reinem .NET gibt, scheint es nichts besseres zu geben.

Bastel dir eine Wrapper-Komponente die aktuell die VCL.NET-Komponenten beinhaltet und später intern durch die reine .NET-Komponente ersetzt wird.

Meinst du dann ohne die VCL2NET-Unit? Also quasi eine .NET Komponente, die dann die VCL.NET-Komponente enthält?

Bernhard Geyer 1. Jun 2006 15:15

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Alexander
Meinst du dann ohne die VCL2NET-Unit? Also quasi eine .NET Komponente, die dann die VCL.NET-Komponente enthält?

Mit VCL2NET-Unit. Aber ist schon sehr lange her das ich hier noch Details kenne.

Alexander 2. Jun 2006 09:19

Re: VCL.NET -> Winforms .NET
 
Ich habe jetzt einfach mal das Beispiel auf deren Seite genommen und das TEdit erst durch ein TMemo und schließlich durch mein TAdvMemo (von TMS-Software) ersetzt. Das TMemo funktioniert einwandfrei, das TAdvMemo jedoch nicht :sad:.
Das Problem scheint weniger an der VCL2NET Unit zu liegen, sondern an der fehlenden TAdvMemo.Resources. Kann man die irgendwie mit Delphi erzeugen lassen ? Das gleiche Problem tritt übrigens bei der Installation der VCL.NET Komponente auf.
Bei der Komponente liegen noch TAdvMemo.Res Dateien bei. Ein einfaches Umbenennen klappt leider nicht :sad:
Die reine VCL Komponente funktioniert übrigens.

Elvis 2. Jun 2006 09:33

Re: VCL.NET -> Winforms .NET
 
Du hättest gleich sagen können, dass es sich um ein Control handelt. :roll:

Alexander 5. Jun 2006 17:45

Re: VCL.NET -> Winforms .NET
 
Hallo,
also ich bin jetzt einen Schritt weiter. Ich kann jetzt das Control hinzufügen und es funktioniert auch so weit.
Bei der Komponente handelt es sich um ein TMemo bzw. ein TAdvMemo (bei beiden tritt der gleiche Effekt auf). Und zwar verliert das Memo den Fokus, wenn die Cursor Tasten oder Return gedrückt werden. Dieser Effekt ist natürlich nicht erwünscht ;).
Woran könnte das liegen? Bzw. wie kann ich das beheben?

Nachtrag:
Der Source:
Delphi-Quellcode:
var
  memo : TMemo;
begin
  memo := TMemo.Create(nil);
  memo.Text := 'select * from WetterData limit 0,50';

  memo.Parent := Self;
In meinem "richtigen" Programm habe ich das TMemo bzw. das TadvMemo global definiert. Tritt aber das gleiche auf.

Alexander 6. Jun 2006 12:47

Re: VCL.NET -> Winforms .NET
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe zwar einen Workaround gefunden, der mir aber persönlich nicht wirklich gefällt.
Und zwar setze ich den Fokus wieder per Hand auf das Memo und ändere dann die Caret-Position ebenfalls per Hand:
Delphi-Quellcode:
procedure TMDIChild.TMDIChild_KeyUp(sender: System.Object; e: System.Windows.Forms.KeyEventArgs);
begin
  // Hier werden die Cursor - Tasten abgefangen und der fokus wieder auf das Memo gelenkt:
  editor.SetFocus;
  if (e.KeyCode = Keys.Down ) then // nach unten
    editor.CurY := editor.CurY +1
  else if (e.KeyCode = Keys.Up ) then // nach unten
    editor.CurY := editor.CurY -1
  else if (e.KeyCode = Keys.Left ) then // nach unten
    editor.CurX := editor.CurX -1
  else if (e.KeyCode = Keys.Right ) then // nach unten
    editor.CurX := editor.CurX +1;
end;
Aber wie gesagt, es ist nicht wirklich befriedigend. Vor allem auch deswegen, dass der Fokus immer noch hin und her springt. Sprich anfangs hat das Memo den Fokus, dann wird z.b. die Up-Taste gedrückt, dann bekommt das nächste Control den Fokus und zack hat der Editor wieder den Fokus. Das entsprechende Control blinkt dann so schrecklich. Ich habe mal eine Testanwendung gemacht. Seht selbst.

Habt ihr bessere Ideen/Lösungen?

mirage228 6. Jun 2006 13:21

Re: VCL.NET -> Winforms .NET
 
Hi,

wenn ich die STRG oder ALT Taste während der Cursorbewegung verwende, gehts ohne Probleme.
Vielleicht hilft dir das ja weiter...

mfG
mirage228

Elvis 6. Jun 2006 13:30

Re: VCL.NET -> Winforms .NET
 
Was soll dieses Control denn können, was es nicht bereits in einer freien SWF-basierten Lib gibt?
Und wenn es ein paar Dinge mehr kann(, die du benötigst,) kann man die nachrüsten oder gar darauf verzichten?
VCL Controls in SWF zu benutzen ist zwangsläufig pain-ish in the ass-ish, du kannst ja nicht das Control selbst benutzen, nur den Wrapper. Und nun bist du darauf angewiesen, dass sich dieser Wrapper an die Regeln hält. (Was er anscheinend nicht tut)

Alexander 6. Jun 2006 13:55

Re: VCL.NET -> Winforms .NET
 
@Mirage Danke, das wäre vielleicht ein Ansatz. Auch wenn ich noch nicht genau weiß, wie mir das helfen soll :gruebel:

@Elvis: Es ist eine Komponente, die dem Editor vom VS und Delphi 2005/06 nachempfunden ist (also Syntaxhighlighting, Code-Completion, Code-Folding etc.). Das habe ich jedoch auch nicht getestet. Etwas vergleichbares habe ich so noch nicht gefunden. Ich habe eine Zeitlang mit dem Texteditor von Sharpdevelop rumgespielt. Aber das wahre war es auch nicht :?

Elvis 6. Jun 2006 14:13

Re: VCL.NET -> Winforms .NET
 
Dann schaue dir mal Fireball an.
Ähnlich wie Firebird von Interbase abstammt, stammt Fireball von Componas' Editor Control ab.

Alexander 6. Jun 2006 14:36

Re: VCL.NET -> Winforms .NET
 
Was genau kann denn Fireball? Hast du evtl. eine Feature-List oder so etwas?
PS: Wobei ich derzeit immer noch an meinem TAdvMemo hänge ;). Allein schon wegen der gekauften Lizenz ;)

Elvis 6. Jun 2006 17:08

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Alexander
Was genau kann denn Fireball? Hast du evtl. eine Feature-List oder so etwas?

Du hast doch sicher selbst einen Browser. Und der Link oben führt dich zur Projektseite, die dich sicherlich zu einer Seite mit der Featureliste führt.

Zitat:

PS: Wobei ich derzeit immer noch an meinem TAdvMemo hänge ;). Allein schon wegen der gekauften Lizenz ;)
Selbst Schuld. Aber ein VCL Control in SWF zu nehmen ist doch etwas krank, findest du nicht? ;)

Alexander 6. Jun 2006 21:10

Re: VCL.NET -> Winforms .NET
 
Zitat:

Zitat von Elvis
Zitat:

Zitat von Alexander
Was genau kann denn Fireball? Hast du evtl. eine Feature-List oder so etwas?

Du hast doch sicher selbst einen Browser. Und der Link oben führt dich zur Projektseite, die dich sicherlich zu einer Seite mit der Featureliste führt.

Die habe ich ja eben nicht gefunden ;). Ich würde nicht fragen, wenn ich nicht vorher selbst gesucht hätte :). Selbst im Wiki auf deren Seite scheint nichts zu sein :?
Aber ich habe noch mal gegoogelt und habe das hier gefunden:
http://www.codeproject.com/useritems...codeeditor.asp
Da ist zumindest mal ein Bildchen. Dann habe ich noch ein wenig im Forum von FireBall rumgelesen. Aber so richtig viel scheint da nicht los zu sein. Zumal Code-Completion und Code-Folding nicht ganz so einfach zu implementieren ist. Oder hast du da mehr Erfahrung und hast die Komponente schon einmal ausprobiert ?
Ich muss zu geben, dass ich noch nichts runtergeladen habe. Aber ich habe so meine Bedenken, dass das mit Delphi 2005 funktionieren wird, da Fireball doch ein .NET 2 Assembly zu sein scheint, oder nicht?

Zitat:

Zitat:

PS: Wobei ich derzeit immer noch an meinem TAdvMemo hänge ;). Allein schon wegen der gekauften Lizenz ;)
Selbst Schuld. Aber ein VCL Control in SWF zu nehmen ist doch etwas krank, findest du nicht? ;)
Ich finde die Idee als Übergangslösung sogar recht elegant. So ist man zunächst erstmal von dem Komponentenhersteller unabhängig, kann deren Lizenzen weiterverwenden und ggf. zu einem späteren Zeitpunkt ersetzen. Eigentlich schade, dass da nichts von Borland in der Richtung gekommen ist. VCL.NET ist in meinen Augen krank :P, zumindest für neue Projekte.


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