• Hallöchen ist hier zufällig jemand der sich in Programmierung mit C++ auskennt? Ich arbeite mit Visual C++ 2005 Express und es geht um die Windowsformsanwendungen... Bitte melde dich ;)

  • Hey Gast!
    Hast Du eine Frage, die Du gerne beantwortet haben möchtet? Klickt auf den folgenden Link und Du wirst die Antwort finden:

    Hier findest Du die Antworten

    Egal, ob es sich um eine Frage zu einem bestimmten Thema in eurem Studium oder um allgemeine Ratschläge handelt - wir haben die Antworten, die ihr sucht. Also zögert nicht und klickt auf den Link! Wir freuen uns darauf, euch zu helfen.

  • also ok... ich hab ein Formular mit einen Label

    wenn eine Schaltfläche angeklickt wird, soll das Label von oben nach unten wandern. Es soll von den Koordinaten 0 bis 200 gehen und mindestens 20x wiederholt werden. Und Pro "Schritt" soll das Label eine Position nach unten verschoben werden.

    ich weiß das ich das Label mit dem Befehl
    label1->location=point (x,y);
    an einer bestimmten Stelle positionieren kann.

    Ich weiß auch das beim Anklicken das Ereignis MouseClick auf geführt werden muss... aber wie krige ich es hin das sich die y-Koordinate ändert wenn das Ereignis ausgelöst wird? Ich steh da momentan echt aufm Schlauch und bin für jede Hilfe dankbar.

    also HIILFE :) danke schonmal

  • Hallo jungspundi,

    wie wäre es damit:

    Code
    label1->Location = Point(label1->Location.X,label1->Location.Y+10);

    Viele Grüße,
    ENIAC

  • ich Depp, danke dir

    aber jetzt krieg ich nicht die Bedingung hin, das die Y-Koordinate nicht die 200 übersteigt :( hast du da evt. auch noch eine Idee?

  • Aber sicher doch :D:

    Code
    if(label1->Location.Y <= 190) 
       label1->Location = Point(label1->Location.X,label1->Location.Y+10);

    Viele Grüße,
    ENIAC

  • hallo ! mich würde auch gerne die Lösung hierfür interessieren. So wie angegeben, funzt die Lösung aber nicht. Die Aufgabenstellung ist ja etwas anderns. Es soll mind. 20 ausgelöst werden und ich glaube zu meinen, ohne ständig auf den Button klicken zu müssen.
    oder liege ich falsch ? hat jemand die Lösung ? danke

  • Hallo jugiii,

    die Aufgabe ist nicht ganz eindeutig, aber ich biete mal eine Lösung an:

    (1)

    Code
    for(int i = 0; i < 200; i++)
        label1->Location = Point(label1->Location.X,label1->Location.Y+1);

    D.h. die Position des Labels wird insgesamt 200 mal um einen Schritt in der Y-Koordinate nach unten verschoben.

    (2)

    Code
    for(int i = 0; i < 20; i++)
        label1->Location = Point(label1->Location.X,label1->Location.Y+10);

    In (2) wird die Y-Koordinate 20 mal um jeweils um die Schrittweite 10 erhöht.

    Was ich bei beiden Lösungen weggelassen habe ist die Bedingung, dass die Y-Koordinate nicht > 200 werden darf, aber das lässt sicht einfach hinzufügen (siehe oben).

    Viele Grüße,
    ENIAC

  • so jetzt hab ichs noch erweitert. So soll es aussehen:

    for (int o=0;o<=20;o++) {
    label1->Location = Point(0,0);
    for(int i = 0; i < 200; i++)
    label1->Location = Point(label1->Location.X,label1->Location.Y+1);
    }

  • kaum mit dem einen durch, schon das nächste Problem.
    Ich habe einen Bildbetrachter vor mir, welcher ein Einzelbild darstellt sowie ein Bild in groß abbildet. Der Titel dieses Bildbetrachters lautet Bildbetrachter (Titelleiste). Nun möchte ich neben diesem Bildbetrachter in der Titelleiste noch angeben den Pfad und den Namen der aktuell angezeigten Grafikdatei, also:

    Bildbetrachter - C:\test \meinbild.jpg

    wo muss ich denn dort die Daten verändern, damit das angezeigt wird. habs bis jetzt nur für ein anderes Register geschafft. :(

  • hallo nochmal. Neue Aufgabe - neues Glück. Man soll statt einer festgelegten Zeit (Timer derzeit von 10 Sekunden) das Formular nun so ändern, dass der Betrachter die Zeit in ein Eingabefeld selbst eingeben kann (in Sekunden). dann sollen die jeweiligen Bilder in der Show um diese Sekunden umschalten bzw. das nächste angezeigt werden. Wie kann ich dass denn mit numericUpDown realisieren ? Dieses nun verbinden mit einem Ereignis - weiss ich schon nicht mehr. Kann mich da jemand unterstützen ? Danke.

    hier habe ich schon mal die Methode für den Timer, welcher bisher eingesetzt wird und für einen Ausführen-Button, welcher weiter unten den Timer startet.:

    System::Void buttonStarten_Click(System::Object^ sender, System::EventArgs^ e) {
    if (listBox1->Items->Count == 0) {
    MessageBox::Show("Sie müssen erst Dateien auswählen!","Fehler");
    return ;
    }
    if (listBox1->SelectedIndex == -1)
    listBox1->SelectedIndex = 0;
    fensterBilderschau = gcnew formMax;
    fensterBilderschau->bildLaden(listBox1->SelectedItem->ToString());
    fensterBilderschau->Show();
    fensterBilderschau->Text = "Bilderschau" + " - Bild " + (listBox1->SelectedIndex+1) + " von " + listBox1->Items->Count + " - " + listBox1->SelectedItem;
    timer1->Start();
    }

    private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {
    if (listBox1->SelectedIndex < listBox1->Items->Count-1) {
    listBox1->SelectedIndex++;
    fensterBilderschau->bildLaden(listBox1->SelectedItem->ToString());
    fensterBilderschau->Text = "Bilderschau" + " - Bild " + (listBox1->SelectedIndex+1) + " von " + listBox1->Items->Count + " - " + listBox1->SelectedItem;
    System::Media::SystemSounds::Asterisk->Play();
    }
    else {
    listBox1->SelectedIndex = -1;
    timer1->Stop();
    fensterBilderschau->Close();
    }
    }
    das numericUpDown Feld habe ich schon eingebaut. Doch jetzt den alten Timer umbauen bzw. eine Aktion mit diesem numeric zu verbinden - ???