SpeedButton bewegt sich nicht
-
Hallo,
ich möchte einen SpeedButton mit den Pfeiltasten steuern.
Also hab ich ein leeres Formular und einen SpeedButton, dazu diesen Code:void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { switch (Key) { case VK_DOWN: SpeedButton1->Top-=10; case VK_UP: SpeedButton1->Top+=10; case VK_RIGHT: SpeedButton1->Left+=10; case VK_LEFT: SpeedButton1->Left-=10; } }
Aber er bewegt sich nicht. Wo ist der Fehler?
-
Hallo
Die Operatoren += und -= sollten nicht auf VCL-Properties angewendet werden, da diese nur eine temporäre Instanz zurückgeben. Du must die Addition/Subtraktion ausschreiben
SpeedButton1->Top= SpeedButton1->Top-10;
bis bald
akari
-
Geht immernoch nicht.
-
Du hast in deinem
switch() { ... }
kein einziges break; drinne...
-
Dann hätte er sich ja trotzdem bewegt (wenn auch in die falsche Richtung).
Geht immernoch nicht.
-
akari schrieb:
Die Operatoren += und -= sollten nicht auf VCL-Properties angewendet werden, da diese nur eine temporäre Instanz zurückgeben.
Für skalare Typen können die kombinierten Operatoren auch bei Properties verwendet werden, da der Compiler
a += b;/
unda = a + b;
austauschen darf. Bei Klassentypen (wie z.B. String) darf er das nicht.Naruto1310 schrieb:
Dann hätte er sich ja trotzdem bewegt (wenn auch in die falsche Richtung).
Das würde ich an deiner Stelle nochmal überdenken
Nur zwei Pfeiltasten hätten dann eine Wirkung.Naruto1310 schrieb:
Geht immernoch nicht.
Setze die Eigenschaft TForm::KeyPreview auf true.
-
Geht immernoch nicht.
Nur zwei Pfeiltasten hätten dann eine Wirkung.
Aber er hätte sich bewegt.
-
Wenn Du nur einmal den Debugger genommen hättest, dann wäre Dir vielleicht aufgefallen, dass OnKeyPress das falsche Event ist. Versuch es doch mal mit OnKeyDown.
-
Jetzt gehts. Danke.