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
C++
-
jungspundi -
12. Juni 2009 um 18:54 -
Erledigt
-
-
Hallo jungspundi,
stell doch einfach deine Frage, dann wird auch jemand antwortenViele Grüße,
ENIAC -
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 -
-
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? -
-
super danke
-
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)
Codefor(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)
Codefor(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 -
werd ich dann gleich testen. danke vorerst
-
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.
-
sorry, zurück. habs hingekriegt:aechtz:
-
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 - ??? -
sorry aba da bin ich selber noch am rumbasteln....
-
hat dafür keine Idee? Ich bekomm das mit dem Timer einfach nicht hin... mir wird beim Übersetzen nicht mal das numericUpDown Feld angezeigt