Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Doppelte Buchseiten aus einer Liste darstellen

  Alt 4. Mai 2007, 13:09
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:
Code:
Seite 1
Seite 2 - 3
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat