PDA

Vollständige Version anzeigen : Control definieren


Kigo
05.10.2001, 10:40
Hi Leute,

wie kann ich denn einer Control-Variablen den gewünschten Namen geben? So bekomme ich immer eine Fehlermeldung:

Private Sub KVT_GotFocus()
Dim test As String, test2 As String
Dim AktSteuerelement1 As Control
Dim AktSteuerelement2 As Control
Set AktSteuerelement1 = Screen.ActiveControl
test = AktSteuerelement1.Name
test2 = test & "k"
AktSteuerelement2.Name = test2

Bei dem letzten Befehl kommt die Fehlermeldung. Dabei möchte ich nur das gewünschte Control sichbar machen (allgemein):

AktSteuerelement2.visible=true

Sascha Trowitzsch
05.10.2001, 12:25
Verstehe überhaupt nicht, was du da machst.
Welches Control soll denn sichtbar werden und was hat das mit dem Namen Control.Name & "K" zu tun ??

Ein Steuerelement hat immer einen Namen, den muss man nicht vergeben, es sei denn, man erstellt mit CreateControl selber eins.
Deshalb kann man ihm auch später keinen Namen mehr zuweisen (außer in der Entwurfsansicht).

Das Screen.ActiveControl sichtbar zu machen gibt wiederum keinen Sinn, denn es kann ja per Definition nicht aktiv sein, wenn es unsichtbar ist.

Fragen über Fragen...
Ciao, Sascha

Kigo
05.10.2001, 12:41
Hi Sascha,

na gut, ich habe mich whrscheinlich erstmal wirklich nicht klar ausgedrückt und auf der anderen Seite habe ich die Sub unstrukturiert dahingesetzt (weil es mir halt nur ums Prinzip geht):

Also folgendes Problem: Ich habe jeweils 2 Steuerelemente (je 1 Textfeld und 1 Kombifeld). Mein Textfeld heißt z.B. Test1 - dann heißt mein Kombifeld Test1K: also immer wie das Textfeld nur mit einem "K" dahinter. Am Anfang ist nur das Textfeld sichtbar. Wenn das Textfeld nun den Fokus erhält, soll das Kombifeld (Test1K) eingeblendet und das Textfeld ausgeblendet werden. Deshalb wollte ich die ganze Sache so lösen (s.unten):

test = AktSteuerelement1.Name 'Textfeld (test1)
test2 = test & "k" 'Kombi (test1K)
AktSteuerelement2.Name = test2

Also Name des aktiven Textfeldes bestimmen. Namen + "K" um den Namen des zugehörigen Kombi zu bestimmen. Der Control-Variablen den Namen zuweisen um dann:

AktSteuerelement2.visible = true

Ich hoffe jetzt ist mein Vorhaben klar geworden.

Wie gesagt bei:
AktSteuerelement2.Name = test2
bekomme ich die Fehlermeldung. Hat denn jemand ne Idee wie ich es richtig machen kann?

MAP_SM
05.10.2001, 12:52
Hi,

versuch doch mal den namen in "" zu setzen , oder den umweg über eine Variant-Var. zu gehen.

map

Sascha Trowitzsch
05.10.2001, 13:45
Du definierst AktSteuerelement2 als Control, ohne dass es überhaupt schon mit Set AktSteuerelement2 = ... angelegt wurde.
Aber selbst dann kann man einem Control keinen Namen zuweisen, wie ich schon schrieb.

Dein Problem löst sich nach deiner Variante einfach:

Schreibe statt:

AktSteuerelement2.Name = test2

> Me.Controls(test2).Visible=true

Das ganze macht aber eigentlich nur Sinn, wenn es z.B. in einer Timer-Prozedur steht, die dauernd den Focus des Formulars testet.
Ansonsten ist es einfacher, die Kombi-Felder über die Ereignisse 'Beim Hineingehen' und 'Beim Verlassen' der Textfelder sichtbar zu machen.

Ciao, Sascha