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
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>
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ę ;]
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 ;)