Steuerelemente mit Variablen kombinieren

  • #1
G

Granate

Guest
Hallo Forum,

ich habe das Problem, dass ich im Quellcode (VB6.0) die Namen von Steuerelementen nicht mit Variablen kombinieren kann.

Beispiel:

frm_Eingabe1 ist der Name des Elementes

es ist aber nicht möglich ihn so darzustellen

for i = 1 to 8
frm_Eingabe(i).visible = false
next i

ich erhalte dann die Fehlermeldung Methode oder Mitgleidsdaten nicht gefunden!

Ich hoffe , ihr könnt mir helfen. ???

Gruß Granate
 
  • #2
Du musst die Elemente (sollte ja mehrere sein, sonst macht das Ganze ohnehin keinen Sinn!) natürlich auch zu einem Array machen, also statt frm_Eingabe1, frm_Eingabe2, frm_Eingabe3, etc., müssen dann alle Elemente frm_Eingabe heissen und mit dem entsprechenden Index 1, 2, 3, ... versehen werden.
 
  • #3
Hallo Boogie,

leider ist das nicht des Rätsels Lösung. Trotzdem Danke!

Gruß Granate ;D
 
  • #4
Dann schreib mal bissl mehr Detail, was Du eigentlich damit machen möchtest. Vielleicht kann ich Dir dann ein Beispiel liefern... ;)
 
  • #5
Beim Laden des Formulars sollen verschiedene Initialisierungen getätigt werden. So sollen zB die Inhalte von Bildelementen gelöscht werden und / oder verschiedene reihen von Elementen unsichtbar gemacht werden. Eigentlich sollte das so aussehen:

Private Sub Form_Load()
Dim i As Integer

Randomize
lab_Loesung.Visible = False
frm_Loesung.Enabled = False

For i = 0 To 7
frm_Ergebnis(i).Visible = False
frm_Ergebnis(i).Enabled = False
frm_Eingabe(i).Enabled = False
Next i

End Sub

Funktionieren tut es aber nur so:

frmLoesung.Visible = False
frmLoesung.Enabled = False

Me.frm_Bew1.Visible = False
Me.frm_Bew1.Enabled = False
Me.frm_Vers1.Enabled = False
Me.lbl1.Visible = False

Me.frm_Bew2.Visible = False
Me.frm_Bew2.Enabled = False
Me.frm_Vers2.Enabled = False
Me.lbl2.Visible = False

Me.frm_Bew3.Visible = False
Me.frm_Bew3.Enabled = False
Me.frm_Vers3.Enabled = False
Me.lbl3.Visible = False

Me.frm_Bew4.Visible = False
Me.frm_Bew4.Enabled = False
Me.frm_Vers4.Enabled = False
Me.lbl4.Visible = False

Das erscheint mir bei einer Anzahl von 32 Elementen allerdings etwas zu umständlich. Vielleicht gibt es ja noch eine andere Lösung...?

Gruß Granate

PS: Die Beispiele sind nicht Authentisch!
 
  • #6
Ist aber dann doch so wie ich es vorhin schon versucht habe zu beschreiben:

Du brauchst ein Steuerelemente-Feld (Array). Ich nehme mal an, dass Deine Eingabefelder Textfelder sind...

Erzeuge eine Textbox in Deiner Form und nenne es txt1 (bei (Name) !). Dann gibst Du bei Index den Wert 0 ein. Jetzt kopierst Du diese Textbox und fügst sie ein 2. Mal ein. Bei Index steht jetzt automatisch 1. Du kannst das natürlich auch alles händisch eintippseln, aber so geht's schneller zum Testen!

Nun kannst unter Form_Load mit

Private Sub Form_Load()
Dim i As Integer
For i = 0 To 1
txt1(i).Visible = False
txt1(i).Enabled = False
Next
End Sub

Hab's grad probiert und funktioniert problemlos.

Noch ein Tipp:
Benenne Deine Steuerelemente immer so, dass Du sofort erkennen kannst um welchen Typ es sich handelt...

frm_Ergebnis ...
... was ist das? Text? Befehl-Button? gar eine Form?

txt_Ergebnis ...
... aha, eine Textbox!

bef_Ergebnis ...
... oh, eine Befehlsschaltfläche

bez_Ergebnis ...
... könnte ein Bezeichnungsfeld sein

Kann aber jeder machen wie er möchte... logisch ;)
 
  • #7
:eek: Alles klar, es funktioniert!

Bis jetz allerdings nur in der Testdatei. In der eigentlichen leider noch nicht, dass werde ich allerdings jetzt wohl beheben können!

Vielen Dank für die schnelle Hilfe...

Gruß Granate
 
  • #8
Hallo,

ich habe mal wieder ein Problem.
Und zwar habe ich eben den AMD Catalyst installiert um meine Grafikkarte auf den neusten Stand zu bringen.
Habe Win7 32 bit.
GraKa ATI Mobility Radeon 4500 Series

Seit ich das Programm installiert habe laeuft mein Laptop permanent auf 32 bis 35% CPU.
nun wollte ich AMD wieder deinstallieren,aber es kommt die Meldung dass keine Komponenten gefunden werden konnten.
Hab das Programm nun haendisch geloescht und in der Registry nach geschaut.Da ist nichts zu finden.

Im Taskmanager habe ich gerade gesehn,dass die svchost.exe diese CPU verursacht.
Was ist da los?Woher kommt das?
Ich habe den Dienst jetzt mal beendet und nun laeuft die Kiste wieder rund.
Aber ich wuesste schon gern,woher diese Cpu kam und wie ich das aendern kann und wie ich das kuenftig vermeiden kann.

Gruss Calisa
 
Thema:

Steuerelemente mit Variablen kombinieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben