AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Privat deklarierte Klasse ableiten

Ein Thema von Delbor · begonnen am 17. Nov 2017 · letzter Beitrag vom 20. Nov 2017
Antwort Antwort
Seite 2 von 2     12   
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Privat deklarierte Klasse ableiten

  Alt 20. Nov 2017, 12:36
Hi TBx

Sorry, dass ich erst jetzt antworte.. Ich hab mich übers Wochende noch etwas durchs Beispielprogramm gewühlt - dasDing hat in zehn Units doch gute 100 000 Zeilen Quelltext. Wieviele Kommentarzeilen davon allerdings noch abgezogen werden müssen, ist mir nicht bekannt, aber es könnte gut und gerne etwa halb soviel sein.

Nun hab ich das mit der public-Klasse mal versucht. Es schlägt fehl, weil da das Wort Class gar nicht bekannt ist - weswegen, entzieht sich meiner Kenntnis.

Laut dem Embarcadoro-Wiki sollte folgende Deklaraion möglich sein:
Delphi-Quellcode:
  TPDFiumFrame = class(TFrame)

      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
    { Déclarations privées }
Aber auch hier wird mir das Wort class als unbekannt markiert.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#12

AW: Privat deklarierte Klasse ableiten

  Alt 20. Nov 2017, 12:46
Da fehlt das kleine Wörtchen type
Delphi-Quellcode:
  TPDFiumFrame = class(TFrame)

  type // woher soll Delphi sonst wissen, dass Du da eine neue Klasse deklarieren willst?
    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
    { Déclarations privées }
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Privat deklarierte Klasse ableiten

  Alt 20. Nov 2017, 14:49
Hi TBX

Bitte, bitte: wo ist das nächste Mausloch,, damit ich mich verkriechen kann??

Brr... Sowas dämliches....

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Privat deklarierte Klasse ableiten

  Alt 20. Nov 2017, 18:17
Hi TBx

Warum in die Ferne schweifen, denn siehe, das Gute ist doch so nah!

So, oder so ähnlich lautet ein bekannnter Satz aus der klassischen Literatur. Für mich und mein Delphi bedeutet das:
  • TPDFPage als TPDFDocumentPage im public-Abschnitt deklariert:
  • Forward-Deklaration von TPDFDocumentPage einführen, da einige Felder des Frames vom Typ dieser Seite sind
  • Einige Methoden des Frames waren plötzlich unauffindbar für den Compiler
  • Meine erste Reaktion: jetzt muss ich das ganze vermaledeite Beispielprogramm umschreiben, d.h. alle unauffindbaren Methoden löschen und neu anlegen(1)

Nuja - die Seite heisst TPDFPage und nicht etwa FTPDFPage - da hätte ich die einfache Lösung vielleicht früher gefunden, die da heisst:
Property anlegen (nachfolgend alle bisherigen durch mich angelegten Propertys):

Delphi-Quellcode:
    property PDFPageList: TList read FPages;
    property TotalSize: TPointsSize read FTotalSize;
    property PDFSeite: TPDFPage read FCurPage;
Und in meiner Mainform heisst es dann bei PDFiumFrame1.MouseUp:

Delphi-Quellcode:
  
  Memo1.Lines.Add('PDFiumFrame1.TotalSize.cx := ' + FloatToStr(PDFiumFrame1.TotalSize.cx));
  Memo1.Lines.Add('PDFiumFrame1.TotalSize.cy := ' + FloatToStr(PDFiumFrame1.TotalSize.cy));
  Memo1.Lines.Add('PDFiumFrame1.PDFSeite.Index := ' + intToStr(PDFiumFrame1.PDFSeite.Index));
Das gibt mir dies aus:
Zitat:
PDFiumFrame1.TotalSize.cx := 612
PDFiumFrame1.TotalSize.cy := 5544
PDFiumFrame1.PDFSeite.Index := 0
Dabei ändert sich nur die Indexangabe - sie gibt exakt den Index der Seite an, die ich angeklickt habe. Totalsize ändert sich nicht und ist also der Size-Wert der PDF im Speicher...

(1) Ob wohl ein neu erzeugen des Projektes gereicht hätte?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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