Kolorowanie zaznaczonego wiersza w DBGrid

dział ogólny

Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez Corvis » wtorek, 29 lipca 2008, 22:32

Witam,

Wie ktoś może jak to zrobic ?? Chodzi dokładnie o kliknieciu w wiersz a on ma sie zakolorowac na jakis kolor.

Pozdrawiam
"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
    NieznanyNieznana

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez Cyfrowy Baron » środa, 30 lipca 2008, 09:35

Takie rzeczy można robić tylko w TStringGrid. DBGrid jest przewidziany do pracy z Data Base Engine DBE.
Do tworzenie takich efektów niezbędne jest zdarzenie OnDrawCell, które umożliwia wogóle modyfikację tabeli. Problem w tym, że DBGrid takiego zdarzenia nie posiada, ma za to zdarzenie OnDrawDataCell, ale w pomocy jest napisane:

Do not write an OnDrawDataCell event handler. OnDrawDataCell is obsolete and included for backward compatibility. Instead, write an OnDrawColumnCell event handler.


Więc nic z tego, nie można z tego zdarzenie skorzystać.
Sprawa jest nawet bardziej skomplikowana, gdyż DBGrid nie zwraca numeru wiersza, wiec nawet gdyby odwołać się do Canvas tego obiektu, to nie ma jak pobrać tekstu z poszczególnych komórek.

Jedyne co udało mi się zrobić to pokolorować całą kolumnę korzystając ze zdarzenie OnDrawColumnCell:

Kod: Zaznacz cały
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
     const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{
  if(Column->Index == 1)
  {
    Column->Color = clYellow;
  }
}


Pobranie adresu kolumny nie jest wiec problemem, ale nie znalazłem funkcji zwracającej adres wiersza, ani takiej która by zwracała adres wybranej komórki, więc nie wiem jak pokolorować pojedynczą komórkę. Nie przesądzam oczywiście sprawy, być może istnieje jakaś funkcja zwracająca numery komórek, jeżeli tak, to pokolorowanie takiej komórki nie będzie problemem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez wargo » środa, 30 lipca 2008, 11:02

A nie można by skopiować funkcji z działającego komponentu z tą funkcją do pliku z innym komponentem?
Oczywiście każdy twory inną strukture widoku i pól, więc trzeba by było pozmieniac ale można by spróbować?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez Cyfrowy Baron » środa, 30 lipca 2008, 11:47

Nie mam pojęcia o czym ty właściwie prawisz?!?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez wargo » niedziela, 3 sierpnia 2008, 13:55

Cyfrowy Baron napisał(a): prawisz?!?

eeeee, co?

Chodziło mi oskopiowanie funkcji z pliku h odpowiedzialnej za potrzebną operacje kolorowania.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postprzez Cyfrowy Baron » niedziela, 3 sierpnia 2008, 14:34

"prawisz" - takie staropolskie wyrażenie znaczy tyle co mówisz. :D

Chodziło mi oskopiowanie funkcji z pliku h odpowiedzialnej za potrzebną operacje kolorowania.


Nie... no bądź poważny... :lol: :lol: :lol: :lol: :lol:

Tak się nie buduje bibliotek, gdyby tak można było, wystarczyłaby jedna biblioteka uniwersalna do obsługi całego API.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    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 6 gości

cron