vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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
Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 12.08.19 10:36

Hallo,

ich habe in einer Form eine Listview1 - und die bereitet mir das nachstehende Probleme. Dich erhalte die Fehlermeldung "Benutzerdefinierter Typ nicht definiert" auf dem nachstehenden Befehl:

    Dim litem                  As ListItem
 
 
    With ListView1
       ....
Kann mir vielleicht jemand sagen, wo hier die Ursache liegen kann?

Danke
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 12.08.19 10:50

Moin

Wo und wie hast Du [Code]ListItem[/Code] definiert?

DAS scheint der Ausdruck zu sein, den Dein Code nicht mag
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 12.08.19 11:43

ListItem habe ich nirgende^s definiert. Ich habe eine ListView1 auf der Form platziert und im Form_Load die folgenden Angaben:

Private Sub Form_Load()
    File1.Pattern = "*.txt"
    File2.Pattern = "*.lst"
 
    Dim litem           As ListItem
 
    With ListView1
        .View = lvwReport
 
        .ColumnHeaders.Add , , "Druckername"
        .ColumnHeaders.Item(1).Width = 5000
        .ColumnHeaders.Add , , "Port"
Ich habe keine Erfahrung mit ListViews.


Danke
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 12.08.19 14:47

Ja gut, bleibt die Frage, wozu Du
[Code]Dim litem As ListItem[/Code]

benötigst

Wenn Du eine Variable oder was auch immer durch "As" mit etwas belegen willst, muss dieses etwas auch da sein, i. d. R. ist es ein Objekt, entweder eines, was die Entwicklungsumgebung bzw. Namespace vorhält oder welches Du selber im entsprechenden Bereich deklariert hast.

Bei Deinem Code sagt spätestens der Compiler sinngemäß "kenne ich nicht" , wenn im Editor der Bereich nicht bereits markiert ist.

Beitrag wurde zuletzt am 12.08.19 um 14:48:16 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 12.08.19 17:36

Da schicke ich Dir zur Veranschaulichung den vollständigen Code. Ich fülle in die Listview die im System verfügbaren Drucker zur Auswahl. Den Code habe ich irgendwo aus dem Internet kopiert; wie bereits gesagt, ich habe sonst keine Erfahrung in der Anwendung von Listviews. Hier habe ich lediglich anstelle "lItem" den Namen "myItem" verwendet.

Gruss
Rainer

Private Sub Form_Load()
    File1.Pattern = "*.txt"
    File2.Pattern = "*.lst"
 
    Dim myItem           As ListItem
 
    With ListView1
        .View = lvwReport
 
        .ColumnHeaders.Add , , "Druckername"
        .ColumnHeaders.Item(1).Width = 5000
        .ColumnHeaders.Add , , "Port"
 
        ' ------------------------------ Standarddrucker
        Label3.Caption = Printer.Port
 
        SelDrucker = Printer.DeviceName
        PrinterPort = Printer.Port
 
        Set myItem = ListView1.ListItems.Add(, Printer.DeviceName, _
          Printer.DeviceName)
        myItem.SubItems(1) = Printer.Port
 
        For Each p In Printers
            If p.DeviceName <> Printer.DeviceName Then
               Set myItem = ListView1.ListItems.Add(, p.DeviceName, _
                 p.DeviceName)
               myItem.SubItems(1) = p.Port
            End If
        Next p
    End With
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 13.08.19 15:41

Aha, allmählich wird ein Schuh daraus

Ich habe für meine aktuelle Aufgabe (unter VB.NET) auch recherchieren müssen (nicht VB6/VBA-Neuling, wohl aber in VB.NET, fast eine eigene Welt), und eine Erfahrung habe ich machen müssen...dazu muss man wissen, dass ich JEDEN Code, den ich für meine Herausforderung interessant finden könnte, auch eigenen, vorher checke und teste.

Eine Erfahrung habe ich bei Beispielen aus dem Internet machen müssen: Offenbar sind in den seltensten Fällen Codebeispiele vor dem Einbringen als solche auch wirklich getestet worden...was bin ich schon auf merkwürdige (das ist sehr moderat ausgedrückt) Dinge gestoßen.

