Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verständnisfrage Vorwärtsdeklaration (https://www.delphipraxis.net/194549-verstaendnisfrage-vorwaertsdeklaration.html)

Delbor 6. Dez 2017 12:33

Delphi-Version: XE8

Verständnisfrage Vorwärtsdeklaration
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi zusammen

Folgende Deklaration im PDFiumFrame:
Delphi-Quellcode:
  TPDFiumFrame = class(TFrame)
  private
//  protected
    { Déclarations privées }
    type
      // One point is 1/72 inch (around 0.3528 mm).  
      TPointsSize = record
        cx : Double;
        cy : Double;
      end;
 
      TRectD = record
        Left  : Double;
        Top   : Double;
        Right : Double;
        Bottom : Double;
      end;

      TPDFPage = class;    // Sollte die Vorwärtsdeklaration sein
 
//  TPDFPage = class
//   Index   : Integer;
//    Handle  : HPDFPage;
//   Top     : Double;
//    Rect    : TRect;
//    Text    : HPDFTextPage;
//    NoText  : Boolean;
//    Visible : Integer;
//    SelStart : Integer;
//    SelStop : Integer;
//    Selection: TArray<TRectD>;
//    destructor Destroy; override;
//    function HasText: Boolean;
//    function CharIndex(x, y, distance: Integer): Integer;
//    function CharCount: Integer;
//    function Select(Start: Integer): Boolean;
//    function SelectTo(Stop: Integer): Boolean;
//    function ClearSelection: Boolean;
//    procedure DrawSelection(DC, BMP: HDC; const Blend: TBlendFunction; const Client: TRect);
//  end;

 private
//  protected
    FDocument : HPDFDocument;
    FError   : Integer;
    FPageCount: Integer;
    FPageSize : TArray<TPointsSize>;
...
Die Deklaration der Klasse TPDFPage habe ich in den public-Abschnitt verschoben, um von der Mainform aus darauf zugrreifen zu können. Da jedoch einige Felder des Frames vom Typ dieser Klasse sind, muss iich diese per Vorwärtsdeklaration bekannt machen, bevor die entsprechenden Felder eingeführt werden. Das Problem ist nur: Delphi meint:

Zitat:

[dcc32 Fehler] PDFium.Frame.pas(48): E2086 Typ 'TPDFiumFrame.TPDFPage' ist nicht vollständig definiert
Ich hab schonmal versucht, diese Deklaration in den public-Teil zu verschieben, wasaber zu sehr seltsamen Konstrukten führte - im Anhang zeigt ein Jpeg, wie das ausgesehen hat. Man beachte Zeile 5 und folgende unterhalb der blau markierten Zeile.
Das Embarcadero-Wiki hat mir dann verraten, das ich die Vorwärzsdeklaration mit einem Semikolon hätte abschliessen müssen.
Was nun diesmal der Grund für Delphis Meckerei ist, hab ich schlicht keine Ahnung.

Das Jpeg 'Vorwärtsdeklaration zeigt, wo ich diese anbringen wollte. Wenn ich ein end darunter schreibe, ist der Bezeichner TPDFPage unbekannt, ohne dieses end ist die Deklaration unvollständig...

Was, zum Kuckuck, mache ich falsch? Nach dieser Seite offenbar nichts. Und trotzdem meckert Delphi!

Gruss
Delbor

mischerr 6. Dez 2017 12:53

AW: Verständnisfrage Vorwärtsdeklaration
 
Hallo,

ich glaube mich zu erinnern das die Vorwärtsdeklaration der Klasse im selben Type-Abschnitt wie die endgültige Klassendeklaration stehen muss.
Eine Mischung Public/Private dürfte daher nicht funktionieren.

Delbor 6. Dez 2017 13:19

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi mischerr
Zitat:

Eine Mischung Public/Private dürfte daher nicht funktionieren.
Das ist der Punkt, an dem ich die Emba-OnlineHelp nicht richtig verstanden habe.

Gruss
Delbor

himitsu 6. Dez 2017 13:41

AW: Verständnisfrage Vorwärtsdeklaration
 
Ich habe auch nie probiert, ob Forward-Deklarationen als Sub-Class möglich sind. (innerhalb einer anderen Klasse)

Aber sonst stimmt die bereits genannte Aussage.
Forward-Deklarationen sind nur innerhalb des selben Type-Blocks möglich, also auch nur innerhalb der selben Unit.

Wo ist hier überhaupt TPDFPage eigentlich deklariert?
Ich seh nur den Forward.


Ich kenn sonst nur eine Ausnahme.
Deklaration von Pointer-Typen, da kann die Deklaration des Pointers nach oder auch vor dem eigentlich Typ stehen, aber davor auch nur innerhalb des selben Type-Blocks.

Delbor 6. Dez 2017 14:50

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi Himitsu

Nachfolgend die ersten Deklarationszeilen des Frames:

Delphi-Quellcode:
  TPDFiumFrame = class(TFrame)    
  private
//  protected
    { Déclarations privées }
    type
      // One point is 1/72 inch (around 0.3528 mm).        
     
      TPointsSize = record
        cx : Double;
        cy : Double;
      end;
 
      TRectD = record
        Left  : Double;
        Top   : Double;
        Right : Double;
        Bottom : Double;
      end;
 
  TPDFPage = class
   Index   : Integer;
    Handle  : HPDFPage;
   Top     : Double;
    Rect    : TRect;
    Text    : HPDFTextPage;
    NoText  : Boolean;
    Visible : Integer;
    SelStart : Integer;
    SelStop : Integer;
    Selection: TArray<TRectD>;
    destructor Destroy; override;
    function HasText: Boolean;
    function CharIndex(x, y, distance: Integer): Integer;
    function CharCount: Integer;
    function Select(Start: Integer): Boolean;
    function SelectTo(Stop: Integer): Boolean;
    function ClearSelection: Boolean;
    procedure DrawSelection(DC, BMP: HDC; const Blend: TBlendFunction; const Client: TRect);
  end;

 private
//  protected
    FDocument : HPDFDocument;
    FError   : Integer;
    FPageCount: Integer;
    FPageSize : TArray<TPointsSize>;
    FTotalSize: TPointsSize;
    FPages   : TList;
    FReload  : Boolean;
    FPageIndex: Integer;
...
    FCurPage : TPDFPage;
    FSelPage : TPDFPage;
    FSelStart : Integer;
    FSelBmp  : TBitmap;
    FInvalide : Boolean;
    FReportList: TStringlist;
    FGetPageAt : Integer;
  {$IFDEF TRACK_CURSOR}
    FCharIndex: Integer;
    FCharBox : TRectD;
  {$ENDIF}
    procedure SetDocument(Value: HPDFDocument);
    procedure SetPageCount(Value: Integer);
...
    property _Document: HPDFDocument read FDocument write SetDocument;
    procedure ClearPages;
    function GetPage(PageIndex: Integer): TPDFPage;
    function GetPageAt(const p: TPoint): TPDFPage;
    procedure LoadVisiblePages;                                                                                      //<===
    procedure WMEraseBkGnd(var Msg: TMessage); message WM_ERASEBKGND;
    procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  protected
    procedure PaintWindow(DC: HDC); override;                                                        //<===
    procedure Resize; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
      MousePos: TPoint): Boolean; override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure SetPageIndex(Value : Integer);
  public
    { Déclarations publiques }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
In dem als Navigationsbar dienenden Frame werden immer mehrere Seiten angezeigt - im Normalfall, wenn das Fenster die selbe Grösse wie im Entwurfsmodus hat, etwa drei. Diese Seiten darzustellen, ist LoadVisiblePages zuständig.Diese Prozedur wird von Paintwindow aufgerufen, die die Liste FPages(TList) durchläüft und in diesem Block die Seite rendern lässt:
Delphi-Quellcode:
    if Page.Visible > 0 then
    begin
      FillRect(DC, Page.Rect, WHITE);
      SynpdfMain.Memo1.Lines.Add('Page.Visible > 0 / ' + IntToStr(Index));
      FPDF_RenderPage(DC, Page.Handle, Page.Rect.Left, Page.Rect.Top, Page.Rect.Width, Page.Rect.Height, 0, 0);
      Page.DrawSelection(DC, SelDC, Blend, Client);
    end;
Das heisst nichts anderes, als: ich muss nur den Index der Seite wissen, auf die ich geklickt habe. Und da sehe ich das Problem, zumindest ohne Zugriff auf die Klasse TPDFPage. Übrigens: diese Klasse gibt es so nur im PDFiumFrame - ausserhalb ist auch eine Klasse diesen Namens bekannt, die aber von TPDFDictonary abgeleitet ist...


