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

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

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

Nowy postprzez kondzio7 » środa, 1 czerwca 2011, 23:20

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
Avatar użytkownika
kondzio7
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): środa, 1 czerwca 2011, 23:02
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Opera

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

Nowy postprzez Cyfrowy Baron » czwartek, 2 czerwca 2011, 08:40

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.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
kondzio7
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
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: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postprzez Corvis » czwartek, 2 czerwca 2011, 10:39

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.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House

Za ten post autor Corvis otrzymał podziękowanie od:
kondzio7
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 VistaChrome

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

Nowy postprzez Cyfrowy Baron » czwartek, 2 czerwca 2011, 10:59

Podaj kod na przepisanie wiersza z DBGrid do Edit po kliknięciu na wybrany wiersz w tej tabeli.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
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: DBGrid - usunięcie belki ze wskaźnikiem lub akcja OnClick

Nowy postprzez kondzio7 » czwartek, 2 czerwca 2011, 16:39

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 :)
Avatar użytkownika
kondzio7
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): środa, 1 czerwca 2011, 23:02
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Opera

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

Nowy postprzez Corvis » czwartek, 2 czerwca 2011, 22:44

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ć
"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 VistaChrome

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

Nowy postprzez Cyfrowy Baron » piątek, 3 czerwca 2011, 08:53

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.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
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


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

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

cron