Announcement

Collapse
No announcement yet.

Status während einer Aktion ausgeben

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

  • Status während einer Aktion ausgeben

    Hallo!!!

    Wie kann man den aktuellen Status während einer Suche(Dateien oder so) in einen Label festhalten!

    Habe währen einer rekursiven suche versucht über ein label den aktuellen ORT(Verzeichnis) auszugeben.

    Leider ohne erfolg. Habe alle möglichen STELLEN geteste - ohne erfolg.

    Was muß ich anstellen um dies umzusetzen.

    Danke im voraus...

  • #2
    Hallo Fritz,

    eigentlich sollte das gehen. Vielleicht kann da ein Label1.Repaint helfen, damit man dann auch was sieht...

    Grüße

    Juli

    Comment


    • #3
      Hallo Fritz,
      Hallo Julia,

      ein Repaint hilft nichts solange nicht auch ein Application.ProcessMessages() aufgerufen wird. Damit wird die Botschaftsbehandlung aufgerufen und das Label wird aktualisiert. Damit kann man sich das Repaint dann aber sparen, da automatisch ein Invalidate() beim Ändern der Caption aufgerufen wird. Nur wird das niemals abgearbeitet, solange eben nicht ProcessMessages aufgerufen wird.

      Dieses sollte aber nicht zu häufig aufgerufen werden, sondern z.B. nur bei einem Verzeichniswechsel.

      Beispiel aus einem meiner BCB-Programme:
      <PRE>
      bool __fastcall TFormMain::SearchJPEGs(AnsiString Path, TStringList* slFileList)
      {
      bool result;

      if (!SearchAborted)
      {
      if (!Path.IsEmpty() && !slFileList == NULL)
      {
      if (DirectoryExists(Path))
      {
      AnsiString SearchFiles = "*.*";
      TSearchRec sr;
      int iAttributes = 0;
      int pos;

      iAttributes |= faAnyFile;

      if (FindFirst(Path + SearchFiles, iAttributes, sr) == 0)
      {
      do
      {
      int curAttrib = FileGetAttr(Path + sr.Name);
      if (curAttrib & faDirectory)
      {
      if (sr.Name == "." || sr.Name == "..")
      continue;
      Label1->Caption = Path + sr.Name + " (" + AnsiString(FileCount) + " gefundene Dateien)";
      Application->ProcessMessages();
      result = SearchJPEGs(Path + sr.Name + "\\", slFileList);
      }
      else
      {
      slFileList->Add(Path + sr.Name);
      FileCount++;
      }
      } while (FindNext(sr) == 0 && !SearchAborted);
      }
      FindClose(sr);
      result = true;
      }
      else
      {
      result = false;
      slLog->Add("Keine Verzeichnisse / Dateien im Basispfad gefunden :" + BasePath);
      slLog->Add("Basispfad möglicherweise nicht vorhanden.");
      }
      }
      else
      {
      result = false;
      slLog->Add("Leerer Basispfad, oder keine slFileList erzeugt.");
      }
      }
      else
      {
      slFileList->Add("Suche durch Benutzer abgebrochen.");
      slLog->Add("Suche durch Benutzer abgebrochen.");
      result = false;
      }
      return result;
      }
      </PRE>
      Grüße Joche

      Comment

      Working...
      X