Gruss
Delbor

DeddyH 6. Dez 2017 15:09

AW: Verständnisfrage Vorwärtsdeklaration
 
Wo findet man denn die Original-Unit? Ich habe so das Gefühl, dass Du etwas zu implementieren versuchst, was Du gar nicht brauchst.

Delbor 6. Dez 2017 15:32

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi DeddyH

Das Original findet sich hier (SynPDF.zip).
Das ding ist zur Anzeige eigentlich voll funktionsfähig - nur, dass eben keine Nvigationsbar vvorhanden ist, wie man das von gängigen PDF-Programmen kennt.

Gruss
Delbor

Delphi.Narium 6. Dez 2017 16:02

AW: Verständnisfrage Vorwärtsdeklaration
 
(ungetestet) eher so:
Delphi-Quellcode:
type
  // One point is 1/72 inch (around 0.3528 mm).
  TPointsSize = record
    cx : Double;
    cy : Double;
  end;

  TRectD = record
    Left : Double;
    Top : Double;
    Right : Double;
    Bottom : Double;
  end;

  TPDFPage = class
    Index : Integer;
    Handle : HPDFPage;
    Top : Double;
    Rect : TRect;
    Text : HPDFTextPage;
    NoText : Boolean;
    Visible : Integer;
    SelStart : Integer;
    SelStop : Integer;
    Selection: TArray<TRectD>;
    destructor Destroy; override;
    function HasText: Boolean;
    function CharIndex(x, y, distance: Integer): Integer;
    function CharCount: Integer;
    function Select(Start: Integer): Boolean;
    function SelectTo(Stop: Integer): Boolean;
    function ClearSelection: Boolean;
    procedure DrawSelection(DC, BMP: HDC; const Blend: TBlendFunction; const Client: TRect);
  end;

  TPDFiumFrame = class(TFrame)
  private
    FDocument : HPDFDocument;
    FError : Integer;
    FPageCount: Integer;
    FPageSize : TArray<TPointsSize>;
    FTotalSize: TPointsSize;
    FPages : TList;
    FReload : Boolean;
    FPageIndex: Integer;
    FCurPage : TPDFPage;
    FSelPage : TPDFPage;
    FSelStart : Integer;
    FSelBmp : TBitmap;
    FInvalide : Boolean;
    FReportList: TStringlist;
    FGetPageAt : Integer;
  {$IFDEF TRACK_CURSOR}
    FCharIndex: Integer;
    FCharBox : TRectD;
  {$ENDIF}
    procedure SetDocument(Value: HPDFDocument);
    procedure SetPageCount(Value: Integer);
...
    property _Document: HPDFDocument read FDocument write SetDocument;
    procedure ClearPages;
    function GetPage(PageIndex: Integer): TPDFPage;
    function GetPageAt(const p: TPoint): TPDFPage;
    procedure LoadVisiblePages; //<===
    procedure WMEraseBkGnd(var Msg: TMessage); message WM_ERASEBKGND;
    procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  protected
    procedure PaintWindow(DC: HDC); override; //<===
    procedure Resize; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
      MousePos: TPoint): Boolean; override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure SetPageIndex(Value : Integer);
  public
    { Déclarations publiques }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
