Label oder etc. mit Pfeiltasten bewegen!

Shooter07

Grünschnabel
hi alle zusammen :) ich hätte mal wieder ne frage! Wie kann ich eine Label z.B mit Hilfe der Pfeiltasten bewegen, wie Lese ich die Tastaur aus? Gibs so was wie GetKey ? also das man das Label um 1 pixel verschiebt :confused:


plz mit Quellcode ;D


Danke Im vorraus :)
 

Dario Linsky

Erfahrenes Mitglied
Hi,

die VCL hab ich zwar immer nur mit Delphi verwendet, aber gibts für TForm nicht ein Ereignis wie KeyPress (o.ä.), auf das du reagieren kannst? In dem Fall kannst du ja einfach die Koordinaten des Labels neu setzen.

Grüße, D.
 

Shooter07

Grünschnabel
mhhh also ich habe mal so in der Hilfe mich schlau gemacht und da steht das so:

Code:
TColor FormColor;
void __fastcall TForm1::FormCreate(TObject *Sender)

{
  KeyPreview = true;
}


void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{
  if (Key == Key_F1)
  {
    FormColor = Form1->Color;
    Form1->Color = clAqua;
  }

}

void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)

{
  if (Key == Key_F1)
    Form1->Color = FormColor;
}

aber er hat probleme wenn ich die "void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)" einsetzte :S
 

Dario Linsky

Erfahrenes Mitglied
Hi,

geh doch einfach den Weg über das Formular bzw. über den Objekt-Inspektor. Da müsstest du die Möglichkeit haben, eine Funktion für das Ereignis zuzuweisen (einfach doppelklicken :)).

Grüße, D.
 

Shooter07

Grünschnabel
aha ok :D bloß jetzt breuchte ich noch die befehele womit ich die Komponente bewegen kann 1 px oda egal wie viel pixel ^^ hauptsacht das dingen bewegt sich
;D
 

Dario Linsky

Erfahrenes Mitglied
Hi,

alle Objekte, die von TControl (?) abgeleitet sind, müssten Eigenschaften wie Top und Left haben, mit denen die Position vom Steuerelement im Formular festgelegt wird. Also einfach diese Eigenschaften ändern. ;)

C:
Label1->Left += dx; // dx Pixel nach rechts
Label1->Top -= dy; // dy Pixel nach oben

Grüße, D.
 

Shooter07

Grünschnabel
Cool danke :) aber das mit dem dx check ich nicht xD sry is aber nen bischen spät :p also wie war das noch ma ? muss ich für dx was eintragen!? :(
 

Dario Linsky

Erfahrenes Mitglied
Hi,

dx oder dy sind Platzhalter für den Versatz, um den du das Element verschieben willst. Also entweder eine Variable anlegen oder den Wert fest eintragen.

Grüße, D.
 

Shooter07

Grünschnabel
OK Dankööö ^^ und noch was kann ich das label an meinem Cursor sozusagen gefestigen also das das Label mit dem Maus Zeiger gezogen wird ? :eek:
 

Dario Linsky

Erfahrenes Mitglied
Hi,

natürlich geht auch das. Schau dir dazu am besten mal das OnMouseMove-Ereignis an (hieß glaub ich so), da müsstest du die jeweils aktuellen Mauskoordinaten kriegen. Dann setzt du einfach das Label an diese Stelle.

Um ein Label mit festgehaltener Maustaste zu ziehen, müsstest du erst mit dem OnMouseDown-Ereignis in einen aktiven Zustand wechseln (z.B. mit einer booleschen Variable), den du durch das OnMouseUp-Ereignis wieder verlässt.

Grüße, D.
 

Neue Beiträge