Historia przy 'wstecz' - notebook

0

Witam wszystkich.
Mam drobny problem z komponentem notebook. Chciałbym zrobić konfigurator przy użyciu komponentu notebook do mojego programu na wzór instalatora.
Problem jest z przechodzeniem 'wstecz'. Np: ze strony 1 poprzez dalej przechodzimy na 2, a tam dokonując wyboru na 5. Ze strony 5 wchodzimy na 20. Problem jest teraz, jak wrócić po tych stronach, na których byłem? Po kliknięciu wstecz chce być na stronie 5, a potem na 2 i na końcu 1 Nie chcę ze strony 5 wracać na 4, czy z 20 na 19.
pozdrawiam

0

TNotebooka nigdy nie używałem, tobie też radzę to samo, bo to komponent zachowany dla zgodności z Windows 3.1 Ale nie o to pytałeś, więc sobie dam siana :] Historię najłatwiej będzie ci zrealizować jako tablicę po prostu przechowującą kolejne wybory. Coś takiego:

// maks. 100 zakładek możesz odwiedzić, chyba wystarczy...
History: array[1..100] of integer;
HistoryMax, HistoryPos : integer;

// cofanie się o jedną stronę wstecz
function HistoryBack:integer;
begin
   if HistoryPos=0 then raise Exception.Create('Pusta historia!');
   if HistoryPos>1 then HistoryPos:=HistoryPos-1;
   HistoryBack:=History[HistoryPos];
end;

// poruszanie się w historii do przodu
function HistoryForward:integer;
begin
   if HistoryPos<HistoryMax then HistoryPos:=HistoryPos+1;
   HistoryForward:=History[HistoryPos];
end;

// odwiedzenie nowej zakładki
procedure HistoryNavigate(tab:integer);
begin
   if HistoryPos=100 then raise Exception.Create('Pełna historia!');
   HistoryPos:=HistoryPos+1;
   HistoryMax:=HistoryPos;
   History[HistoryPos]:=tab;
end;

// czy otworzona najświeższa strona w historii
function HistoryAtLast:boolean;
begin
   HistoryAtLast := HistoryPos=HistoryMax;
end;

// czy otworzona jest najstarsza w historii
function HistoryAtFirst:boolean;
begin
   HistoryAtFirst := HistoryPos=1;
end;

Żeby się poruszać po historii, musisz chociaż raz na początku wywołać funkcję HistoryNavigate.
Aha, jeśli spodziewałeś się automatycznej historii zapamiętywanej przez TNoteBooka, to czegoś takiego nie ma, musisz to zrobić samodzielnie. Może trochę bardziej elegancko, niż ja, ale podobnie.</delphi>

0

Skoro ten komponent jest 'be' to jakiego użyć? ;) Akurat ten wydaje się odpowiedni do tych celów, ale jak są lepsze to chętnie je zobaczę ;]

0

No nie traktuj tego poważnie, jak Ci z nim wygodnie, to nie komplikuj sobie życia przez jakieś moje opinie - przecież jak coś jest w Delphi, to jest dla ludzi ;D Ja jako człowiek zryty totalnie, bawiłbym się w dynamiczne zarządzanie Frame'ami pewnie ;)

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