geht nicht:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    type
      tx = class
      private
      f : Integer;
    end;
    fx : tx;
  public
    { Public-Deklarationen }
  end;
muss so sein:
Delphi-Quellcode:
type
  tx = class
  private
  f : Integer;
end;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    fx : tx;
  public
    { Public-Deklarationen }
  end;

hoika 6. Dez 2017 16:03

AW: Verständnisfrage Vorwärtsdeklaration
 
Hallo,
ich mache mal lieber ein einfacheres Bsp.

Delphi-Quellcode:
type
  TClass2 = class; // Forward

  TClass1 = class
    Class2: TClass2;
  end;

  TClass2 = class
    Class1: TClass1;
  end;
Ich kann in TClass1 also schon TClass2 benutzen, obwohl TClass2 nicht vollständig definiert ist.
Und wie es schon bereits gesagt wurde, muss das alles im gleichen type sein.

DeddyH 6. Dez 2017 17:19

AW: Verständnisfrage Vorwärtsdeklaration
 
Delphi-Quellcode:
type
  TFormTest = class(TForm)
  private
    { Private-Deklarationen }
    type
      TDings = class
      private
        FBums: integer;
      public
        procedure Wuppdi;
        property Bums: integer read FBums write FBums;
      end;
  private
    FDings: TDings;
  public
    { Public-Deklarationen }
  end;
Die Klassenvervollständigung ergibt dann folgende Methode:
Delphi-Quellcode:
procedure TFormTest.TDings.Wuppdi;
begin

end;
Der Sinn dahinter ist, dass man die Nested Klasse lediglich innerhalb der Oberklasse benötigt und auch nur dort verwenden soll. Im Übrigen habe ich im verlinkten Archiv nirgends eine Klasse TPDFiumFrame finden können, daher kann ich auch nicht mehr dazu sagen.

Delbor 6. Dez 2017 18:06

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi zusammen

Ich habe die Deklaration nochmal etwas abgeändert, so dass es für mich 'schon eher nachDelphi aussieht':
Delphi-Quellcode:
uses
 ...
const PAGE_MARGIN = 5; // pixels
 
type
  TZoomMode = (zmCustom,zmActualSize, zmPageLevel, zmPageWidth);
   
    TPointsSize = record
 ...
    end;
 
    TRectD = record
...
    end;
 
  TPDFPage = class
   Index   : Integer;
    Handle  : HPDFPage;
 ...
  end;
 
  TPDFiumFrame = class(TFrame)    
  private
    { Déclarations privées }
{Hier waren TPointsSize, TRectD und TPDFPage deklarirt} 
 private
    FDocument : HPDFDocument;
...
  protected
...
  public
    { Déclarations publiques }
...
end;
Das Resultat gleich bei der ersten Prozedur nach 'Implementation:

Delphi-Quellcode:
function TPDFiumFrame.TPDFPage.HasText: Boolean;
begin
....
end;
Dass hier die Unterklasse direkt und nicht etwa eine Instanz angesprochen wird, fiel mir erst jetzt auf.
Instanzen gibt es erst später, wenn das Programm schon lange läuft und ein Dokument geladen ist.

Gruss
Delbor

Delbor 6. Dez 2017 18:22

AW: Verständnisfrage Vorwärtsdeklaration
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi DeddyH
Der Frame ist Teil innerhalb der Sinpdf.zip. Meine Testanwendung ist grundsätzlich bis auf die zweite, als Navigationsbar dienende Frameinstanz genaau diese Anwendung. Mit dabei ist die PDFium.dll, die das Einlesen der PDF-Dokumente ermöglicht. Diese Anwendung ist Opensource, Entwickler der DLL ist Google. Im Anhang findest du die Synpdf-Zip, die ich mir von der Synopse-Seite heruntergeladen habe.

