Label na ProgressBar

dział ogólny

Label na ProgressBar

Nowy postprzez Pitek » poniedziałek, 4 stycznia 2010, 23:04

Witam mam pytanie jak nmieścić komponent Label na ProgressBar ?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Label na ProgressBar

Nowy postprzez Cyfrowy Baron » wtorek, 5 stycznia 2010, 10:07

Nie da się.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4721
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 443
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Label na ProgressBar

Nowy postprzez Witold » wtorek, 5 stycznia 2010, 13:25

pitek3010 napisał(a):Witam mam pytanie jak nmieścić komponent Label na ProgressBar ?


możesz pisać po TProgressBar jak tam (kod TOndrej'a):
http://www.experts-exchange.com/Program ... 92688.html
po (niedopracowanej) konwersji na BCB:
Kod: Zaznacz cały
TWndMethod FProgressBarWndProc;
//...
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  FProgressBarWndProc = ProgressBar1->WindowProc;
  ProgressBar1->WindowProc = ProgressBar1WndProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ProgressBar1WndProc(TMessage&  Message)
{
if (Message.Msg == WM_PAINT)
    {
      TCanvas * Canvas = new TCanvas;
      try
        {
          Canvas->Handle = GetDC(ProgressBar1->Handle);
          try
            {
              // erase background
               TRect R = ProgressBar1->ClientRect;
              Canvas->Brush->Color = Color;
              Canvas->FillRect(R);
              // let the progressbar paint itself
              FProgressBarWndProc(Message);
              // draw text
              Graphics::TBitmap * B = new Graphics::TBitmap;
              try
                {
                  B->Width = R.Right - R.Left;
                  B->Height = R.Bottom - R.Top;
                  B->Canvas->Brush->Color = clBlack;
                  B->Canvas->FillRect(R);
                  B->Canvas->Font = this->Font;
                  B->Canvas->Font->Style =  B->Canvas->Font->Style << fsBold; //+
                  B->Canvas->Font->Color = clWhite;

                  const double ipr = 100.0 * ProgressBar1->Position / ProgressBar1->Max;
                  const AnsiString pr = AnsiString().sprintf("%.0f%%", ipr);
                  R.top += 2; //+
                  DrawText(B->Canvas->Handle, pr.c_str(), -1, &R, DT_NOCLIP | DT_CENTER);
                  BitBlt(Canvas->Handle, 0, 0, B->Width, B->Height, B->Canvas->Handle, 0, 0, SRCINVERT);
                }
              __finally
              {
                delete B;
              }
            }
          __finally
          {
            ReleaseDC(ProgressBar1->Handle, Canvas->Handle);
          }
        }
      __finally
      {
        delete Canvas;
      }
    }
  else FProgressBarWndProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  ProgressBar1->WindowProc = FProgressBarWndProc;
  FProgressBarWndProc = 0;
}
//---------------------------------------------------------------------------


można by też wywalić ten kawałek z bitmapą, i pisać bezpośrednio po ProgressBar'e:
Kod: Zaznacz cały
// ...
  Canvas->Brush->Style = bsClear;
  DrawText(Canvas->Handle, pr.c_str(), -1, &R, DT_NOCLIP | DT_CENTER);
//...
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 0 gości

cron