Frage

In VB6, ich habe eine DTPicker Steuerelement in einem Formular. (Der DTPicker ist das Kalenderdatum / Zeit-Selektor, in Microsoft Windows Common Controls-2 6.0, erhältlich von der Komponenten-Dialog).

Zwar gibt es viele Eigenschaften sind die Farben des Kalenders zu beeinflussen, wenn sie nach unten fallen gelassen, gibt es keine Eigenschaft, die die Farbe des Datums erlaubt das Ändern, die in der Textbox angezeigt wird. Ich bin auf der Suche nach so etwas wie der ForeColor-Eigenschaft des Standard TextBox.

Hat jemand eine kleine API Magie mir zu erlauben, diese Eigenschaft zu simulieren?

War es hilfreich?

Lösung

Ich hasse etwas zu schreiben, die nicht wirklich hilfreich ist, aber dies scheint etwas über den Rahmen dessen, was Microsoft soll Entwicklern die Kontrolle zu tun. Zwar gibt es sicherlich einen API-Aufruf sein muss, um die Farbe zu setzen (Windows weiß sicher, es zu malen schwarz, wenn aktiviert und grau, wenn sie deaktiviert), wobei das Verfahren so entgeht mich zu tun.

Meine Empfehlung, sollte niemand anders reagieren, wie zu tun, was Sie brauchen, ist entweder eine neue Datetime-Picker Steuerung mit den benötigten Eigenschaften zu erhalten (es scheint, dass einige 3rd-Party-Optionen gibt es), oder „Fahren Sie mit eigene“Kontrolle.

FWIW, das gleiche Problem existiert in VB.NET mit der Ausnahme, dass Microsoft speziell überschreibt (und dann versteckt) die ForeColor (und Backcolor) Eigenschaften aus dem allgemeinen Steuer Objekt geerbt nichts zu tun.

Andere Tipps

Ich werde zwei Probleme mit dem Datepicker Objekt und eine Abhilfe für sie lösen.

  1. Sie können nicht einen leeren Wert in Datepicker, setzen die mich zu dem zweiten Problem führen.
  2. Sie können die Schriftfarbe ändern zumindest, um es leer erscheinen zu lassen.

, um die Funktionalität des Datepicker zu halten und die Fähigkeit zu erlangen, einen leeren Wert und Ihre regelmäßigen Schriftformatierungsoptionen (Farben, etc.), habe ich zwei Objekte. Zunächst ein DTP-Objekt machen und die Breite festgelegt, so dass Sie nur wirklich die Dropdown-Pfeil sehen. Für mich war das 15. Dann eine regelmäßige TextBox machen, die breit genug ist, Ihr Datum zu halten. Legen Sie die DTP direkt nach rechts (oder links) des Textfeldes Pfeil. Dann einfach Sie Code an das Change-Ereignis des DTP hinzufügen seine .Wert in die .Text des TextBox zu kopieren wie folgt:

Private Sub MyDTP_Change()    
    MyUserForm.MyDateTextBox.Text = MyUserForm.MyDTP.Value
End Sub

Dann keine Datenreferenzen haben Sie die MyDateTextBox.Text zugreifen müssen anstelle der MyDTP.Value und presto! Sie erhalten die Funktionalität des DTP mit der Formatierung Kontrolle eines regelmäßigen TextBox.

EDIT: Leider jeffk, ich arbeite nicht mit VB in einer Produktionsumgebung vor 9 Jahren. :) Ich möchte die andere Seite der Funktionalität, dies auch addieren. Auf diese Weise kann 2-Wege-Synchronisierung zwischen dem Text und dem DTP. IE: manuell ein Datum in das Textfeld eingeben und der DTP-Kalender folgt. Wenn das Textfeld leer ist oder hat ein ungültiges Datum, die DTP standardmäßig auf dem heutigen Datum.

Private Sub MyDateTextBox_Change()    
    If MyUserForm.MyDateTextBox.Text <> "" And 
    IsDate(MyUserForm.MyDateTextBox.Text) = True Then
        If CDate(MyUserForm.MyDateTextBox.Text) <= MyUserForm.MyDPT.MaxDate And _
        CDate(MyUserForm.MyDateTextBox.Text) >= MyUserForm.MyDPT.MinDate Then
            MyUserForm.MyDTP.Value = MyUserForm.MyDateTextBox.Text
        Else
            MyUserForm.MyDTP.Value = Date
        End If
    Else
        MyUserForm.MyDTP.Value = Date
    End If
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top