Also, die von Dir genannte Fehlermeldung ist doch mit Sicherheit dieser Ausdruck:
[Code]As ListItem[/Code]

Bevor ich aber mehr dazu schreibe, ersetze doch die Zeile [Code]Dim myItem As ListItem[/Code] mal durch [Code]Dim myItem As [B]New ListViewItem[/B][/Code]

Es würde mich nicht wundern, wenn zumindest die Fehlermeldung, die Du genannt hast, nicht mehr auftauchen würde.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 13.08.19 19:29

Danke für den Hinweis. Ich habe es eben versucht - jedoch mit einem negativen Erfolg. Auch
Dim myItem As New ListItem funktioniert nicht. Irgendwo liegt der Hase im Pfeffer.
Ich werde noch eine Weile im Web stöbern - vielleicht finde ich da einen Hinweis.

Schönen Abend und nochmals vielen Dank
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 13.08.19 20:14

crosstravel schrieb:
Zitat:

(..)
Dim myItem As New ListItem(..)


Ich schrieb ja auch

Dim myItem As New ListViewItem
"ListItem" wird überall als "kein Member von" angemeckert, mit "ListViewItem" fülle ich erfolgreich meine ListView mit Inhalten

Mit welcher Entwicklungsumgebung arbeitest Du? Wenn Sie meiner (zitlich) ähnlich ist, packe ich den Code hier Morgen rein, der beinhaltet dann allerdinngs auch die Erstellung der ListView zur Laufzeit.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 13.08.19 20:28

Ja, ich hatte ja auch "Dim As New ListViewItem" getestet. Hier erhielt ich eben auch beim Compile die Fehlermeldung "User-defined Type mot defined".

Ich arbeite mit VB6 SP6 unter Windows 10. Eingebunden habe ich die Komponente MS Windows Common Control 6.0 (MSCOMCTL.OCX) und eine Reference auf MS ActiveX Data Objects 6.1 Library (msado15.dll).


Danke, schönen Abend
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 13.08.19 23:14

Ok, ich habe mal ein wenig "experimentiert"; "experimentiert" deswegen, weil ich das Ganze mangels VB6-Umgebung in VBA unter MS Access 2010 versucht habe: Der Dim lautet nun einfach

Dim myItem
Mehr brauchte es nicht, das hat offenbar funktioniert (ich musste nur die Befehle für die in meinem provisorischen Formular fehlenden Label auskommentieren), das ListView hat bei mir die enthaltenen Drucker mitsamt IP (ich betreibe auch einen netzwerkfähigen Drucker) bzw. Ports ausgegeben...mal gucken
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 13.08.19 23:29

Das werde ich morgen gleich probieren. Ich vermute aber, dass VB.Net nicht gleich wie VB6 reagiert. Ich bin gespannt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 14.08.19 06:19

Guten Morgen,

alles schläft noch - aber ich musste Deinen Vorschlag unbedingt testen. Es funktioniert! Ich bin sehr froh darüber - vielen Dank für Deine Hilfe. Nun muss ich nur noch versuchen herauszubekommen, warum VB so reagiert - ich kann es noch nicht nachvollziehen.

Hab einen tollen Tag und herzliche Grüsse
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 14.08.19 07:35

crosstravel schrieb:
Zitat:

(..)Nun muss ich nur noch
versuchen herauszubekommen, warum VB so reagiert - ich kann
es noch nicht nachvollziehen.

Hab einen tollen Tag und herzliche Grüsse
Rainer

Freut mich, dass das hingehauen hat

Und lass es einfach, es gibt Unterschiede zwischen VBA und VB und natürlich zwischen den verschiedenen VB-Versionen bis hin zu VB.NET...die nimmt man dann hin, man muss halt wissen, wo man sich bewegt; ich bin zwar Programmierer und lege auch Wert darauf, das "warum" zu ergründen, aber zwischen verschiedenen Sprachversionen führt das zu nichts.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 14.08.19 07:42

Du hast recht - ich ruhe mich auf deinen Lorbeeren aus 😊 ein Versuch, das unterschiedliche Verhalten zu ergründen führt wohl nur zu weiteren Fragen.

