Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#13

AW: Das geheimnissvolle Controll

  Alt 14. Nov 2018, 14:31
Seltsam ist an der unterschiedlichen Breite garnichts.

Bis zum 3. Control wird keine Scrollbar benötigt, ab dem 4. aber schon, damit ändern sich automatisch ein paar Werte, die bei der Breitenberechnung berücksichtigt werden.

Einfachste Methode zur Lösung: Scrollbar immer anzeigen, auch wenn sie nicht benötigt wird, dann ändert sich der Wert von Scrollbox1.ClientWidth auch nicht und bei der Berechnung kommt immer der gleiche Wert raus.

Oder eventuell:
Delphi-Quellcode:
procedure TRSPdfFrame.PdfViewCreate;
  var
  i : integer;
  iCount : Integer;
  iLeft : Integer;
  iHeight : Integer;
  iTop : Integer;
  iWidth : Integer;
begin
  if FPdfList.Count = 0 then
  begin
    iCount := 5; // Statt 0 bis 4 - 1 bis 5, damit kann man später besser weiterrechnen.
    iLeft := (ScrollBox1.ClientWidth - iWidth) div 2;
    iHeight := 120;
    iTop := iHeight + 8;
    iWidth := Scrollbox1.ClientWidth - 40;
    for i := 1 to iCount do
    begin
      FPDFView := TPdfView.Create(Self);
      FPdfView.Parent := Scrollbox1;
      FPdfView.Name := Format('PdfView%d',[i]);
      FPdfView.Color := clyellow;
      FPdfView.Height := iHeigth;
      FPdfView.Top := i * iTop;
      FPdfView.Width := iWidth;
      FPdfView.Left := iLeft;
      FPdfList.Add(FPdfView);
     end;
     ScrollBox1.VertScrollBar.Range := iCount * iHeight;
  end
  else
    Showmessage('Die Seiten sind bereits vorhanden');
end;
Und wenn man die hier im Quelltext zugewiesenen "Konstanten" als Parameter in den Aufruf von Create "verschiebt", kann man, ohne die Methode nochmal anfassen zu müssen, die Zahl der FPdfView in der Scrollbox variieren, deren Breite, Höhe und ggfls. deren "Oberkante" (Top) verändern ... Dies könnte man aber auch als Attribute der Klasse TRSPdfFrame realisieren.
  Mit Zitat antworten Zitat