Gruss
Delbor

DeddyH 6. Dez 2017 18:33

AW: Verständnisfrage Vorwärtsdeklaration
 
Ja, da habe ich alle *.pas durch, in keiner lässt sich die Zeichenfolge "PDFium" finden, wo kommt also der TPDFiumFrame her?

Stevie 6. Dez 2017 20:21

AW: Verständnisfrage Vorwärtsdeklaration
 
Ich hab den Eingangspost jetzt 3mal gelesen und ich verstehs nich. Schreib ein
Delphi-Quellcode:
public type
vor die TPDFPage Deklaration und fertig - brauchst keine Vorwärtsdeklaration.
Ja, der nested Type muss dann mit
Delphi-Quellcode:
TPDFiumFrame.TPDFPage
ansprochen werden und das taucht auch so in der Methodenliste auf - da ist nix seltsames dran.

Delbor 6. Dez 2017 21:44

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi DeddyH

Sorry, wenn ich erst jetzt antworte - nach deinem letzten Post hab ich festgestellt, dass meine Anwendung doch auf meinem Mist gewachsen ist. Ich benutze dabei gewissermassen als Basis dieses Beispiel.
Leider kann ich dir nur diesen Link geben. Die Datei, die da als Zip-Datei herunterladbar ist, hat mehr als 5MB und kann daher nicht als Anhang hier gepostet werden.

Gruss
Delbor

DeddyH 7. Dez 2017 06:28

AW: Verständnisfrage Vorwärtsdeklaration
 
Ich weiß zwar nicht, wozu Du die Seiteninstanz brauchst, aber es gibt da mehrere Möglichkeiten. Entweder die Typdeklaration aus der Klasse herausnehmen und davor setzen, oder z.B. einen öffentlichen Typalias deklarieren. Wenn ich das so schreibe:
Delphi-Quellcode:
type
  TTest = class
  strict private
    type
      TDings = class
        Bums: integer;
      end;
  public
    Bums: TDings;
  end;
,dann komme ich an Bums nicht heran, das sagt mir auch der Compiler. Mache ich das aber so:
Delphi-Quellcode:
type
  TTest = class
  strict private
    type
      TDings = class
        Bums: integer;
      end;
  public
    type
      TBums = TDings;
  public
    Bums: TBums;
  end;
,dann kann ich Bums als TBums ansprechen.

Delbor 7. Dez 2017 11:52

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi DeddyH

Da TPDFPage privat deklariert ist, habe ich von der Mainform keinen Zugriff darauf, kann also in der Mainform keine Klassenvariable einführen, die mit TPDFPage kompatibel ist.
mit deinem Tip ist das allerdings kein Problem. Die Deklaration in TPDFiumFrame:
Delphi-Quellcode:
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure SetPageIndex(Value : Integer);
  public
    { Déclarations publiques }
    type
      TPDFPageClass = TPDFPage;
  public
    PDFPageClass : TPDFPageClass;
     
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
...
Überflüssig ist das hier:
Delphi-Quellcode:
constructor TPDFiumFrame.Create(AOwner: TComponent);
begin
{$IFDEF TRACK_EVENTS}
  AllocConsole;
{$ENDIF}
  inherited;
  ControlStyle := ControlStyle + [csOpaque];
  FZoom := 100;
  FPageIndex := -1;
  PDFPageClass := TPDFPageClass.Create;
Es existiert jetzt zwar eine Instanz dieser Klasse, die aber vorerst nicht initialisiert ist. Ich sehe auch keinen Sinn dain, dies überhaupt noch zu tun - zumindest nicht im TPDFiumFrame.

