2 Formen und 1 sub

hibbert

Mitglied
hi,
also ich muss gleich zu anfang zugeben, dass ich kaum erfharung mit vb habe, aber schon einiges in Pascal hinbekommen habe.
Ich habe auch schon die sufu benutzt aber daraus bin ich net wirklich schlau geworden, weil es da immer nur um variabeln ging und nicht wirklich um subs....

mein problem ist:
ich habe 2 Formen (Form1 & Form 2)

nun habe ich in form 1 ein(e) sub:
Code:
 Public Sub setID(ByVal id As Integer)
         'do something with id and with a Listview
        End Sub
so wenn ich diese sub aus form 1 aufrufe funktioniert diese wunderbar.

wie aber muss ich diese sub deklarieren, damit ich diese auch in form 2 verwenden kann?
einfache variablen übertragen will ich net, ich möchte eben nur gerne diese sub ausführen.

das ganze in eine weitere klasse auszulagern würde auch nicht viel bringen, da ich mit dieser sub etwas in einer listview ändere, da denke ich ist es besser das so zu lösen als über eine klasse...

danke hibbert
 
normalerweise Public in einem Modul da Vb das aber nicht so streng sieht kannst du auch mit Form1.setid drauf zugreifen

Grüsse bb
 
hi,
ja genau so möchte ich das auch gerne haben ABER... ich hab es nicht so :mad:

wenn ich im quelltexteditor meine befehle eingebe und einen punkt mache, bekomme ich meist eine auswahl an verfügbaren attributen und methoden.

da geb ich dann ein form. und warte bis mir di elsite angezeigt wird... dort taucht aber die sub aus der form1 nicht auf....

ich versteh nicht warum, ich habe die sub in form 1 als public sub deklariert... muss ich vllt noch was anderes beachten?

hibbert
 
Hallo,

wie bb schon schrieb wird dies normalerweise über ein Modul gemacht.

Das ist in der Regel wirklich bessere Programmierung, eine Form sollte besser nur private Funktionen und Subs beinhalten.

Warum fügst Du nicht ein Modul ein, in dem Du Deine Public-Subs unterbringst? Dann klappt es in jedem Fall.

Grüsse
ronaldh
 
Hallo,

wie, Codebeispiel? Du hast doch schon (fast) alles!

Du gehst einfach auf Projekt/Modul hinzufügen. Dann sagst Du "Neu", und es wird ein Modul "Module1" erzeugt.

Hier schreibst Du die Sub hinein.

Insbesondere wenn Du Variable als Public dimensionieren willst, geht dies eh nur auf Modulebene.

Viele Grüsse
ronaldh
 
hmm ok, aber letztendlich hilft es mir nicht wirklich dabei meine listview zu updaten, oder?

naja ich könnte die listview über das modul updaten, sprich da die procedure zum ändern der listview reinkloppen.

aber wie kann ich aus dem modul auf die formen zugreifen, also in diesem fall auf die form1.listview1?

thanks so far
hibbert
 
Du weißt doch schon alles... :)

Genau wie Du geschrieben hast, mit "Form1.Listview1..."!

Grüsse
ronaldh
 
Genau wie Du geschrieben hast, mit "Form1.Listview1..."!
ja das geht ja nun gerade nicht, oder glaubst du ich hätte das nicht schon versucht:rolleyes:
sonst würde ich doch wohl net nachfragen....

Code:
Module Module1
    Private Sub changeListview()
        form1.
    End Sub

End Module
und da steht listview 1 nicht zur auswahl...

hibbert
 
Du musst zunächst die Sub als Public definieren, nicht Private, da diese Sub ja sicherlich aus einem Ereignis in einer der Formen heraus ausgelöst werden soll.

Grundsätzlich: Mit welchem VB arbeitest Du denn eigentlich (meine Aussagen bezogen sich hier zunächst auf VB6)?

Denn eine Definition "End Module" ist mir noch nicht untergekommen. Wie hast Du das Modul denn angelegt?

Grüsse
ronaldh
 
Zurück