CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Grafika w StringGrid

Grafika w StringGrid

dział ogólny

Grafika w StringGrid

Nowy postprzez anastazy » poniedziałek, 9 sierpnia 2010, 23:31

Witam!
Potrzebuję wyswietlić dane w formie "arkusza kalkulacyjnego". Problem w tym, że muszę to przedstawić na tle z okreslonycm obrazem (bmp). Są to dane procesu technologicznego. Ponieważ danych jest trochę (6 kolumn po 8 wierszy) zrobiłem to w StringGridzie. Niesety nie wiem jak "podłożyć obraz pod ten obiekt. Nie chodzi tu o wypełnienie 1 komórki, tylko całego obszaru wyświetlania danych... Może jakiś inny sposób?

Pozdrawiam!
Astek
Avatar użytkownika
anastazy
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): poniedziałek, 9 sierpnia 2010, 23:23
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows XPInternet Explorer 7

Re: Grafika w StringGrid

Nowy postprzez Corvis » wtorek, 10 sierpnia 2010, 08:35

Na szybko przychodzi mi do głowy, zrobić to na TListView i tam wstawić obrazek jako tło. Jak to zrobić opisane jest tutaj:

http://www.delphi3000.com/articles/article_4245.asp?SK=
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaSafari

Re: Grafika w StringGrid

Nowy postprzez Cyfrowy Baron » wtorek, 10 sierpnia 2010, 09:35

Można wypełnić tabelę tłem, ale tylko obszar na którym znajdują się komórki:

plik nagłówkowy:
KOD cpp:     UKRYJ  
private:
        Graphics::TBitmap *Wallpaper;


plik źródłowy
KOD cpp:     UKRYJ  
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 Wallpaper = new Graphics::TBitmap;
 Wallpaper->LoadFromFile("c:\\image.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State) /* Zdarzenie OnDrawCell */
{
 /* warunek pomija komórki nagłówka */
 if(ACol > 0 && ARow > 0)
 {
  StringGrid1->Canvas->CopyRect(Rect, Wallpaper->Canvas, Rect); // wypełnienie komórek tłem

  //ponowne wypełnienie komórek tekstem
  StringGrid1->Canvas->Brush->Style = bsClear;
  String Text = StringGrid1->Cells[ACol][ARow];
  int j = (Rect.Bottom - Rect.Top - StringGrid1->Canvas->TextHeight(Text))/2;

  StringGrid1->Canvas->TextOut(Rect.Left + 2, Rect.Top + j, Text);
 }
}
//---------------------------------------------------------------------------
 


Otrzymamy coś takiego:

stringgrid.png


Obszaru poza komórkami nie da się wypełnić, gdyż klasa TStringGrid nie umożliwia dostępu do tego obszaru.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Grafika w StringGrid

Nowy postprzez anastazy » wtorek, 10 sierpnia 2010, 14:36

Dziękuję serdecznie - właśnie takiego rozwiązania szukałem...

Pozdrawiam!
Astek
Avatar użytkownika
anastazy
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): poniedziałek, 9 sierpnia 2010, 23:23
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows XPFirefox


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 6 gości