Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: VB NET, Objekt dynamisch erzeugen

  1. #1
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    575
    Danke
    57
    Erhielt 53 Danke für 47 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo VB Dot.Net spezialisten

    (Microsoft Visual Studio 2008 Express, Net Framwork 3.5)

    ich habe eine problem mit den Typ Object.

    dieses funktioniert:
    Code:
     Dim myObject_scr As VScrollBar
    
    Private Sub NewControl()
            ' das geht
            myObject_scr = New VScrollBar
            myObject_scr.Parent = Me
            ' myObject_scr.Controls.Add(myObject_scr) ' diese zeile nur bei Array nötig
    
            myObject_scr.Size = New Size(50, 80)
            myObject_scr.Minimum = 0
            myObject_scr.Maximum = 1000
            myObject_scr.Value = 200
    
            myObject_scr.Location = New Point(20, 30)
            myObject_scr.Visible = True
            AddHandler myObject_scr.Click, AddressOf myEvent_Click
            AddHandler myObject_scr.MouseDown, AddressOf myEvent_MouseDown
            AddHandler myObject_scr.MouseMove, AddressOf myEvent_MouseMove
            AddHandler myObject_scr.MouseUp, AddressOf myEvent_MouseUp
            AddHandler myObject_scr.ValueChanged, AddressOf myEvent_ValueChanged
    ...
    Code:
     Dim myObject As Object
    
    Private Sub NewControl()
            ' das nicht
            myObject = New VScrollBar
            myObject.   <<<< hier gibt es keinen Parent und anders
    ...
    Ziel ist dass ich in 'myObject' beliebiges zuweise VScrollBar, Button etc.Ich möchte in ein Array (0...n-1) beliebige Objekte haben, und nicht für jeden Typ (Option, button,slider etc) ein eigenes Array anlegen.

    ist das machbar?
    falls ja, wie

    bye
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)


    Zitieren Zitieren VB NET, Objekt dynamisch erzeugen  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    myObject auf den entsprechenden Typ casten. Oder temporär den gewünschten Typ anlegen, alle Eigenschaften etc. setzen und dann diese temporäre Variable dem Object zuweisen.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    575
    Danke
    57
    Erhielt 53 Danke für 47 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    myObject auf den entsprechenden Typ casten. Oder temporär den gewünschten Typ anlegen, alle Eigenschaften etc. setzen und dann diese temporäre Variable dem Object zuweisen.
    aha, so gut bin ich dot.net noch nicht.
    wie genau geht das type-cast denn in VB? und was wen casten??

    könntest du mal die zeile hinschreiben?
    wäre nett
    danke
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Ich würde die zweite Variante bevorzugen.
    Code:
    Dim myObject As Object ' Kann irgend etwas sein
    
    Private Sub NewControl()
      Dim tmpScrollbar as VScrollBar
      tmpScrollbar = new VScrollBar
      tmpScrollbar.Parent = Me
    
      tmpScrollbar.Size = New Size(50, 80)
      tmpScrollbar.Minimum = 0
      tmpScrollbar.Maximum = 1000
      tmpScrollbar.Value = 200
    
      tmpScrollbar.Location = New Point(20, 30)
      tmpScrollbar.Visible = True
      AddHandler tmpScrollbar.Click, AddressOf myEvent_Click
      AddHandler tmpScrollbar.MouseDown, AddressOf myEvent_MouseDown
      AddHandler tmpScrollbar.MouseMove, AddressOf myEvent_MouseMove
      AddHandler tmpScrollbar.MouseUp, AddressOf myEvent_MouseUp
      AddHandler tmpScrollbar.ValueChanged, AddressOf myEvent_ValueChanged
    
      myObject = tmpScrollbar
      ' oder in das Array einhängen mittels Add
    End Sub
    War jetzt nur runtergetippt ohne VS (da ich noch nichts in VB.net gemacht habe, nur ein bisschen was in C#).
    Klar ist auch, dass die Sub NewControl für jeden Typ implementiert werden muss bzw. einen Parameter bekommen muss damit der richtige Typ erzeugt wird. Die Frage ist nur, was das bringt. Wenn anstatt einem Array eine <List> verwendet wird, geht das genauso mit unterschiedlichen Typen.
    Was soll denn das Ergebnis sein? Was muss nachher mit der Referenz gemacht werden?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. Folgender Benutzer sagt Danke zu Rainer Hönle für den nützlichen Beitrag:

    Senator42 (28.10.2010)

  6. #5
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    575
    Danke
    57
    Erhielt 53 Danke für 47 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Ich würde die zweite Variante bevorzugen.
    Code:
    Dim myObject As Object ' Kann irgend etwas sein
    
    Private Sub NewControl()
      Dim tmpScrollbar as VScrollBar
      tmpScrollbar = new VScrollBar
      tmpScrollbar.Parent = Me
    ....
      myObject = tmpScrollbar
      ' oder in das Array einhängen mittels Add
    End Sub
    ...
    Die Frage ist nur, was das bringt. Wenn anstatt einem Array eine <List> verwendet wird, geht das genauso mit unterschiedlichen Typen.
    Was soll denn das Ergebnis sein? Was muss nachher mit der Referenz gemacht werden?
    Ja, das funktioniert.
    <List> ist mir noch fremd. ist das wie eine collection?

    zu
    - AddHandler tmpScrollbar.Click, AddressOf myEvent_Click
    habe ich noch
    - AddHandler tmpScrollbar.Keypress, AddressOf myEvent_Keypress
    da kommt es zu einem fehler wenn ich auf das button-objekt mit space-taste drücke.
    der myEvent_Keypress löst dann den myEvent_Click mit den mausdaten aus.

    was das ganze soll?
    ich bastle gerade an eine IBN-hilfe mit dem ich von versch. SPS (S5 und S7 200,300,400) irgendwelche daten beliebig anzeigen und ggf. loggen kann.
    habe das mal vor 20jahren unter turbo-c für s5 gemacht.
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  7. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    <List> ist eine Collection.
    Zu dem Fehler: der Click mit der Maus funktioniert aber?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #7
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    575
    Danke
    57
    Erhielt 53 Danke für 47 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    <List> ist eine Collection.
    Zu dem Fehler: der Click mit der Maus funktioniert aber?
    ja die handler mit maus funktionieren.

    muss jetzt wieder was arbeiten. bis ausser haus.
    bye
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    ich muss gestehen, dass ich nicht so recht das Ziel verstanden habe ... aber vielleicht wäre da ja die Lösung für dich :
    Du erzeugst dir eine eigene (neue) Klasse und bindest die VScrollbar dort ein und veränderst in dieser Klasse das, was verändert werden soll, und benutzt dann fortan diese Klasse ... also etwa so :
    Code:
    Public Class myVScrollbar
     
    Inherits VScrollbar
     
    ...
     
    End Class
    eventuelle Wünsche, Verhaltensänderungen etc. kannst du nun da mit integrieren und ggf. auch neue zusätzliche Properties mit anlegen ...

    Gruß
    Larry

  10. #9
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    575
    Danke
    57
    Erhielt 53 Danke für 47 Beiträge

    Daumen hoch

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Du erzeugst dir eine eigene (neue) Klasse und bindest die VScrollbar dort ein
    du meinst ein user control oder ?

    ja, ist mir auch schon aufgefallen daß dies gut wäre. muss ich aber erst noch rausfinden wie das bei dot.net geht. in vb6 konnte ich das mal (OCX).
    naja, we kommt ja gleich.
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)


    Zitieren Zitieren user control - ocx  

  11. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Senator42 Beitrag anzeigen
    du meinst ein user control oder ?

    ja, ist mir auch schon aufgefallen daß dies gut wäre. muss ich aber erst noch rausfinden wie das bei dot.net geht. in vb6 konnte ich das mal (OCX).
    naja, we kommt ja gleich.
    Das was Larry da geschrieben hat ist ein Abgeleitetes Control, das konntest du in VB6 nicht erstellen. Im Endeffekt ist es mit diesen 3 zeilen Code schon voll funktionsfähig (verhällt sich dann genau so wie die Orginale Scrollbar). Nun kannst du aber Methoden überschreiben oder hinzufügen, Eigenschaften hinzufügen, ...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. TIA V11 SCL DB Dynamisch ansprechen
    Von MrEASY im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 25.08.2011, 08:29
  2. SPS dynamisch ne IP vergeben?
    Von BorisDieKlinge80 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 10.09.2010, 16:47
  3. ARRAY Dynamisch gestalten
    Von husox81 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 16.12.2008, 10:11
  4. Variablen erzeugen über das HMIGO Objekt...
    Von Jochen Kühner im Forum HMI
    Antworten: 1
    Letzter Beitrag: 17.06.2008, 15:07
  5. SPS dynamisch... (Rezeptverwaltung)
    Von Andre51 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 26.01.2004, 21:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •