PDA

Vollständige Version anzeigen : Blinken eines Textfeldes vor der Eingabe


Gertraude
14.11.2000, 15:53
Kennt jemand eine Möglichkeit das Textfeld (Eingabefeld) in einem Formular blinken bzw. ständig die Farbe wechseln zu lassen, solange es nicht belegt ist. Nach der Belegung (Eingabe) sollte es jedoch stillstehen.

Mit Gruß
Gertraude

Horst Schulte
14.11.2000, 22:23
Hallo,

vielleicht so?


Grafische Hervorhebung des aktiven Steuerelementes

Frage:
Ich habe in ACCESS ein sehr umfangreiches Formular entworfen. Es ist leider nicht immer leicht zu erkennen, welches der Steuerelemente aktiv ist bzw. wo sich der Cursor gerade befindet.
Wie kann ich grafisch hervorheben, in welchem meiner Steuerelemente sich der Cursor befindet ?

Antwort:
Sie können das Bezeichnerfeld des jeweilig aktiven Steuerelementes mit einem farbigen Rahmen versehen. Beachten Sie dabei, daß dies nur in Formularen funktionieren kann, welche in der Ansicht "Einzelnes Formular" geöffnet sind.

Gehen Sie dazu folgendermaßen vor:

Tragen Sie für alle in Frage kommenden Steuerelemente in die Eigenschaft "Marke" den Namen des entsprechenden Bezeichnerfeldes ein.

Beispiel:

Der Name eines Bezeichnungsfeldes ist "Text1".
Tragen Sie "Text1" (ohne Anführungszeichen) in die Eigenschaft "Marke" des entsprechenden Textfeldes ein.

Schreiben Sie darüber hinaus in die Eigenschaft des Textfeldes "Beim Hingehen" den Funktionsaufruf:

"=setframe()" (ohne Anführungszeichen)

Und in die Eigenschaft "Beim Verlassen" den Funktionsaufruf:

"=resetframe()" (ohne Anführungszeichen)


Erstellen der Funktionen:

Legen Sie ein neues Modul an und schreiben Sie folgende Zeilen in den Deklarationsbereich dieses Moduls:

Global Const Rahmenart = 1
Global Const RahmenlinienArt = 3
Global Const Rahmenfarbe = 255


Erstellen Sie die beiden Funktionen "SetFrame ()" und "ReSetFrame ()" :

Function SetFrame ()
On Error Resume Next
Dim fo As Form
Dim CoName As String
CoName = Trim(screen.activecontrol.tag)
Set fo = screen.activeform
fo(CoName).borderstyle = Rahmenart
fo(CoName).borderlinestyle = RahmenlinienArt
fo(CoName).bordercolor = Rahmenfarbe
On Error GoTo 0
End Function


Function ReSetFrame ()
On Error Resume Next
Dim fo As Form
Dim CoName As String
Set fo = screen.activeform
CoName = Trim(screen.activecontrol.tag)
fo(CoName).borderstyle = 0
fo(CoName).borderlinestyle = 0
fo(CoName).bordercolor = 0
On Error GoTo 0
End Function


Erklärung:
Sobald ein Steuerelement aktiviert wird, wird die Funktion "SetFrame()" aufgerufen. Diese Funktion liest den Namen des Bezeichnerfeldes aus der Eigenschaft "Marke" des Steuerelementes aus.
Über diesen Namen werden Eigenschaften wie "borderstyle", "bordercolor" usw. gesetzt. Die Funktion "ReSetFrame ()" setzt diese Eigenschaften lediglich wieder zurück.

Anmerkung:
Sie können diese Funktionalität anwenden für: "Textfelder", "Listenfelder", "Kombinationsfelder" und "Optionsgruppen".

Grüße
Horst http://www.horst-schulte.de

tGertraude
15.11.2000, 16:49
Ich bedanke mich für die Antwort. Funktioniert gut, entspricht jedoch leider nicht ganz meinem Bedürfnis. Kennt jemand eine Möglichkeit, die Programmierung so umzuschreiben, daß z.B. der Rahmen eines bestimmten Feldes so lange blinkt , bis in ihm ein Eintrag erfolgte.

Gruß Gertraude

Joachim Z.
15.11.2000, 17:00
Es gibt eine Knowhow.mdb man downloaden kann aus einigen ACCESS - foren zb. bei www.access-home.de (http://www.access-home.de)

Dort gibt es die möglichkeit Felder zu anmieren. d.h. z.B. das Bezeichnungsfeld fängt an zu blinken bei einer bestimmten Aktion

Ich hoffe du kommst weiter

Ralf Pfiffer
15.11.2000, 17:34
Hallo Gertraude,

versuchs doch mal mit folgendem Code im Zeitgeber-Ereignis:

Private Sub Form_Timer()

Dim ctl As Control

For Each ctl In Me.Section(0).Controls
If ctl.ControlType = acTextBox Then
If (IsNull(ctl) Or ctl = "") And Farbe_An = True Then
ctl.BackColor = 255
Else
ctl.BackColor = 16777215
End If
End If
Next ctl

If Farbe_An = True Then
Farbe_An = False
Else
Farbe_An = True
End If

End Sub

Stell den Interwall auf 600 (= 1 sec)

Deklarieren die Variablen

Dim Farbe_An As Boolean

im Klassenmodul im Bereich (Allgemein)(Deklarationen)

gruß Ralf

iGertraude
17.11.2000, 11:05
Ich bedanke mich bei allen, die auf meine Anfrage geantwortet haben.
Mit Gruß
Gertraude