Nie pozwolić na scroll w Datasecie

Oglądasz wersję archiwalną wątku "Nie pozwolić na scroll w Datasecie" z forum pl.comp.lang.delphi



Juhas - 3 Mar, 06:14
Witam. Męczę się z taką jedną rzeczą.
Mam kilka rekordów w gridzie i teraz zanim zmienię aktualny(scroll), to
muszę zadać użytkownikowi pytanie. Użytkownik może odpowiedzieć TAK,
NIE, ANULUJ.

Jeśli odpowie ANULUJ, to MUSZĘ pozostać na aktualnym rekordzie, czyli
nie pozwolić na scroll.

W tym momencie robię to tak, że w zdarzeniu OnBeforeScroll wywołuję
cichy wyjątek(Abort). Ale czy da się to zrobić lepiej?

PS. Problem z TServerSocket i TClientSocket jest nadal aktualny, tak
więc, jeśli ktoś coś jednak wie... ;)




neuron - 3 Mar, 06:56

Witam. Męczę się z taką jedną rzeczą.
Mam kilka rekordów w gridzie i teraz zanim zmienię aktualny(scroll), to
muszę zadać użytkownikowi pytanie. Użytkownik może odpowiedzieć TAK,
NIE, ANULUJ.

Jeśli odpowie ANULUJ, to MUSZĘ pozostać na aktualnym rekordzie, czyli
nie pozwolić na scroll.

W tym momencie robię to tak, że w zdarzeniu OnBeforeScroll wywołuję
cichy wyjątek(Abort). Ale czy da się to zrobić lepiej?



Nie wiemy co chcesz zrobic ale moze nie technicznie a politycznie - mam w
jednym programie taka sytuacje gdzie nie moge zmienic pozycji w gridzie
przed zkonczeniem pewnych operacji wiec poprostu robie
xdbgrid.enable:=false. Jak usuer zakonczy edycje to ja zatwierdza i
jednoczesnie odblokowuje grida.
Czasmi zamiast obiezdzac za niski wiadukt starczy spuscic powietrze z kol ;

wojtek



Krzysztof Szyszka - 3 Mar, 08:03

Witam. Męczę się z taką jedną rzeczą.
Mam kilka rekordów w gridzie i teraz zanim zmienię aktualny(scroll), to
muszę zadać użytkownikowi pytanie. Użytkownik może odpowiedzieć TAK,
NIE, ANULUJ.

Jeśli odpowie ANULUJ, to MUSZĘ pozostać na aktualnym rekordzie, czyli
nie pozwolić na scroll.

W tym momencie robię to tak, że w zdarzeniu OnBeforeScroll wywołuję
cichy wyjątek(Abort). Ale czy da się to zrobić lepiej?



Użycie wyjątku jest właściwym rozwiązaniem, tylko nie wiem, czemu akurat
w OnBeforeScroll ? Zwykle takie pytanie są związane z edycją danych,
a więc raczej w OnBeforePost ewentualnie w TField.OnValidate. Zależy,
czego dotyczy to pytanie.



Juhas - 3 Mar, 09:26
| Witam. Męczę się z taką jedną rzeczą.
| Mam kilka rekordów w gridzie i teraz zanim zmienię aktualny(scroll), to
| muszę zadać użytkownikowi pytanie. Użytkownik może odpowiedzieć TAK,
| NIE, ANULUJ.

| Jeśli odpowie ANULUJ, to MUSZĘ pozostać na aktualnym rekordzie, czyli
| nie pozwolić na scroll.

| W tym momencie robię to tak, że w zdarzeniu OnBeforeScroll wywołuję
| cichy wyjątek(Abort). Ale czy da się to zrobić lepiej?

Użycie wyjątku jest właściwym rozwiązaniem, tylko nie wiem, czemu akurat
w OnBeforeScroll ? Zwykle takie pytanie są związane z edycją danych,
a więc raczej w OnBeforePost ewentualnie w TField.OnValidate. Zależy,
czego dotyczy to pytanie.

Właśnie kwestia jest taka, że nie edytuje komponentów bazodanowych,
tylko własny kalendarz. Dlatego Post nie jest nigdy wywoływane.




neuron - 3 Mar, 11:16

Właśnie kwestia jest taka, że nie edytuje komponentów bazodanowych,
tylko własny kalendarz. Dlatego Post nie jest nigdy wywoływane.



czyli robisz to co ja. Z ustawionego rekordu wpisujesz gdzies dane, user
zaczyna nimi manipulowac a jak juz zmanipuluje to odsylasz do bazy.
Wiec po kiego grzyba manipulowac zdarzeniami od gridu czy datasetu -
poprostu zablokuj grid jak user zacznie mietolic w danych a odblokuj jak
user zmiany potwierdzi/porzuci.
dodatkowa korzyscia jest to ze grid zmienia wyglad w czasie edycji kalendara
co dla usera jest czytelnym sygnalem ze trwa edyca danych.

Poza tym patrzac na problem zdrowia psychicznego usera - lepiej gdy nie moze
on czegos zrobic bo nie moze niz by mial program na niego ciagle (pierwsze
dni pracy z programem)  krzyczec ;)

wojtek



Krzysztof Szyszka - 3 Mar, 11:25


| cichy wyjątek(Abort). Ale czy da się to zrobić lepiej?

| Użycie wyjątku jest właściwym rozwiązaniem, tylko nie wiem, czemu akurat
| w OnBeforeScroll ? Zwykle takie pytanie są związane z edycją danych,
| a więc raczej w OnBeforePost ewentualnie w TField.OnValidate. Zależy,
| czego dotyczy to pytanie.

Właśnie kwestia jest taka, że nie edytuje komponentów bazodanowych,
tylko własny kalendarz. Dlatego Post nie jest nigdy wywoływane.



Zdaje Ci się ;-)
To, że Ty jawnie nie używasz, to nie znaczy, że nie jest wywoływane ;-)



Juhas - 3 Mar, 11:29

| Właśnie kwestia jest taka, że nie edytuje komponentów bazodanowych,
| tylko własny kalendarz. Dlatego Post nie jest nigdy wywoływane.

czyli robisz to co ja. Z ustawionego rekordu wpisujesz gdzies dane, user
zaczyna nimi manipulowac a jak juz zmanipuluje to odsylasz do bazy.
Wiec po kiego grzyba manipulowac zdarzeniami od gridu czy datasetu -
poprostu zablokuj grid jak user zacznie mietolic w danych a odblokuj jak
user zmiany potwierdzi/porzuci.
dodatkowa korzyscia jest to ze grid zmienia wyglad w czasie edycji kalendara
co dla usera jest czytelnym sygnalem ze trwa edyca danych.

Poza tym patrzac na problem zdrowia psychicznego usera - lepiej gdy nie moze
on czegos zrobic bo nie moze niz by mial program na niego ciagle (pierwsze
dni pracy z programem)  krzyczec ;)



No w sumie też jest to prawda. No, zależy, jak zadecyduje zleceniodawca
:)


Jak działa Karta Kredytowa?
Chcesz dorobić do pensji ? Proszę bardzo !
C Builder 4 vs Visual C++ 6.0
  • wokalistka sandra zdjecia
  • jak podzielic film
  • biura projektowe architektoniczne
  • era wymiana telefonu
  • lois murphy
  • druk przelewu pocztowego za opB3acenie wydania
  • zespol muzyczny kutno
  • 8720 takamizawa
  • 27przeciEAtne wynagrodzenie2222
  • Baza tematów z grup dyskusyjnych ## Start