AGB  ·  Datenschutz  ·  Impressum  







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

Invalidate im Basisframe

Ein Thema von Delbor · begonnen am 6. Jan 2023
Antwort Antwort
Delbor

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

Invalidate im Basisframe

  Alt 6. Jan 2023, 17:08
Delphi-Version: 11 Alexandria
Hi zusammen

In meinem Projekt benutze ich einen Frame, um Pdf-Dokumente anzuzeigen - das funktioniert erstmal sehr gut. Dann gehts weiter: per Rechteck markiere ich einen Bereich und kopiere den enthaltenen Text - vorerst nur in eine Listbox:
Delphi-Quellcode:
procedure TAlexPdfFrame.FOnMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var Text: WString; LdfView : TPdfView;
begin
  LdfView := (Sender as TPdfView);
  Pdf1.PageNumber := LdfView.PageNumber;
// Pdf1.OnPageChange
  Text := LdfView.TextInRectangle(FMouseMarked.X,FMouseMarked.Y,X,Y);
  LdfView.Canvas.Rectangle(FMouseMarked.X,FMouseMarked.Y,X,Y);
  RzPCtrlPdfText.ActivePage := RzTbsMemo;
  MemoPdfText.Lines.Add(Text);
  if Assigned(FOnSelectedPdfTextEvent) then
    FOnSelectedPdfTextEvent(Sender,Text);
end;
Das Problem dabei ist: Ich habe diversen PDFs einen Stempel (Bitmap) mit einem Fremdprogramm verpasst. Mein Programm zeigt mir diese Pdfs aber nach wie vor ohne diesen Stempel an, obwohl verschiedene Fremdprogramme mir diese anstandslos anzeigen - und nicht nur diese Fremdprogramme, sondern auch eine Demo des Herstellers der benutzten Pdf-Komponenten zeigt die Stempel in den entsprechenden Pdfs an.
Ich hab nun versucht, die Codestelle zu finden, an der die anzuzeigende Bitmap so behandelt wird, dass sie auch angezeigt wird, Noch bin ich da nicht ganz durch, denke aber, fündig geworden zu sein und hab diesen zweizeiler eingebaut:
Delphi-Quellcode:
procedure TAlexPdfFrame.FPDFViewOnPageChange(Sender: TObject);
  var Text: WString; LdfView : TPdfView;
begin
  LdfView := (Sender as TPdfView);
  LdfView.Invalidate;
end;
Die selbe Prozedur hab ich auch in die Frameinstanz eingebaut:
Delphi-Quellcode:
procedure TOfficerAlexMain.AlexPdfFrame1PdfView_1PageChange(Sender: TObject);
  var PdfView_1 : TPdfView;
begin
  PdfView_1 := (Sender as TPdfView);
  PdfView_1.Invalidate;
end;
Die Prozedur wird bei erstellen des PdfViews an eine eigene Routine zugewiesen, so dass diese ausgeführt werden sollte.
Ich ging davon aus, dass OnPageChange auch beim erstmaligen Anzeigen aufgerufen wird. Nur geschieht da leider gar nichts. Haltepunkte bleiben unbeachtet, und mein Programm zeigt mir nach wie vor die ungestempelten Pdfs.

Was mache ich falsch?

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


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 19:11 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