tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
2149
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    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


    plz mit Quellcode ;D


    Danke Im vorraus
     

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  3. #3
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    mhhh also ich habe mal so in der Hilfe mich schlau gemacht und da steht das so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    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
     

  4. #4
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  5. #5
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    aha ok 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
     

  6. #6
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.

    Code c:
    1
    2
    
    Label1->Left += dx; // dx Pixel nach rechts
    Label1->Top -= dy; // dy Pixel nach oben

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  7. #7
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    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!?
     

  8. #8
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  9. #9
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    OK Dankööö und noch was kann ich das label an meinem Cursor sozusagen gefestigen also das das Label mit dem Maus Zeiger gezogen wird ? :o
     

  10. #10
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  11. #11
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    uff naja das wird ya was sach ma haste du msn oder icq oder so ?
     

  12. #12
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Naja, klingt jetzt vielleicht etwas schwer, ist es aber eigentlich gar nicht. Sind ja nur zwei zusätzliche Funktionen mit einem Einzeiler.

    Ja, ICQ hab ich, geb ich aber nicht raus. Für Support ist das Forum da.

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  13. #13
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    uhhh Undercover naja danke erst mal ich werde erst mal schlafen gehen und morgen/heute weiter machen ;D man schreibt sich
     

  14. #14
    Avatar von Shooter07
    Shooter07 Shooter07 ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    18
    Könntest du mir vllt nen Code schreiben wie man auf Button1 die Tastatur KeyUp legen kann?

    also wenn Button1 per KeyUp (Pfeiltaste nach Oben) gedrückt wird soll sich das Label1 nach oben verschieben!

    wäre sehr Hilfreich ;D
     

  15. #15
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hi,

    im KeyUp-Ereignis (KeyPress wäre m. M. n. besser, weil KeyUp nur auf das Loslassen der Taste reagiert) hast du als Parameter an die Funktion den Code der gedrückten Taste. Mit einer ASCII-Tabelle lässt sich doch sicher heraus finden, welchen Code die Pfeiltasten haben.

    Du musst also nur noch mit einer switch-Anweisung die gedrückte Taste mit den Pfeiltasten vergleichen.

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    
    switch(KeyCode)
    {
        case ARROW_UP:
            Label1->Top -= 1;
            break;
        case ARROW_DOWN:
            // ...
    }

    Du müsstest mal nachschlagen, ob die Variablennamen und Konstanten tatsächlich so heißen. Hab mich seit Jahren nicht mehr mit der VCL beschäftigt.

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

Ähnliche Themen

  1. Rapper sucht Label oder Produzenten
    Von YoungHustler im Forum Musik & Musiker
    Antworten: 24
    Letzter Beitrag: 08.01.09, 22:28
  2. Antworten: 12
    Letzter Beitrag: 26.11.07, 10:46
  3. Element per Pfeiltasten bewegen
    Von Gregor_Samsa im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 07.11.07, 14:17
  4. awt- oder swing-Label(panel) in Applets?
    Von lowterm im Forum Java
    Antworten: 4
    Letzter Beitrag: 08.10.07, 09:14
  5. Rechnen mit eingabe in Label oder Textfeld
    Von aneril im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 12.06.03, 16:46