Announcement

Collapse
No announcement yet.

Problemstellung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problemstellung

    Hallo,

    ich habe in einem Fenster 4 Labels mit verschiedenen Texten.
    Durch das Menü "Datei -> Start" soll die Ausgabe im ersten Label erscheinen
    und einmal bis zum vierten Label durchlauf. Wobei jeder Text etwa eine halbe bis eine Sekunde sichtbar sein soll.Am Ende erscheint wieder der Text im ersten Label.

    Kann mir jemand helfen??

    Danke.

  • #2
    Nimm dazu eine Timer-Komponente.

    Über Start wird der Timer gestartet.In dem OnTimer Ereignis verschiebst du den Text. in einer statischen oder globalen Variable merkst du dir die aktuelle Position. Nach einem Rundlauf wird der Timer angehalten
    Christian

    Comment


    • #3
      Ja, danke. Das mit der Timer-Komponente werde ich ausprobieren...

      Und wenn das ganze nun durch einen CommandButton gesteuert werden soll? Also durch jeden Klick soll das nächste label angesprochen werden. Wie kann man dies lösen???

      Gruß und Danke

      Comment


      • #4
        Anders!!

        Was soll den nun passieren???

        Mit einem CommandButton (Was ist das???)??

        Was soll passieren, wenn dieser gedrückt wird???

        Das nächste Label soll angesprochen werden. Fein und was soll mit dem Label passieren??

        Der Text geändert???

        Das ist doch nicht schwer:

        Label1->Text="Hallo";

        Auch hier wird sich in einer statischen oder globalen Variablen gemerkt, welches Label gerade dran war. Bloß das es nicht mit einem Timer stattfindet, sonder in der OnClick Routine des "CommandButton&quot
        Christian

        Comment


        • #5
          Ja pass auf:

          4 Labels. Im ersten steht "Erste Position", im zweiten "Zweite Position", usw. Anfangs sind alles Texte sichtbar. Klickt man auf eine Schaltfläche, verschwindet der Text aud den Labels 2 bis 4 und nur der Text aus Label 1 ist sichtbar. Beim nächsten Klick erscheint nur der Text aus Label 2 und der Text aus 1,3 und 4 ist nicht sichtbar,nächster klick und Text aus Label 3 ist sichtbar 1,2 und 4 verschwinden.Beim nächster klick ist nur der Text aus Label 4 sichtbar.

          Verstehst du, was ich meine?

          Comment


          • #6
            Klar, kein Problem:

            <pre>

            void __fastcall TForm1::Button1Click(TObject *Sender)
            {
            static int zaehler=0;
            zaehler++;
            if(zaehler>4)
            zaehler=0;
            switch(zaehler)
            {
            case 0:
            Label1->Caption="Label1";
            Label2->Caption="Label2";
            Label3->Caption="Label3";
            Label4->Caption="Label4";
            break;
            case 1:
            Label1->Caption="Label1";
            Label2->Caption="";
            Label3->Caption="";
            Label4->Caption="";
            break;
            case 2:
            Label1->Caption="";
            Label2->Caption="Label2";
            Label3->Caption="";
            Label4->Caption="";
            break;
            case 3:
            Label1->Caption="";
            Label2->Caption="";
            Label3->Caption="Label3";
            Label4->Caption="";
            break;
            case 4:
            Label1->Caption="";
            Label2->Caption="";
            Label3->Caption="";
            Label4->Caption="Label4";
            break;
            }
            }
            //---------------------------------------------------------------------------

            </pre&gt
            Christian

            Comment


            • #7
              Jo, prima! Klappt wunderbar.

              Ich hatte mich da in einer IF ELSE Anweisung dermaßen verrant, dass ich überhaupt nicht weiter kam. Danke Dir, dass du mir geholfen hast.
              Ich lerne gerade erst c++ und bin noch nicht wirklich fit und dankbar für jeden leichten Schlag auf den Hinterkopf...

              Die Sache mit dem Menü "Datei -> Start" hab ich so gelöst:
              <P>
              for ( i=0;i<=1500;i++)
              <P> {
              <P> label_1->SetText( "Erste Textposition" );
              <P> label_2->SetText( "" );
              <P> label_3->SetText( "" );
              <P> label_4->SetText( "" );
              <P> }
              <P> for ( i=0;i<=1500;i++)
              <P> {
              <P> label_1->SetText( "" );
              <P> label_2->SetText( "Zweite Textposition" );
              <P> label_3->SetText( "" );
              <P> label_4->SetText( "" );
              <P> }
              <P> for ( i=0;i<=1500;i++)

              <P> {
              <P> label_1->SetText( "" );
              <P> label_2->SetText( "" );
              <P> label_3->SetText( "Dritte Textposition" );
              <P> label_4->SetText( "" );
              <P> }
              <P> for ( i=0;i<=1500;i++)
              <P> {
              <P> label_1->SetText( "" );
              <P> label_2->SetText( "" );
              <P> label_3->SetText( "" );
              <P> label_4->SetText( "Vierte Textposition" );
              <P> }
              <P> for ( i=0;i<=1500;i++)
              <P> {
              <P> label_1->SetText( "Erste Textposition" );
              <P> label_2->SetText( "" );
              <P> label_3->SetText( "" );
              <P> label_4->SetText( "" );
              <P> }
              <P>
              <P>Ist auch ganz ok, oder?
              <P>Ich hab nen Compiler von Powersoft. Nennt sich Power++.
              <P>Da unterscheiden sich die Methoden etwas von deinen.
              <P>Ich schätze mal du hast einen Borland???
              <P>
              <P>Egal, danke dir nochmal...
              <P>
              <P>Gruß Matthia

              Comment


              • #8
                M.E. nicht:
                <pre>
                for ( i=0;i<=1500;i++)
                {
                label_1->SetText( "" );
                label_2->SetText( "" );
                label_3->SetText( "" );
                label_4->SetText( "Vierte Textposition" );
                }
                </pre>

                bedeutet, dass du 1501 mal den Text setzt???

                Ist das so gewünscht??? Das könnte flackern??

                Wenn es eine Pause sein sollte:

                sleep(1000): = 1 Sek. Paus
                Christian

                Comment


                • #9
                  Hi Matthias,

                  mach dir das Leben nicht so schwer! Nimm dir den Vorschlag von Christian nochmal vor und starte in deiner Ereignisroutine für Datei->Start einfach einen Timer. In Timer1OnTimer() rufst du dann jedesmal einfach nur Button1Click(this) auf. Wenn der Schritt = 4 ist stoppst du den Timer einfach wieder und der Spuk hat ein Ende.

                  Deine Lösung hast den entscheidenden Nachteil, daß das Programm nix mehr annimmt, solange du in der o.a. Routine rumackerst.

                  Bye - Pete

                  Comment


                  • #10
                    Ja, ok...
                    <BR>Ich werde mir diese Lösung nochmal vornehmen.
                    <BR>Ich glaube euch das ja, dass meine Lösung, na sagen wir nicht
                    <BR>ganz so perfekt ist...Hm.
                    <BR>Na gut, jedenfalls vielen Dank für die tolle Hilfe...
                    <P>Bis zum nächsten mal...
                    <BR>Gruß und schönes Wochenende
                    <BR>Matthia

                    Comment

                    Working...
                    X