#If , Event mit oder ohne Index

21/11/2009 - 01:29 von Heinz-Mario Frühbeis | Report spam
Hallo!

Ich möchte mal fragen, wie genau man dieses
#If
#else
#end if
einsetzen kann.
Kann man dafür eigene Funktionen verwenden?

Mit folgendem Problem beschàftige ich mich schon lànger :

Es geht darum, das ich Controls zur Laufzeit , durch eine Klasse, lade.
Also innerhlab einer Klasse :
Private WithEvents A as TextBox

Manche haben einen Index, weil gleicher Name.
Andere haben eben keinen Index.
(als Property in der Klasse)

Jetzt kann ich aber scheinbar nur einmal "Event Click()" deklarieren.

Ich hàtte aber gerne eine Abfrage in den Deklarationen, ob Index, oder
nicht.
Und dann dem entsprechend entweder :
Event Click()
oder eben :
Event Click(Index as Integer)

So kam ich auf #If. Konnte da allerdings noch nichts Verwertbares
entwickeln. Und jetzt hoffe ich, das ihr mir helfen könnt.

Für jede Anregung und Hilfe dankbar
mit vielen Grüßen
Heinz-Mario
 

Lesen sie die antworten

#1 Peter Götz
21/11/2009 - 11:51 | Warnen spam
Hallo Heinz-Mario,

Ich möchte mal fragen, wie genau man dieses
#If
#else
#end if
einsetzen kann.
Kann man dafür eigene Funktionen verwenden?




Schau Dir dazu mal die Online-Hilfe zum Stichwort

"Bedingte Kompilierung"

an. Dort wird die bedingte Kompilierung mit Hilfe von
#If... ausführlich erklàrt. Für Dein unten beschriebenes
Problem hat das kaum Bedeutung.


Mit folgendem Problem beschàftige ich mich schon lànger :

Es geht darum, das ich Controls zur Laufzeit , durch eine Klasse, lade.
Also innerhlab einer Klasse :
Private WithEvents A as TextBox



Damit làdtst Du keine Textbox, sonder deklarierst
lediglich eine Objektvariable, der Du spàter einen
Verweis auf eine Instanz einer TextBox-Klasse
übergeben kannst.
Also z.B. sowas:

Dim ObjVariable as Textbox
Set ObjVariable = Textbox1


Würdest Du Textboxen tatsàchlich erst zur
Laufzeit laden, dann könnte das z.B. so aussehen:

' /// Code in einem Formmodul (z.B. Form1.vb)
Option Explicit
Private WithEvents TextBox1 As TextBox
Private WithEvents TextBox2 As TextBox

Private Sub Form_Load()
LoadControls
End Sub

Private Sub LoadControls()
Me.ScaleMode = vbPixels

Set TextBox1 = _
Me.Controls.Add("VB.TextBox", "TextBox1")

TextBox1.Move 10, 10, 100, 0
TextBox1.Text = "TextBox1"
TextBox1.Visible = True

Set TextBox2 = _
Me.Controls.Add("VB.TextBox", "TextBox2")

TextBox2.Text = "TextBox2"
TextBox2.Move _
10, _
TextBox1.Top + TextBox1.Height + 10, _
100, _
0

TextBox2.Visible = True
End Sub

Ich vermute, dass Du Deine Textboxen zur Entwurfszeit
auf irgendeine Form gezogen hast und dabei offenbar
einige dieser Textboxen als Control-Arrays und andere
als Einzelinstanzen angelegt hast.

Wie und wo erstellst und làdtst Du diese Textboxen tatsàchlich?

Manche haben einen Index, weil gleicher Name.



Das heisst, diese Textboxen sind Mitglieder eines
sog. Steuerelemente-Feldes (Control-Array).

Andere haben eben keinen Index.



Die sind dann entspr. keine Mitglieder eines
Control-Arrays.

(als Property in der Klasse)



Wie, was, als Property in der Klasse?
Ich verstehe nicht so recht, was Du damit meinst.

Jetzt kann ich aber scheinbar nur einmal "Event Click()" deklarieren.



Wenn Du z.B. ein Steuerelementefeld mit 3 Textboxen hast,

Textbox1(0)
Textbox1(1)
Textbox1(2)

dann gibt es für diese drei Textboxen u.a. eine einzige
gemeinsame Click-Prozedur, die dann in etwas so
aussehen könnte:

Private Sub Text1_Change(Index As Integer)
Select Case Index
Case 0
' ... tu dies

Case 1
' ... tu das

Case 2
' ... tu was anderes

End Select
End Sub


Ich hàtte aber gerne eine Abfrage in den Deklarationen, ob Index, oder
nicht.
Und dann dem entsprechend entweder :
Event Click()
oder eben :
Event Click(Index as Integer)



Deine bisherige Beschreibung làsst nicht erkennen, wie und
wo Du Deine Textboxen erstellst, also zur Designzeit oder
wirklich erst zur Laufzeit (s.Beispiel oben) und damit kann
man auch nichts zu den möglichen Ereignisprozeduren sagen.

Beschreibe bitte mal etwas verstàndlicher, was Du wirklich
machen möchtest und was dazu in Deinem Code wirklich
steht.

So kam ich auf #If. Konnte da allerdings noch nichts Verwertbares
entwickeln. Und jetzt hoffe ich, das ihr mir helfen könnt.



Wie schon oben erwàhnt, gibt es zum Thema #If... unter dem
Begriff "Bedingte Kompilierung" eine ausführliche Beschreibung
in der Online-Hilfe. Das zeigt Dir dann auch, dass Du damit
auf der falschen Spur bist.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen