bookmark przesuwa grida

0
procedure TForm1.XDBGrid1CellClick(Column: TXColumn);
var i:Integer;
SavePlace: TBookmark;
begin
 SavePlace:=ADODataSet1.GetBookmark;


    ADODataSet1.First;
   for i:=0 to ADODataSet1.RecordCount-1 do
 if XDBGrid1.Columns[0].IsCheckBoxValue(true) then
    begin
    //zliczanie jeśli zaznaczony
    ADODataSet1.Next;
    end;

    ADODataSet1.GotoBookmark(SavePlace);
   
    ADODataSet1.EnableControls;
end;

Mam taki kod. Po każdym kliku na jakimś wierszu pętla przelatuje przez całego DataSeta, a potem chcę żeby aktywny stał się ten wiersz, który ostatnio kliknąłem. I to robi, tylko, że przesuwa zaznaczony wiersz na środek grida. A to trochę denerwujące, jak mi samo ucieka spod kursora.
Ma ktoś pomysł, jak ustawiać wiersz, przez przesuwania grida ?

0

BeginUpdate/EndUpdate

0
TBSO napisał(a)

BeginUpdate/EndUpdate

W XDBGrid jest BeginOrderUpdate/EndOrderUpdate. To chyba to samo, ale to nie pomaga.
Nadal ustawia na środku.

0

O popatrz TBSO ktoś zastosował bookmark'a do tego co mówiłem że się stosuje a Ty ... ;]

A tak BTW ciekawe od której wersji BeginUpdate i EndUpdate są zaimplementowane w DBGridach - ale to pewnie wiedzą tylko Ci mądrzejsi od których czerpiesz wiedzę : ) Ale nic nie mówie bo będzie że biję piane ...

Pele2: spróbuj DisableControls i EnableControls. Ale coś mi się zdaje że nie pomoże. Jak masz źródełka to możesz podebugować i zobaczyć dlaczego tak się dzieje. Dla zwykłych gridów jest coś takiego jak TopIndex, ale nie pamiętam jak to się daje wykorzystać w DBGridach.

0
b0bik napisał(a)

O popatrz TBSO ktoś zastosował bookmark'a do tego co mówiłem że się stosuje a Ty ... ;]

Jakbyś nie zauważył - on nie ma problemu z przesuwaniem się zakładki, tylko z pozycjonowaniem rekordu po odświeżeniu - nie jest wyświetlany tam gdzie był tylko środkowany.

A tak BTW ciekawe od której wersji BeginUpdate i EndUpdate są zaimplementowane w DBGridach - ale to pewnie wiedzą tylko Ci mądrzejsi od których czerpiesz wiedzę : ) Ale nic nie mówie bo będzie że biję piane ...

Faktycznie, mój błąd. Od wersji cxGrid produkcji DevExpress. Używam tego i descendantów własnej produkcji od miliona lat i miałem akurat otwarty projekt z tym na wierzchu, ze łba mi już dawno wyleciało, że nazwy metod się różnią. NAZWY, ale zasada działania - nie, nieprawdaż, Panie Wielkie Ego?

A teraz przeczytaj powyższe zdanie kilka razy i popatrz - można przyznać się do błędu, to naprawdę nie boli. Może tobie też się kiedyś ta sztuczka uda :D

0
TBSO napisał(a)

Jakbyś nie zauważył - on nie ma problemu z przesuwaniem się zakładki, tylko z pozycjonowaniem rekordu po odświeżeniu - nie jest wyświetlany tam gdzie był tylko środkowany.

Panie TBSO, czy z mojego zdania wynika że czegoś nie zauważyłem - nie sądzę. Ja tylko przy okazji tego wątku pragnąłem zwrócić Twą uwagę iż jak Ci odpowiadałem na pytanie po co są Bookmarki:

http://4programmers.net/Forum/viewtopic.php?id=130872

to szedłeś w zaparte, żeby Ci nie opowiadać bredni, to Ty i Twoi mądrzejsi ludzie więdzą takie rzeczy. A tu popatrz ktoś zastosował tą opcję tak jak o tym napisałem (ale widać on nie zna tych "Mądrzejszych").

TBSO napisał(a)

Faktycznie, mój błąd. Od wersji cxGrid produkcji DevExpress. Używam tego i descendantów własnej produkcji od miliona lat i miałem akurat otwarty projekt z tym na wierzchu, ze łba mi już dawno wyleciało, że nazwy metod się różnią. NAZWY, ale zasada działania - nie, nieprawdaż, Panie Wielkie Ego?

