Eigenschaften von Steuerelementen vom Modul aus verändern

fReAkY91

Grünschnabel
Hallo allerseits,

bin leider zu meinem problem in den Weiten des Netzes noch nicht fündig geworden:

Ich möchte von einem Modul aus Eigenschaften von Steuerelementen verändern.
Wenn ich in dem Modul Sachen wie "lblLabel.Text = "Hallo!"" schreibe, kommt immer "lblLabel wurde nicht deklariert".

Also, wie schaffen ich es nun, die Eigenschaften eines Steuerlementes von dem Modul aus zu verändern?


MfG
fReAkY

thx im voraus
 
Zuletzt bearbeitet:
Wenn ich in dem Modul Sachen wie "lblLabel.Text = "Hallo!"" schreibe, kommt immer "btnUmrechnen wurde nicht deklariert".

Also, ich glaube zwar nicht, daß sich der Fehler von btnUmrechnen auf die Zeile mit lblLabel bezieht und auch sonst ist die Umschreibung wie es bei Dir im Moment aufgebaut ist, relativ informationslos, aber ich gehe jetzt mal davon aus, daß Du eine Form und ein Modul hast und versuchst, von dem Modul aus auf die Steuerelemente des Forms zuzugreifen. Direkt geht das nicht, da jedes Objekt erstmal nur auf seine eigenen Dingen zugreifen kann. Wenn Du also willst, daß Dein Modul auf z.B. btnUmrechnen zugreifen will, mußt Du ihm irgendwo eine Referenz auf den Button beschaffen, möglich ist dies im Konstruktor der Klasse bei der Instanzierung als Objekt oder später bei Aufruf einer Methode. (ich bin momentan schreibfaul, deshalb hoffe ich, daß es nach dieser Beschreibung schon klick macht, dann brauch ich nicht noch Code schreiben...wenn nicht, dann sag bitte noch, in welcher Sprache Du es gern hättest ;) ).
 
Schmutzige Variante.

Du rufst die Methode aus deinem Modul vermutlich ohnehin von deiner Form auf. Dann muss deine Methode eben einen Rückgabewert liefern und das Control wird mit diesem Rückgabewert befüllt. Damit benötigst du aus dem Modul heraus keinen Zugriff auf das Control.
 
Schmutzige Variante gesetzt dem Fall, daß es reicht einen Rückgabewert zu erhalten, den man dann nutzt (dann ist Meister Eders Variante natürlich die Bessere). Je nachdem, was er aber mit dem Button vorhat, geht es vielleicht gar nicht anders, außer er wirft sein Programm komplett über'n Haufen. Ist halt die Frage, ob man ihm auf seine Frage hin sagt, wie es konkret für den Fall geht (Entdecke die Möglichkeiten) oder einfach alles kaputtkorrigieren will (was gerade Programmieranfängern gerne den Spaß an der Sache nimmt). :p
 
Dafür lernt er von Beginn an, wie es RICHTIG geht. Reicht ein Rückgabewert nicht, dann bieten sich auch noch komplexe Typen an. Damit wäre dein Argument erledigt und es gibt keinen Grund mehr, den Button in ein Modul zu übergeben. Bei diesem Gedanken wird es einem ohnehin schlecht.
 
Hallo!

Entschuldigung erstmal für die unpräzise Breschreibung meines Problems (bin noch am Anfang meiner Karriere^^). Tatsächlich reicht es in meinem Beispiel nicht, dass die Methode nur einen Rückgabewert zurückgibt. Um es zu konkretisieren:

Ich möchte in meinem Modul eine Sub-Prozedur schreiben, welche eine PictureBox in Abhängigkeit von einer Byte-Variablen mit einem Image aus der Ressourcendatei füllt. Der Übersichtlichkeit wegen würde ich diesen langen "Select Case"-Codeblock gerne in ein Modul schreiben. Wenn ihr mir jetzt erzählt, dass man eine PictureBox mit einem Image aus der Ressourcendatei in Abhängigkeit von einer Variablen in einem kürzeren Codeblock machen kann (was ich allerdings schon einmal gefragt habe, ohne brauchbare Antworten zu erhalten), wäre ich euch natürlich dankbar, ansonsten sollte euch mein jetziges Problem klarer geworden sein. Ich möchte das Programm übrigens in VisualBasic 2005 schreiben.


Bin begeistert von eurer Hilfsbereitschaft. Ist echt ein nettes Forum hier.

MfG
fReAkY
 
Das sieht dann in etwa so aus:
Code:
Image GetResourceImage(byte bParam)
{
  //do what ever you want to do
}
Den switch auf bParam musst du natürlich selber machen und die Resource-Datei auslesen, aber prinzipiell bekommst du dann aus deinem Resource-File ein Image zurück, welches zu postwendend aus deiner Methode zurücklieferst. Und dieses kannst du dann in deiner Form deiner PictureBox zuweisen.

Und das ganze halt in VB.NET.
 
Zurück