Label wandern lassen
-
Hallo,
da ich Anfänger bin habe ich folgendes Problemm.
Ich habe in Visual2005 C++ ein Form mit einen Button und einen Label erstellt.
Wenn man auf den Button clickt wandert das Label nach unten.Label1->Location=Point(0,20);
Nun meine Frage ?
Wie bekomme ich es hin, das das Label bei jeden weiteren click auf den Button
um eine Position weiter nach unten wandert.DANKE
-
-
du könntest ein array von Point(s) anlegen und dan mit jedem ButtonClick immer einen eintrag im array weiter wandern
cli::array <Point> ^punkte;
int i = 0;punkte=gcnew <Point> (10);
punkte[0]=gcnew Point(x,y);usw...
dan im buttonclickevent halt:
i++
label1->Location=*punkte[i]; // den * nur evtl...so in etwa... hab ich mir grad so aussen ärmeln geschüttelt... mit VS im hintergrund und den compilerfehler meldungen bekommste das schon hin
-
Danke tko für die schnelle Antwort,
Habe mir in der Zwischenzeit noch eine andere Möglichkeit überlegt
vielleicht könntest Du mir dazu auch einen Tipp geben.Wenn ich einmal auf meinen Button geklickt habe soll das Label
um eine festgelegte Anzahl nach unten "wandern".Den Inhalt könnte ich zwar kopieren aber das ist nicht die Anforderung.
-
du könntest nen timer starten mit deinem button.
und in den timer_tick schreibste dan halt das rein was du sonst manuel machen würdest mit mehreren clicken auf den button
sprich pro tick wandert das label eine index stelle im point-array weiter
-
Wie wärs mit ner Schleife? Ausgelöst durch das Click Event kannst du die Pos einfach inkrementieren.
-
Danke für die Antworten und Anregungen,
sowas wie mit dem Timer habe ich mir auch schon überlegt
aber die Funkion habe ich in meinen Lehrgang noch nicht gehabt.
Das mit der Schleife versuche ich jetzt schon seit einiger Zeit.
Aber irgendwie finde ich nicht den richtigen start.
Darum wäre ich für einen etwas genaueren Tipp dankbar.
-
private: System::Void buttonMove_Click(System::Object^ sender, System::EventArgs^ e) { Int16 labelTop = labelMove->Top; //die oberere Prosition von "labelMov" in einer Variable speichern if (labelMove->Top == 20)//wenn das Label 20 Mal bewegt wurde, eine Meldung ausgegeben. { MessageBox::Show("Das Label hat sich " + + labelMove->Top::get() + " Mal nach unten bewegt!","Und es bewegt sich doch...",MessageBoxButtons::OK,MessageBoxIcon::Exclamation,MessageBoxDefaultButton::Button1,MessageBoxOptions::DefaultDesktopOnly); } if (labelMove->Top == 200) { MessageBox::Show("Das Label hat sich bis zur Position " + labelMove->Top::get() + " bewegt. \nDie Position wir nun wieder auf 0 gesetzt.","Und es bewegt sich nicht mehr...",MessageBoxButtons::OK,MessageBoxIcon::Exclamation,MessageBoxDefaultButton::Button1,MessageBoxOptions::DefaultDesktopOnly); //da in der nächsten Zeile die Variable "labelTop" um 1 erhöt wird, setzen wir hier einen nekativen Wert labelTop = -1; } labelTop +=1; //die Variable um eins erhöhen labelMove->Location = Point(12,labelTop); //die Wert der Variable labelMove übergeben labelMove->Text = "Top von \"labelMove\" = " + Convert::ToString(labelMove->Top);//Text im Label anzeigen }
Gruß vom Helfer