Announcement

Collapse
No announcement yet.

Sichtbarkeit zur Laufzeit steuern

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

  • Sichtbarkeit zur Laufzeit steuern

    Hallo zusammen,
    ein Progressbar und eine dazugehörende Beschriftung möchte ich zur Laufzeit teilweise nicht sichtbar machen. Mit der Progressbar funktioniert das wie gewünscht, den Label kann ich mit TLabel->Show() nicht zur Anzeige bringen ?
    Bin für Lösungsvorschläge dankbar

  • #2
    Labelx->Visible = true; // sichtbar<BR>
    Labelx->Visible = false; // unsichtba

    Comment


    • #3
      Hallo Jochen,
      hab ich auch schon probiert. Warum funktioniert das ganze beim Progressbar ?
      Wenn ich im Debug-Modus arbeite wird der Label sichbar, sobald ich im Stepmodus das Formulatende erreiche !!

      Comment


      • #4
        Hallo Josef,

        ich verstehe nicht was das mit dem Stepmodus zu tun hat. Und was meinst Du mit Formularende?

        Falls Du meinst, dass das sichtbar / unsichtbar machen verzögert dargestellt wird, kann das daran liegen, dass das Programm ausgelastet ist. Sprich mit irgendwelchen Berechnungen beschäftigt ist. In dieser Zeit werden die für die Anwendung anstehenden Botschaften nicht verarbeitet. Ergo wird das Laben auch nicht sichtbar oder unsichtbar.<BR>
        Um das zu umgehen, kannst Du nach dem sichtbar / unsichtbar machen die Methode<BR>
        >Application->ProcessMessages();<BR>

        aufrufen. Damit weist Du die Anwendung an die anstehenden Botschaften abzuarbeiten. Dies bietet sich auch in Schleifen an, damit das Programm nicht abgestürzt aussieht und bedienbar bleibt (minimieren / maximieren z.B.). Man sollte die Funktion allerdings nicht bei jedem Schleifendurchlauf aufrufen. Sondern je nach Dauer für einen Schleifendurchlauf nur jeden 10ten oder 100ten Schleifendurchlauf;

        Grüße Joche

        Comment


        • #5
          Hallo Jochen,

          das ganze findet im Hauptformular statt. Dort stehen die beide Zeilen :

          void __fastcall TfrmBoschDLE150::mnuAuswahlClick(TObject *Sender)
          {

          Code....

          Label->Show();
          Prgressbar->Show();

          Code.....

          } // Formularende

          wobei die Progressbar sichtbar wird, der Label aber nicht

          Comment


          • #6
            Hallo Josef,

            Label->Show funktioniert bei mir...

            Kurzes Beispiel:
            Form bestehend aus 2 x Button, 1 x Label und 1 ProgressBar.
            Die Button-Funktionen:
            <PRE>
            void __fastcall TForm1::Button1Click(TObject *Sender)
            {
            if (Label1->Visible)
            Label1->Hide();
            else
            Label1->Show();
            if (ProgressBar1->Visible)
            ProgressBar1->Hide();
            else
            ProgressBar1->Show();
            }
            //---------------------------------------------------------------------------
            void __fastcall TForm1::Button2Click(TObject *Sender)
            {
            Label1->Visible = !Label1->Visible;
            ProgressBar1->Visible = !ProgressBar1->Visible;
            }
            //---------------------------------------------------------------------------
            </PRE>

            Probiers mal aus. Der 'Fehler' muss also an einer anderen Stelle liegen.

            Beide Funktionen erfüllen die gleiche Aufgabe, nur ist die Verwendung von Visible mit weniger Aufwand verbunden -> Entwicklerfreundlich.

            Grüße Joche

            Comment


            • #7
              Hallo Jochen,

              so funktioniert es wie gewünscht:

              Label->Show();
              Application->ProcessMessages();
              Progressbar->Show();

              Es bleibt mir ein Rätsel warum die Progressbar sichtbar war und der Label nicht ?

              Vielen Dank Joche

              Comment

              Working...
              X