DBNavigator, Button i bazy danych

0

Witam Wszystkich!
Mam nastepujacy problem: do sterowania baza uzylem Button-ow zamiast DBNavigatora. Mam zrobione takie przyciski jak: nastepny, poprzedni, ostatni i pierwszy. Teraz chce po dojsciu do ostatniego rekordu bazy wylaczac automatycznie przycisk ostatni i nastepny, bo jest juz koniec rekordow. Podobnie chce zrobic przy pierwszym rekordzie, tzn. aby byly wylaczone przyciski pierwszy i poprzedni. Jesli ktos ma pomysl to prosze o podpowiedz:). Chce takze zrobic, aby po kliknieciu i przytrzymaniu przycisku np. nastepny, rekordy same przeskakiwaly do momentu zwolnienia przycsku. Teraz mam zrobione, ze ile razy klikne na nastepny, to tyle mi rekordow przeleci (np. klikne 5 razy, przeskakuje o 5 rekordow, a chce miec ze przytrzymam przycisk np. 10 sekund i przeleci mi o 20 rekordow). Prosze o jakies podpowiedzi lub gotowe procedurki! Pozdrawiam i z gory dziekuje!!!

0
Zrób sobie np. zliczanie zapisanych rekordów do Labela w Timerze:

Label1.Caption:=IntToStr(Table1.RecordCount); //pokazuje liczbę rekordów w bazie

Potem przedstaw w drugim labelu numer rekordu, w którym się znajdujesz:

Label2.Caption:=IntToStr(Table1.RecNo);//obecny rekord zaznaczony

A potem w Timerze napisz warunek: if liczba label1 = numer label2 then begin
button_next.enabled:=false;
button_last.enabled:=false;

Czyli jeśli liczba rekordów jest równa z numerem obecnego rekordu to deaktywuj wybrane przyciski.

I tak samo zrób z pierwszym rekordem :) 
0

Super [!!!] Dzieki za wyjasnienie, tym bardziej ze licznik rekordow mam juz zrobiony, wiec bedzie mi juz latwiej. Mam jeszcze takie pytanko, jaka komenda deaktywuje sie przyciski - 'destroy'? Prosze jeszcze o podpowiedzi na druga czesc mojego wczesniejszego posta.

0

Odp. 1:

  1. Wrzuć na formę komponent TActionList i kliknij go 2x.
  2. W rozwijanym menu (obok 1-go przycisku) wybierz New Standard Action.
  3. Zaznacz na liście TDataSetFirst, TDataSetNext, TDataSetLast, TDataSetPrior i naciśnij OK.
  4. Zaznacz Dataset (w kolumnie Categories).
  5. Zaznacz (w kolumnie Actions) wszystkie dodane akcje i w Inspektorze Objektów ustaw im żądany DataSource (domyślnie DataSource1).
  6. Teraz wrzuć na formę 4 przyciski i do każdego z nich przypisz kolejną akcję.
  7. I gotowe.
    Deaktywacją i aktywacją przycisków już nie musisz się martwić!

Odp. 2:
Możesz wykorzystać OnMouseDown i OnMouseUp przycisków.

Przycisk Next:
Wrzuć na formę 2 timery.
1-szemu ustaw Interval na np. 500, a drugiemu - 250.

W Timer1.OnTimer napisz:

  Timer2.Enabled := True;
  Timer1.Enabled := False;

W Timer2.OnTimer:
Table1.Next;

W OnMouseDown przycisku Next wpisz:

Timer1.Enabled := True;

,a w OnMouseUp:

  Timer1.Enabled := False;
  Timer2.Enabled := False;

Opis:
Jak użytkownik naciśnie przycisk Next włącza się Timer1.
Jeśli użytkownik zwolni klawisz myszy, Timer1 (i Timer2) zostanie wyłączony.
Jeśli natomiast przytrzyma wciśnięty klawisz myszy, to po upływie 0.5 sekundy włączy się Timer2.
Wówczas co 0.25 sekundy następuje przejście do następnego rekordu (w Timer2.OnTimer).

0

Bardzo dziekuje 'jack' [!!!] Wyjasniles mi wszystko bardzo dokladnie i szczegolowo, a co najwazniejsze wszystko dziala :) [!!!] [!!!] [!!!] Jeszcze raz wielkie dzieki :)

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