Herzlichen Grzss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: effeff
Datum: 14.08.19 12:38

Schalte bitte in Deiner Entwicklungsumgebung "Option Explicit" ein...

Und wenn Du einen entsprechenden Verweis auf "Microsoft Windows Common Controls xxx" setzt, sollte der Typ "ListItem" auch funktionieren...

BTW: Variablen nicht mit einem Typen zu versehen und damit unnötig als "Variant" oder "Object" zu setzen, ist nicht elegant...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 14.08.19 20:03

effeff schrieb:
Zitat:

Schalte bitte in Deiner Entwicklungsumgebung &quot;Option
Explicit&quot; ein...

Und wenn Du einen entsprechenden Verweis auf &quot;Microsoft
Windows Common Controls xxx&quot; setzt, sollte der Typ
&quot;ListItem&quot; auch funktionieren...

Hast Du Deine Vorschläge auch getestet? Ich habe beides mal nachvollzogen...also, es versucht, es klappt nicht.
Setzt man Option Explicit, werden z. B. einige Variablen als nicht definiert angezeigt, trotz des Verweises, der m. E. auch crosstravel gesetzt haben müsste.

Meine Rede, wenn es um nicht getestete Vorschläge geht, sorry.

Zitat:

BTW: Variablen nicht mit einem Typen zu versehen und damit
unnötig als &quot;Variant&quot; oder &quot;Object&quot; zu
setzen, ist nicht elegant...

Kann ja sein, dass "Dim" ohne Zuweisung "nicht elegant" sein mögen, aber es klappt, und darauf kommt es doch an, nicht wahr?

Beitrag wurde zuletzt am 14.08.19 um 20:03:57 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: crosstravel
Datum: 15.08.19 05:55

Ich möchte nochmals festhalten, dass ich mit der "nicht eleganten" Lösung momentan zufrieden bin. Wichtig ist, dass ich das Programm dem Kunden ausliefern kann - und der fragt nicht, ob es auch elegant gelöst wurde. Das bedeutet aber nicht, dass ich noch nach einer besseren Lösung, allerdings ohne Zeitdruck, suchen werde.

Übrigens habe ich "Option Explicit" in allen Programmen eingeschaltet. Auch war der Verweis auf die "Microsoft Windows Common Controls xxx" vorhanden. Das hatte ich in einem der Postings dieser Serie erwähnt.

--------------------------------------------------------------------------------------------------
Ich arbeite mit VB6 SP6 unter Windows 10. Eingebunden habe ich die Komponente MS Windows Common Control 6.0 (MSCOMCTL.OCX) und eine Reference auf MS ActiveX Data Objects 6.1 Library (msado15.dll).
---------------------------------------------------------------------------------------------------

Einen schönen Tag
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 15.08.19 09:59

Jepp, da müssen halt auch die unterschiedlichen Entwicklungsumgebungen berücksichtigt werden, vor allem bei Beispielen.
Ich kann da nur wiederholen, dass bei den Recherchen zu meinem aktuellen VB.NET-Projekt (im Web, vor allem dem eigenen, nach toten Links suchen) mehr als 90% aller Beispiele ganz offensichtlich nicht ausgetestet waren, oft nicht einmal auf Syntax geprüft schienen.

Ich unterstelle natürlich allen Beteiligten, dass sie helfen/unterstützen wollen, jedoch wenn da steht "versuch mal dies oder jenes" ohne "bei mir funktionierts, hab's getestet", werde ich schon skeptisch
Hier in diesem Forum habe ich übrigens tatsächlich für einige kleine Herausforderungen gute Lösungsansätze/Lösungen gefunden, das mal nebenbei

Deshalb hatte ich auch unterstrichen, dass ich mein Beispiel unter VBA/MS Access "versucht" und erfolgreich getestet hatte.
Meine alte VB6-Umgebung habe ich seinerzeit unter Windows XP SP3 betrieben, ich glaube aber nicht, dass ich die nochmal hier auf meiner Win10-Maschine einsetze, überhaupt nochmal etwas mit VB6 mache, für sehr viele Dinge empfinde ich VB.NET mittlerweile einfach als flexibler.

