C++ Builder Snippets  


Bitmaps und ProgressBar in der Statusleiste anzeigen:
 

Im folgenden Beispiel wird in der Statusleiste beim Klick auf die Schaltfläche "Progressbar anzeigen" (Ähnlich wie in MS-Office®-Anwendungen beim Speichern) eine Bitmap-Graphik und ProgressBar angezeigt. Die Graphik wird dabei aus Ressourcen geladen (siehe auch Einbinden von Bitmap-, Cursor- und Sound-Ressourcen in BCB-Anwendungen). Die Statusleiste beinhaltet drei Panels mit Breiten von 150, 23 und 200 Pixel und ist auf dem Formular fmMain plaziert.

Screenschot

Quellcode:


//---------------------------------------------------------------------------
// Initialisierung
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormShow(TObject *Sender)
{
  // ProgressBar erzeugen und initialisieren:
  ProgressBar = new TProgressBar (StatusBar1);
  ProgressBar->Parent = StatusBar1;
  ProgressBar->Height = StatusBar1->Height-2;
  ProgressBar->Top=2;
  ProgressBar->Left=StatusBar1->Panels->Items[0]->Width+
                    + StatusBar1->Panels->Items[1]->Width + 2;
  ProgressBar->Width = StatusBar1->Panels->Items[2]->Width-2;

  // Text im Panel 0 der Statusleiste ausgeben:
  StatusBar1->Panels->Items[0]->Text="Bereit...";

  // TBitmap erzeugen und Bild aus Ressourcen laden:
  pResImg = new Graphics::TBitmap;
  pResImg->LoadFromResourceName(int(HInstance), "PIC_SAVE");

}

//---------------------------------------------------------------------------
// Klick-Eventhandler für die Schaltfläche "Progressbar anzeigen":
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
  // ProgressBar-Position zurücksetzen:
  ProgressBar->Position = ProgressBar->Min;

  // ProgressBar anzeigen:
  ProgressBar->Visible = true;

  // Bitmap im Panel 1 der Statusleiste zeichnen:
  StatusBar1->Canvas->Draw(StatusBar1->Panels->Items[0]->Width+4,3,pResImg);

  // Statusmeldung im Panel 0 anzeigen:
  StatusBar1->Panels->Items[0]->Text="Daten werden gespeichert...";

  // "Fortschritt" simulieren:
  while(ProgressBar->Position < ProgressBar->Max)
  {
    ProgressBar->Position+=5;
    Sleep(50);
    Application->ProcessMessages();
  }
  StatusBar1->Invalidate();                         // Bitmap löschen
  StatusBar1->Panels->Items[0]->Text="Bereit...";   // Panel 0 - Text ändern
  ProgressBar->Visible = false;                     // Progeressbar ausblenden
}


//---------------------------------------------------------------------------
// Speicher aufräumen
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
  if(ProgressBar != NULL) { delete ProgressBar; ProgressBar = NULL; }
  if(pResImg != NULL) { delete pResImg; pResImg = NULL; }
}
//---------------------------------------------------------------------------


  Download BCB4
Projekt-Quellcode
Download
Demo-Exe

© '99-2000 by S. Kreutzmann