Das UpDown-Control erzeugen


Das Erzeugen des Controls selbst unterscheidet sich in keiner Weise von dem Erzeugen anderer Controls. Wir benutzen dazu "CreateWindowEx" und die Fensterklasse msctls_updown32:

hUD := CreateWindowEx(0, 'msctls_updown32', '', WS_VISIBLE or WS_CHILD or
  UDS_ALIGNRIGHT or UDS_ARROWKEYS or UDS_SETBUDDYINT, 10, 10, 30, 20, hWnd,
  IDC_UD, hInstance, nil);

Alternativ kann man auch die Konstante UPDOWN_CLASS als Fensterklasse benutzen.


Fensterstile des UpDown-Controls

Wert Bedeutung
UDS_ALIGNLEFT Positioniert das Control links neben dem zugeordneten Control
UDS_ALIGNRIGHT Positioniert das Control rechts neben dem zugeordneten Control
UDS_ARROWKEYS Das Control reagiert auf die Pfeiltasten
UDS_AUTOBUDDY Das Vorgängerfenster wird automatisch dem UpDown-Control zugeordnet
UDS_HORZ Die Pfeile liegen horizontal
UDS_HOTTRACK "HotTrack-Stil"
UDS_NOTHOUSANDS keine Tausenderpunkte
UDS_SETBUDDYINT Der Wert des UpDown-Controls wird automatisch im zugeordneten Fenster angezeigt


Die meisten Stile sind selbsterklärend. Es empfiehlt sich, ein wenig damit zu experimentieren. Interessant dürfte aber der Stil UDS_AUTOBUDDY sein, denn damit wird das UpDown-Control automatisch dem zuvor erzeugten Fenster zugeordnet:

// Edit-Control erzeugen
hwndEdit3 := CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', '', WS_VISIBLE or
  WS_CHILD, 130, 100, 55, 19, wnd, IDC_EDIT3, hInstance, nil);
// UpDown-Control erzeugen ... hTrack1 := CreateWindowEx(0, UPDOWN_CLASS, '', WS_VISIBLE or WS_CHILD or UDS_ALIGNRIGHT or UDS_ARROWKEYS or UDS_SETBUDDYINT // ... und dem Edit automatisch zuordnen or UDS_AUTOBUDDY, 10, 10, 30, 20, wnd, IDC_TRACK1, hInstance, nil);


Dieser Auszug stammt aus dem erweiterten Beispielprogramm. Würden wir auf den Stil UDS_AUTOBUDDY verzichten, bzw. würden wir unsere UpDown-Controls zu einem späteren Zeitpunkt erzeugen, dann könnten wir die Zuordnung auch manuell vornehmen, was so aussehen müsste:

SendMessage(hTrack1, UDM_SETBUDDY, WPARAM(hwndEdit3), 0);