A z kolei jakbyś Ty nie zauważył, dodałem uśmieszek do komentarza - nie nie, po to żeby z Ciebie zadrwić, nie ma w zwyczaju wyśmiewać innych osób - dlatego że doskonale wiedziałem że się pomyliłeś. Też używam DevEx'ów - ale nie tak długo jak Ty. Chciałem ocieplić stosunki, przysypać trochę topór ... To już nie jestem Miszcz tylko Wielkie Ego ?

TBSO napisał(a)

A teraz przeczytaj powyższe zdanie kilka razy i popatrz - można przyznać się do błędu, to naprawdę nie boli. Może tobie też się kiedyś ta sztuczka uda :D

Co jak co, ale IMHO nie miałem nigdy z tym problemów. Zresztą w naszej ostatniej dyskusji gdybym popełnił jakiś błąd to bym się raczej tego nie wypierał. Do tej pory jestem w stanie obronić wszystkich wysuniętych tez - nie robię tego jednak z jednego zasadniczego powodu. Po prostu dyskusje z ludźmi jak Ty nie mają dla mnie zbyt wielkiego sensu. Jeśli komuś przedstawia się realia, a ktoś w odpowiedzi pisze o urażonej dumie, używając przy tym określeń w stylu Panie Wielkie Ego czy Miszcz - to taka osoba nie jest dla mnie partnerem do dalszych rozważań. Zresztą wydaje mi się że z tych samych powodów w tamtej dyskusji nie wzięło udział zbyt wielu forumowiczów.

Pozdrawiam

0

Ale problem wziął się nie z tego, PO CO są bookmarki, tylko z twojego twierdzenia że są WYŁĄCZNIE po to.
Co do uśmiechu - być może opacznie go zrozumiałem, jestem przyzwyczajony do konwencji GG. Zresztą jak nadmieniłem w którymś tam poście - kursuję między pracą, domem a szpitalem, może mi podzielność uwagi się kończy. Jeśli miałeś szczere intencje - przepraszam.

0

Zasadniczo dla mnie nie ma problemu. Nigdy nie powiedziałem że bookmarki są wyłącznie do tego czy do tamtego. Zresztą jak przejrzysz ogólnie pojęte "zasoby" (help, www) to 90% będzie właśnie wykorzystywało je do zapamiętania pozycji w aspekcie o którym pisałem - czyli po przeniesieniu kursora w inne miejsce. Ale to nieważne, nie ma sensu spierać się o takie rzeczy jak stwierdzenie do czego są bookmarki - każdy je wykorzystuje jak chce. Nie chce mi się już o tym gadać ...

P.S. jeśli wizyty w szpitalu, to coś innego niż praca to życzę osobom tam przebywającym powrotu do zdrowia !

Pozdrawiam

0

Dzięki za życzenia, ale już po wszystkim.

0
Pele2 napisał(a)

procedure TForm1.XDBGrid1CellClick(Column: TXColumn);
var i:Integer;
SavePlace: TBookmark;
begin
SavePlace:=ADODataSet1.GetBookmark;

ADODataSet1.First;

for i:=0 to ADODataSet1.RecordCount-1 do
if XDBGrid1.Columns[0].IsCheckBoxValue(true) then
begin
//zliczanie jeśli zaznaczony
ADODataSet1.Next;
end;

ADODataSet1.GotoBookmark(SavePlace);

ADODataSet1.EnableControls;

end;

> 
> 
> 
> Mam taki kod. Po każdym kliku na jakimś wierszu pętla przelatuje przez całego DataSeta, a potem chcę żeby aktywny stał się ten wiersz, który ostatnio kliknąłem. I to robi, tylko, że przesuwa zaznaczony wiersz na środek grida.  A to trochę denerwujące, jak mi samo ucieka spod kursora.
> Ma ktoś pomysł, jak ustawiać wiersz, przez przesuwania grida ?


Skoro używasz XDBGrida, to zamiast DataSet1.DisableControls/EnableControls powinieneś użyć XDBGrid1.DisablePosition/EnablePosition, wtedy pozycja rekordu w XDBGridzie zostanie zachowana.
0
Pele2 napisał(a)
TBSO napisał(a)

BeginUpdate/EndUpdate

W XDBGrid jest BeginOrderUpdate/EndOrderUpdate. To chyba to samo, ale to nie pomaga.
Nadal ustawia na środku.

To nie jest to samo i nie do tego służy !!!

BeginUpdate/EndUpdate służy do blokowania wyświetlania zmian na ekrane, gdy dodajemy / usuwamy / zmieniamy kilka kolumn na raz.

BeginOrderUpdate/EndOrderUpdate służy do blokowania zmiany sortowania w DataSet, gdy ustawiamy porządek sortowania kilku kolumn na raz - wtedy zmiana sortowania w DataSet wykona się dopiero po EndOrderUpdate, a nie po każdej pojedynczej kolumnie.

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