Aber sie ermöglicht mir etwas anderes:
Delphi-Quellcode:
procedure TSynpdfMain.PDFiumFrame1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);    
  var SP, FP :TPoint; Index : Integer; Page : TPDFiumFrame.TPDFPageClass;
begin
  Memo1.Lines.Add('------ PDFiumFrame1MouseUp ------');
  for Index := 0 to PDFiumFrame1.PDFPageList.Count -1 do
  begin
     Page := PDFiumFrame1.PDFPageList.Items[Index];
     Memo1.Lines.Add('Page.Index := '+ IntToStr(Index));
     Memo1.Lines.Add('Page.Rect.Left := '+ FloatToStr(Page.Rect.Left));
     Memo1.Lines.Add('Page.Rect.Top := '+ FloatToStr(Page.Rect.Top));
     Memo1.Lines.Add('Page.Rect.Top := '+ FloatToStr(Page.Rect.Right));
     Memo1.Lines.Add('Page.Rect.Top := '+ FloatToStr(Page.Rect.Bottom));
  end;
PDFPageList ist ein Property, das ich dem TPDFiumFrame verpasst habe und das den Zugriff auf die TList-Variable FPages erlaubt. Die Ausgabe im Memo bei einem Click auf PDFiumFrame1:
Zitat:

------ PDFiumFrame1MouseUp ------
Page.Index := 0
Page.Rect.Left := 5
Page.Rect.Top := 5
Page.Rect.Right := 144
Page.Rect.Bottom := 185
Page.Index := 1
Page.Rect.Left := 5
Page.Rect.Top := 190
Page.Rect.Right := 144
Page.Rect.Bottom := 370
Page.Index := 2
Page.Rect.Left := 5
Page.Rect.Top := 375
Page.Rect.Right := 144 //<===Page.Rect.Right
Page.Rect.Bottom := 555
PDFiumFrame1.Seite := 1
PDFiumFrame1.Left := 10
PDFiumFrame1.PDFCurPage ist NIL
PDFiumFrame1.PDFSelPage ist NIL

PDFiumFrame1.TotalSize.cx := 612
PDFiumFrame1.TotalSize.cy := 5544
PDFiumFrame1.Width := 166 // <===PDFiumFrame1.Width
PDFiumFrame1.Height := 556
PDFiumFrame1.PageIndex := 0
Dem gegenüer liefert mir ein Click auf den grösseren Frame2 Folgendes:
Zitat:

------ PDFiumFrame2MouseUp ------
Page.Index := 0
Page.Rect.Left := 5
Page.Rect.Top := 5
Page.Rect.Right := 590
Page.Rect.Bottom := 762
Damit ist klar: Ich habe Zugriff auf die Abmessungen der einzelnen Seiten in den Frameinstanzen. Diese werde ich brauchen, um bei einem Click den Index der einzelnen Seiten zu ermitteln. Bislang liefert mir ein Klick auf die Seite mit dem Index 0 zwar auch den korrekten Wert, aber erst ein Klick auf die 4. angeigte Seite liefert mir den Index 1 zurück.

Allerdings zweifle ich daran, dass ich, wie erst angedacht, hier mit ScreenToClient weiterkomme Die Masse der einzelnen Seiten sind in der DLL und beziehen sich auf (normalerweise) das A4-Format.

Gruss
Delbor

Delbor 8. Dez 2017 14:28

AW: Verständnisfrage Vorwärtsdeklaration
 
Hi zusammen

Die Lösung liegt darin, dem TPDFiumFrame ein Property zu verpassen:

Delphi-Quellcode:
property PageAt[const p: TPoint]: TPDFPage read GetPageAt;
Wie ich nun den PDFiumFrame2 dazu bringe, die Seite mit dem aus PDFiumFrame1 erhaltenen Index anzuzeigen, muss ich erst noch herausfinden. Es gibt zwar eine Funktion (GetPage), die das tut. Aber die liefert an den Aufrufer (PDFiumFrame1) zurück, nicht gewissermassen an sich selbst.

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz