TUpDown mittlere und rechte Maustaste anzeigen
-
Ich möchte auch bei Klick mit der mittleren und rechten Maustaste TUpDown bedienen. Nur wie bekomme ich das visuell angezeigt? Ich dachte ich mach das so:
void __fastcall TForm1::UpDown1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (Button==mbMiddle) { //SendMessage(UpDown1->Handle, WM_LBUTTONDOWN, 0 0); UpDown1->Perform(WM_LBUTTONDOWN, true, 0); } else if (Button==mbRight) { UpDown1->Perform(WM_LBUTTONDOWN, true, 0); } } //--------------------------------------------------------------------------- void __fastcall TForm1::UpDown1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (Button==mbMiddle) { //SendMessage(UpDown1->Handle, WM_LBUTTONUP, 0 0); UpDown1->Perform(WM_LBUTTONUP, true, 0); } else if (Button==mbRight) { UpDown1->Perform(WM_LBUTTONUP, true, 0); } }
Aber bei mittlerer und rechten Maustaste wird immer nur der obere Up-Schalter gedrückt. Was muss ich tun damit das auch mit dem Down-Schalter klappt?
-
Wenn du ArrowKeys auf true setzt, könntest du die Tasten 'KEY_UP' bzw. 'KEY_DOWN' an das UpDown-Control senden.
-
Per Tastatur Cursor hoch und runter funktioniert nur mit Eigenschaft Associate = Edit1
void __fastcall TForm1::UpDown1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (Button==mbMiddle) { UpDown1->Perform(WM_KEYDOWN, 0, 0); } }
Hierbei passiert leider gar nichts
Hat noch jemand eine Idee?
-
Hallo,
das Problem ist, dass erst einmal ermittelt werden muss, welcher ArrowButton gedrückt wurde. Hier mein Vorschlag:
void __fastcall TForm1::UpDown1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TUDBtnType ArrowButton; switch(UpDown1->Orientation) { case udVertical : if ( Y < UpDown1->Height/2) ArrowButton = btPrev; else ArrowButton = btNext; break; case udHorizontal : if ( X < UpDown1->Width/2) ArrowButton = btPrev; else ArrowButton = btNext; break; } if (Shift.Contains(ssMiddle)) { UpDown1->Increment = 2; UpDown1Click(UpDown1, ArrowButton); } if (Shift.Contains(ssRight)) { UpDown1->Increment = 10; UpDown1Click(UpDown1, ArrowButton); } } //--------------------------------------------------------------------------- void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) { switch(Button) { case btNext: UpDown1->Position += UpDown1->Increment; pos = UpDown1->Position; break; case btPrev: UpDown1->Position -= UpDown1->Increment; pos = UpDown1->Position; break; } Label1->Caption = IntToStr(pos); } //---------------------------------------------------------------------------
mfg
kpeter