Ich habe eine Liste mit Buchseite:
Code:
Page0
Page1
Page2
Page3
Page4
PageN
Diese sollen jetzt als Doppelseiten dargestellt werden. Problem ist, dass die erste Seite (Page0) keine linke Seite hat, wie das nun mal bei einem Buch so ist. In einer Listbox steht es entsprechend drinne:
Code:
Seite 1
Seiten 2 - 3
Seiten 4 - 5
Seiten 6 - 7
Das heißt, klicke ich auf den ersten Eintrag, soll nur die rechte Seite dargestellt werden. Der Methode übergebe ich immer den Index der linken Seiten. Die rechte Seite ist dann immer IndexLinkeSeite + 1.
Bisher versuche ich es so:
Delphi-Quellcode:
procedure TFotoBook.DisplayDoublePage(PageIndex: Integer);
begin
if (PageIndex <> 0) and (PageIndex <> -1) then // Seite ist nicht erste Seite, also anzeigen
begin
if Assigned(LeftPage) then
LeftPage.Visible := False;
LeftPage := FPageCollection.Items[PageIndex];
LeftPage.Left := PageParent.Width div 2 - LeftPage.Width - PAGEGAP div 2;
LeftPage.Top := PageParent.Height div 2 - LeftPage.Height div 2;
LeftPage.Visible := True;
end;
if Assigned(RightPage) then
RightPage.Visible := False;
if PageIndex = -1 then
PageIndex := 0
else
PageIndex := PageIndex + 1;
RightPage := FPageCollection.Items[PageIndex];
RightPage.Left := PageParent.Width div 2 + PAGEGAP div 2;
RightPage.Top := PageParent.Height div 2 - RightPage.Height div 2;
RightPage.Visible := True;
end;
Dies hat aber zur Folge, dass es nicht richtig funktioniert. Wenn ich folgende Liste habe:
Und ich wähle den zweiten Eintrag aus, zeigt er mir nur eine Seite an. Erst wenn ich zum zweitenmal auf den Eintrag klicke, zeigt er mir beide an. Wo ist da mein Denkfehler? Irgendwie hab eich auch das Gefühl, als wenn ich zu kompliziert denke.