Mit VBA unter MS Access wäre das für mich noch etwas anderes, damit habe ich die umfangreichsten Erfahrungen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: effeff
Datum: 15.08.19 12:00

//Hast Du Deine Vorschläge auch getestet?//

Windows 10 64bit, Visual Basic 6.0 SP6. Eingebunden ist Microsoft Windows Common Controls 5.0 (SP2).

//Kann ja sein, dass "Dim" ohne Zuweisung "nicht elegant" sein mögen, aber es klappt, und darauf kommt es doch an, nicht wahr?
//

Siehe https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/option-explicit-statement.

Wenn Du davon ausgehst, dass Dein Programmcode verständlich und lesbar sein soll und auch andere Programmierer diesen editieren müssen, solltest Du mit Option Explicit arbeiten. Bei VB6 heißt es übrigens "Variablendeklaration erforderlich" (Ich habe lange kein VB6 mehr geschrieben). Zudem legst Du mit der Deklaration die Speichernutzung für die Variable fest und es ist nicht erforderlich, immer als Variant sinnlos Speicher zu verschwenden.

Siehe https://docs.microsoft.com/de-de/office/vba/language/concepts/getting-started/declaring-variables (Unter Option Explicit).

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 15.08.19 16:36

effeff schrieb:
Zitat:


Wenn Du davon ausgehst, dass Dein Programmcode verständlich
und lesbar sein soll und auch andere Programmierer diesen
editieren müssen, solltest Du mit Option Explicit arbeiten.
(..)


Wenn überhaupt, mag das bestenfalls ein Indiz sein.
Kein noch so "elegant" gestalteter Code vermag sorgfältige Inline-Dokumentation, sprich Kommentarzeilen zu ersetzen.
Wenn ich Programm-Code schreibe, auch für den eigenen Bedarf, dann ist IMMER aussagekräftige Kommentierung vorhanden, auch meinen eigenen Code möchte ich nicht wieder "nachforschen" müssen, wenn ich den aus irgendwelchen Gründen längere Zeit nicht angefasst habe.
Und wenn sich, wie Du ganz korrekt schreibst, aus irgendwelchen Gründen, die nächsten Entwickler mit dem Programm befassen müssen, hilft denen kein noch so (syntaktisch und fachlich) sauberer und eleganter Code, wenn der nicht ausreichend kommentiert ist.


Zitat:


Zudem legst Du mit der Deklaration die
Speichernutzung für die Variable fest und es ist nicht
erforderlich, immer als Variant sinnlos Speicher zu
verschwenden.(..)

Das mag schlüssig sein, spielt aber nur dann eine Rolle, wenn die gesamte Applikation exorbitant speicherintensiv wäre oder aber die Hardware-Umgebung nicht mehr ganz so modern ist und Speicher noch "Mangelware" wäre.
Vollkommen zutreffend wären Deine Angaben für Entwicklung auf dem Großrechner, wo alleine CPU-Zeit immer noch sauteuer ist, mit anderen Worten: Weniger Speicher-Nutzung = weniger CPU-Zeit. In IBM-Host-Umgebung hat man gar darauf zu achten, dass Deklarationen von Variablen strikt in der Reihenfolge der späteren Nutzung zur Laufzeit zu erfolgen haben; ich habe durchaus in Umfeldern gearbeitet, wo das, was ich hier dem Fragesteller crosstravel vorgeschlagen habe, nicht die QS passiert hätte.

Macht man so etwas jedoch hier (wie z. B. Hinweise auf Option Explicit, Option Strict usw.), ohne das wirklich hinreichend zu erklären, läuft man eher Gefahr, die Mitposter zu irritieren.

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

Re: Listview - Fehlermeldung TYP 
Autor: ModeratorDieter (Moderator)
Datum: 18.08.19 20:46

Dim myItem As MSComctlLib.ListItem

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Listview - Fehlermeldung TYP 
Autor: EKrause
Datum: 18.08.19 21:44

Dieter schrieb:
Zitat:

Dim myItem As MSComctlLib.ListItem

Not bad, not bad, klappt auch, zumindest in VBA/MS Access 2010, hab's gerade mal ausprobiert
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