vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Printer-Objekt.Eigenschaft aus Variable? 
Autor: DustyD.
Datum: 13.04.15 23:15

Ja, super - das ist genau das, was ich gesucht habe! Vielen Dank dafür!!

Ich hatte bei der Suche nach einer Lösung bereits diesen MSDN-Artikel gefunden https://msdn.microsoft.com/de-de/library/bb979215.aspx , aber irgendwie habe ich das Beispiel nicht kapiert gehabt. Da war Deine Erklärung echt sehr viel hilfreicher!

Eine kleine Nachfrage habe ich aber noch (mit dem neuen Wissen werden natürlich auch direkt neue Begehrlichkeiten wach *gg*): Ich kann ja mit CallByName nicht nur Eigenschaften, sondern auch Methoden aufrufen. Wie müsste denn der Aufruf aussehen, wenn ich nun bspw. die "Line"-Methode ausführen möchte (die hat ja eine etwas "krumme" Syntax):

Printer.Line (0,0)-(100,0)
 
CallByName printer,line,vbmethod,???
Ich habe alle mir vorstellbaren Schreibweisen durch, komme aber nicht über einen Compilerfehler hinaus.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Printer-Objekt.Eigenschaft aus Variable? 
Autor: DustyD.
Datum: 11.04.15 23:28

Hallo liebe Experten,

kann ich den Inhalt einer Variablen für eine Objekt-Eigenschaft benutzen? Also bspw.

strText = "fontbold = true"
printer.strText

So geht's natürlich nicht, das ist mir klar. Aber geht's "irgendwie"?

Ich würde mir gern eine Art kleinen "Report-Generator" bauen, der es dem Benutzer (=mir) erlaubt, sich seinen Ausdruck wie gewünscht anzupassen, ohne dass ich jedes Mal den Quelltext neu kompilieren muss.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Printer-Objekt.Eigenschaft aus Variable? 
Autor: Blackbox
Datum: 12.04.15 20:40

Hallo

das geht.
Leisten tut das in VB6.0 die CallByName-Funktion.

CallByName Object, hier Printer,
CallByName Object, Bezeichnung der Eigenschaft oder Methode, hier: FontBold
CallByName Object, Property, Bezeichnung ob Methode oder Eigenschaft, hier: VBLET
und schließlich der Wert noch:

CallByName Printer, FontBold, VBLET, TRUE (oder false)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Printer-Objekt.Eigenschaft aus Variable? 
Autor: Manfred X
Datum: 14.04.15 06:14

Hallo!

Du kannst in einer Form öffentliche (Public) Methoden erstellen,
die solche Grafikmethoden für ein Zeichen-Objekt kapseln.

Kleines Beispiel ....
Public Sub PrintLine(ByVal steppStart As Boolean, _
                     ByVal startX As Integer, ByVal startY As Integer, _
                     ByVal steppEnd As Boolean, _
                     endX As Integer, ByVal endY As Integer, _
                     ByVal color As Long, _
            Optional ByVal rectangle As Boolean = False)
 
     If rectangle Then
        If Not steppStart And Not steppEnd Then
           Printer.Line (startX, startY)-(endX, endY), color, B
        ElseIf steppStart And Not steppEnd Then
           Printer.Line Step(startX, startY)-(endX, endY), color, B
        ElseIf Not steppStart And steppEnd Then
           Printer.Line (startX, startY)-Step(endX, endY), color, B
        Else
           Printer.Line Step(startX, startY)-Step(endX, endY), color, B
        End If
    Else
        If Not steppStart And Not steppEnd Then
           Printer.Line (startX, startY)-(endX, endY), color
        ElseIf steppStart And Not steppEnd Then
           Printer.Line Step(startX, startY)-(endX, endY), color
        ElseIf Not steppStart And steppEnd Then
           Printer.Line (startX, startY)-Step(endX, endY), color
        Else
           Printer.Line Step(startX, startY)-Step(endX, endY), color
        End If
    End If        
End Sub
Anwendung (Aufruf in der Form):
CallByName Me, "PrintLine", VbMethod, True, 10, 20, False, 100, 200, vbRed
Um die Parameter als einen (z.B. vom Benutzer eingegebenen) String
zu verarbeiten, kann man eine weitere Kapselung erstellen:
Public Sub PrintLine2(Args As String)
 
   Dim s() As String, rectangle As Boolean
   s = Split(Args, ",")
 
   If UBound(s) = 6 Then
     rectangle = False
   Else
     rectangle = CBool(Trim(s(7)))
   End If
 
   PrintLine CBool(Trim(s(0))), CInt(s(1)), CInt(s(2)), _
             CBool(Trim(s(3))), CInt(s(4)), CInt(s(5)), _
             CLng(s(6)), rectangle
 
End Sub
Anwendung:
Dim c As String
c = CStr(vbGreen)
 
CallByName Me, "PrintLine2", VbMethod, "true, 10, 20, false, 100, 200," & c
Man kann solche Methoden auch in einem Klassenmodul deklarieren und sie
aus anderen Klassen oder Formen durch "CallByName" aufrufen.
In dem Fall muß zunächst eine Instanz dieses Klassenmoduls per New erstellt
werden, deren Name als erster Parameter anzugeben ist.

Beitrag wurde zuletzt am 14.04.15 um 06:16:30 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel