| |
ActiveX-ProgrammierungDLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: CrazyMetal | Datum: 28.01.10 09:44 |
| Hallo Zusammen,
ich suche eine Möglichkeit eine (VB6) ActiveX-DLL zu erstellen, in der eine Form (Kundenauswahl) angezeigt wird.
Ich bin mir nur nicht ganz sicher, wie ich den Rückgabewert bekomme, also die Kundennummer.
Meine fixe Idee war:
Dim myLong As Long
Dim kundenauswahl As CKundenauswahl
Set kundenauswahl = New CKundenauswahl
'Jetzt wird es spannend: Die Idee...
myLong = kundenauswahl.showForm() Die Form ist etwas komplexer, mit FelxGrid, etc...
Wie mache ich das am besten, das meine Klasse auf die Form "wartet" und beim Schließen einen Rückgabewert übergibt.
mfg,
Crazy
Btw: Übrigens bin neu hier *in die Runde wink*
Das Tolle am Internet ist: Jeder kann mitmachen!
Das Doofe am Internet ist: Jeder macht mit... | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 11:44 |
| Hm, bin mir nicht ganz sicher ob das in ActiveX genauso ist wie beim Rest von VB6, aber einen Versuch ist es Wert:
Wenn ich in VB6 einen Rückgabewert eines Formulars haben will, dann rufe ich die Form über einen kleinen Umweg auf.
Sprich: Nicht "myLong = kundenauswahl.showForm()", denn das geht in VB6 nicht.
Ich benutze eine Funktion als Interface:
Public Function OpenForm(Parent As Object) As Boolean
'Parameter überprüfen
'Diese Form Modal anzeigen.
Me.Show 1, Parent
'Rückgabeparameter zuweisen
OeffneForm = Result
End Function Result ist in diesem Fall eine globale Klassenvariable.
Das ist eine ziemlich Flexible Methode mit der sich auch Objekte etc. zurückgeben lassen.
War es das was du gesucht hast? | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: CrazyMetal | Datum: 28.01.10 11:55 |
| Jaein,
MCP schrieb:
Zitat: | | denn das geht in VB6 nicht. | |
Warum nich, dachte es wäre 'OO-Sprache ^^
Die Lösung ist nett, bin nur auf der Suche die Form in eine DLL zu packen, da sie bei x anderen Projekten sowieso benötigt wird.
Ergo muss ich nicht immer (VB)-Dinge in irgendein Projekt kopieren um einen Fenster zu bekommen was überall gleich ausschaut und vor allem die selbe Funktionalität hat.
Denk allein an die Wartung der Software, das Alles oder Nix Prinzip.
Wenn ich es in eine (normale) DLL packe, hmm, ja ich habe eine Klasse mit x Instanzen, aber wie sieht das mit der From aus, x Instanzen oder Singleton? - Btw, der VB Kompiler mag diesen Stunt ganz und gar nich.
Das Tolle am Internet ist: Jeder kann mitmachen!
Das Doofe am Internet ist: Jeder macht mit... | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 12:05 |
| Nun, du kannst die Funktion beliebig oft aufrufen. Der Code verzweigt dann an der Stelle. Damit hättest du dann n-Instanzen.
Die gebräuchliche Methode um Attribute einer Klasse (ein Forumular ist ja auch eine Klasse) abzufragen sind die Get und Set Methoden. Die finde ich in VB6 aber nicht sehr überzeugend.
Nach dem schließen der Form kannst du noch mit GetXXX() die Attribute abfragen. Das muss jedoch vor dem Unload() geschehen da die Attribute sonst nicht mehr instanziert sind.
Worüber meckert der Compiler genau? Ich habe die Methode ebenfalls in einer Form (somit ja quasi auch in einer Klasse, theoretisch) und dort läuft es hervorragend.
Der Aufruf aus deinem Projekt das die DLL einbindet müsste in etwa so aussehen:
Set DeinDialog = New DeineDialogKlasse
DeinDialog.OeffneForm(Me)
Unload KostenDialog
Set KostenDialog = Nothing Wenn der Dialog von einer Klasse aus aufgerufen wird kann man das natürlich auch wieder Kapseln. | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 13:03 |
| Hm, so ganz verstehe ich nicht was er da bemängelt (wie gesagt, kenne ActiveX nicht so gut).
Aber normal kann man in einer DLL doch mehrere Klassen einbinden. Wenn du jetzt eine Klasse als Public deklarierst kann die ja private Instanzen von anderen Klassen erstellen. Zur Not muss man wohl notgedrungen alles Public machen. Und was ich über VB6 und gelbe Eier denke weißt du ja. ;) | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 13:37 |
| Ja, du kannst die Parameter beliebig erweitern.
Es ist auch möglich Objekte per Referenz zu übergeben. Da hast du freie Auswahl. Bei Formularen hat man diese gesonderten Klasseneinstellungsmöglichkeiten meines Wissens nach generell nicht, es sind zwar Klassen, aber naja, merkwürdig eben... ^^
Irgendwie müsste sich das auf die Art aber schon zusammenfügen lassen. | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 13:54 |
| Wozu hat man denn MCPs? ^^
Biste heute Abend mal wieder online? ;) | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: CrazyMetal | Datum: 28.01.10 14:39 |
| Yay ^^ mit dem Testprojekt klappt es.
Ja bin nachher on, denke mal so ab 21:30h habe noch Dienst (Welt retten und so ^^).
Das Tolle am Internet ist: Jeder kann mitmachen!
Das Doofe am Internet ist: Jeder macht mit... | |
Re: DLL mit Formular, nur wie bekomme ich den Rückgabewert? | | | Autor: MCP | Datum: 28.01.10 14:41 |
| Mach nix kaputt!
Gut das es läuft. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|