Wskazywanie rekordu na DBGridzie

Odpowiedz Nowy wątek
2015-04-16 09:50

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

Delphi 5, lokalna baza Paradox
Mam połączone ze sobą:

nazwa_wyjscia: TTable
wyjscia: DBGrid

procedura:

nazwa_wyjscia.First ;

przestawia wskaźnik rekordu w DBGridzie na pierwszą pozycję,
ale tylko wtedy gdy program uruchomiony jest w środowisku Delphi.
Gdy uruchamiam program z exe-ka wskaźnik rekordu na
DBGridzie nie zmienia swojego położenia.
Kasowałem exe-ka i budowałem go od nowa, efekt ( jego brak) ten sam.
Nie bardzo wiem jak to ugryźć.

Pozostało 580 znaków

2015-04-16 15:35

Rejestracja: 7 lat temu

Ostatnio: 4 minuty temu

0

błąd/przyczyna musi być gdzie indziej


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2015-04-16 16:13

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

Nie wiedziałem gdzie szukać przyczyny, teraz już wiem: GDZIE INDZIEJ.
Z braku innych propozycji zacznę właśnie TAM ;-(

Pozostało 580 znaków

2015-04-16 19:19

Rejestracja: 7 lat temu

Ostatnio: 4 minuty temu

1

możesz też poszukać w SWOIM kodzie SAM bo oczywiście kod jest tajny i nikt go zobaczyć nie może... Czego się spodziewałeś, że ze szklanej kuli ktoś coś wywróży??


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2015-04-16 20:04

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

OK.
Tajemnic nie ma.
Załączam kod.
Być może są w nim rzeczy, których ja nie widzę.

procedure TWyjscia.Lista_mieszCellClick(Column: TColumn);
Var
 znaleziony: Boolean ;
 label dalej ;

 begin
 znaleziony := False ;
 nazwa_wyjscia.First ;    // i to wszystko odnoście TTable nazwa_wyjscia

      While not tab_uczni.Eof do
        Begin
           if ((lista_uczniow.FieldByName('Nazwisko').AsString  = tab_uczni.FieldByName('Nazwisko').AsString) and (lista_uczniow.FieldByName('Imie').AsString = tab_uczni.FieldByName('Imie').AsString)) then
                Begin
                  znaleziony := true;
                  goto dalej ;
                end;
           tab_uczni.Next ;
        end;

dalej:

E_nazwisko.Text := '' ;
E_imie.Text := '' ;
E_pokoj.Text := '' ;
E_dokad.Text := '';
E_godz.Text := '' ;
 wybor_lewy.Checked := true ;

     E_nazwisko.Text := lista_uczniow.FieldByName('Nazwisko').AsString ;
     E_imie.Text := lista_uczniow.FieldByName('Imie').AsString ;
     E_pokoj.Text := lista_uczniow.FieldByName('Pokoj').AsString ;
     Lab_osoba.Caption := 'Uczeń wychodzący.' ;

end;

Pozostało 580 znaków

2015-04-17 08:25

Rejestracja: 7 lat temu

Ostatnio: 4 minuty temu

0

a gdzie po tej operacji jest zaznaczenie na dbgridzie?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2015-04-17 18:00

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

Nawet nie próbowałem dobierać się do DBGrida.
Skoro jest on połączony z TTable to przesuwanie wskaźnika rekordu
w TTable (w innych sytuacjach) skutkuje przesuwaniem tego wskaźnika na DBGridzie.
W tym jednym przypadku nie zadziałało - stąd moje pytanie.
I nie proszę o gotowca, ale sugestię w jakim kierunku muszę grzebać, by osiągnąć założony efekt.
Z góry dziękuję.

Pozostało 580 znaków

2015-04-17 21:37

Rejestracja: 16 lat temu

Ostatnio: 15 godzin temu

0

Co to za DBGrid? Tak dokładnie się zachowuje X-DBGrid w wersji trial, o ile dobrze pamiętam ;-)

Pozostało 580 znaków

2015-04-17 21:43

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

DBGrid jest komponentem wyświetlającym w formie arkusza zawartość tabeli przechowującej dane.
Myślę, że X-DBGrid spełnia identyczną rolę.

edytowany 2x, ostatnio: Świetny pomidor, 2015-04-17 21:46

Pozostało 580 znaków

2015-04-18 09:46

Rejestracja: 5 lat temu

Ostatnio: 4 lata temu

0

Ufff ...
Zrobiłem to tak:

 data_wyjscie.DataSet.Close  ;
 data_wyjscie.DataSet.Open ;

i wskaźnik na

wyjscia: DBGrid

ustawia się na pozycji pierwszej.

A jeszcze lepiej:

 data_wyjscie.DataSet.First ;
edytowany 1x, ostatnio: Świetny pomidor, 2015-04-18 12:14

Pozostało 580 znaków

2015-04-18 16:00
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 2 minuty temu

Lokalizacja: Tuchów

0

@Świetny pomidor - formatuj swój kod i stosuj się do jakiejś sensownej zasady nazewnictwa, bo Twój kod wygląda bardzo źle... I jeszcze te GoTo, jakby nie można było normalnie użyć Break... A jeszcze lepiej było by przenieść kod do warunku pętli, a po nim wywołać Exit:

procedure TWyjscia.Lista_mieszCellClick(Column: TColumn);
begin
  nazwa_wyjscia.First;

  while not tab_uczni.EoF do
  begin
    if ((lista_uczniow.FieldByName('Nazwisko').AsString  = tab_uczni.FieldByName('Nazwisko').AsString) and 
        (lista_uczniow.FieldByName('Imie').AsString = tab_uczni.FieldByName('Imie').AsString)) then
    begin
      E_nazwisko.Text := '';
      E_imie.Text := '';
      E_pokoj.Text := '';
      E_dokad.Text := '';
      E_godz.Text := '';

      wybor_lewy.Checked := True;

      E_nazwisko.Text := lista_uczniow.FieldByName('Nazwisko').AsString;
      E_imie.Text := lista_uczniow.FieldByName('Imie').AsString;
      E_pokoj.Text := lista_uczniow.FieldByName('Pokoj').AsString;
      Lab_osoba.Caption := 'Uczeń wychodzący.';

      Exit;
    end;

    tab_uczni.Next ;
  end;
end;

Dodaj do tego swoje zmiany i powinno być dobrze.


edytowany 1x, ostatnio: furious programming, 2015-04-18 16:01

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0