CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - DBGrid - usuniÄ™cie belki ze wskaźnikiem lub akcja OnClick
Strona 1 z 1

DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: środa, 1 czerwca 2011, 23:20
przez kondzio7
Witam,
mam następujący problem, może ktoś będzie znał rozwiązanie

W aplikacji mam pole TEdit, które pobiera dane z aktualnie zaznaczonego wiersza z komponentu TDBGrid. Dane są pobierane w momencie, gdy:
- klikniemy na jakiekolwiek pole w Gridzie
- ruszymy scrollem w myszce
- zmieniamy wiersze za pomocÄ… nawigatora.

I teraz meritum sprawy. Jeżeli klikniemy w belke znajdującą się po lewej stronie Grida, to aktualny wiersz zmienia się, natomiast dane nie są pobierane przez pola Edit.
Obrazek
Na zdjęciu można zerknąć o jaką belkę chodzi.
Potrzebuję jednego z dwóch rozwiązań:
1. Albo zlikwidować tą belkę
2. Albo oprogramować belkę zdarzeniem OnClick tak aby można było wykonac funkcję pobierania danych do pól Edit.

Pozdrawiam

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: czwartek, 2 czerwca 2011, 08:40
przez Cyfrowy Baron
Z DBGrid tego zrobić się nie da, gdyż to kontrolka bazodanowa i nie działa tak jak StringGrid. Powinieneś posłużyć się zamiast TEdit komponentem TDBEdit, czyli również bazodanowym i tak połączyć bazę danych by wybranie wiersza zmieniało zawartość DBEdit. Pozostaje jednak pytanie, które dane z wiersza tabeli chcesz pobrać.

TDBGrid nie obsługuje zdarzenia OnClick, obsługuje zdarzenia OnDBClick - podwójne kliknięcie, oraz OnCellClick - kliknięcie w wybraną komórkę.

Problem ze zwróceniem do pola Edit zawartości całego wiersza polega na tym, że w różnych kolumnach ta zawartość może być różna, czyli nie zawsze musi to być zawartość typu String, czy char, mogą to być również liczby jak też wartości typu bool. Dlatego obiekt nie posiada żadnej metody do zwracania zawartości wierszy.

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: czwartek, 2 czerwca 2011, 10:39
przez Corvis
Oj chyba się jednak da (albo ja nie rozumiem). W inspektorze zrób:

DbGrid - > Options - > dgIndicator - > false;

A co do problemu. Nie pobiera danych bo źle to robisz wszystko. Użyj ClientDataSeta i zdarzenia AfterScroll i tam zaktualizuj dane.

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: czwartek, 2 czerwca 2011, 10:59
przez Cyfrowy Baron
Podaj kod na przepisanie wiersza z DBGrid do Edit po kliknięciu na wybrany wiersz w tej tabeli.

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: czwartek, 2 czerwca 2011, 16:39
przez kondzio7
Corvis napisał(a):Oj chyba się jednak da (albo ja nie rozumiem). W inspektorze zrób:

DbGrid - > Options - > dgIndicator - > false;




Dokładnie tego potrzebowałem. Dziękuje za pomoc. Podpowiedź z AfterScroll również cenna :)

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: czwartek, 2 czerwca 2011, 22:44
przez Corvis
Podaj kod na przepisanie wiersza z DBGrid do Edit po kliknięciu na wybrany wiersz w tej tabeli.


Baronie musisz mieć odpowiednio zestawione komponenty np.

SqlDataSet - > DataSetProvider - > ClientDataSet - > DataSource - > DBGrid

Wystarczy w AfterScroll ClientDataSeta napisać

KOD cpp:   •  UKRYJ  •
Edit1->Text = ClientDataSet->FIeldByName("nazwaPola")->AsString;


swoją drogą: DBGrid tylko wypisuje dane. Dane fizycznie sa w ClientDataSecie i z niego trzeba je pobierać

Re: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postNapisane: piÄ…tek, 3 czerwca 2011, 08:53
przez Cyfrowy Baron
Corvis napisał(a):Baronie musisz mieć odpowiednio zestawione komponenty np.
[...]
swoją drogą: DBGrid tylko wypisuje dane. Dane fizycznie sa w ClientDataSecie i z niego trzeba je pobierać


Dlatego napisałem:

Cyfrowy Baron napisał(a):Powinieneś posłużyć się zamiast TEdit komponentem TDBEdit, czyli również bazodanowym i tak połączyć bazę danych by wybranie wiersza zmieniało zawartość DBEdit.


Sugerowałem komponent TDBEdit, gdyż sądziłem, że należy go jakoś podłączyć pod bazę danych. Podany przez Ciebie sposób polega właśnie na odpowiednim zestawieniu komponentów.
Pisząc o tym, że nie da się tego zrobić tak jak w przypadku StringGrid, chodziło mi ot to, że nie można pobrać tych danych jawnie poprzez wyciągnięcie wartości z konkretnej komórki. Nie znam się na bazach danych, ale wiem, że nie da się niczego wyciągnąć z DBGrid.