AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TextInRectangel liefert nichts

Ein Thema von Delbor · begonnen am 17. Apr 2023 · letzter Beitrag vom 25. Apr 2023
 
Delbor

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

TextInRectangel liefert nichts

  Alt 17. Apr 2023, 19:39
Delphi-Version: 5
Hi zusammen

Das hat schon mal funktioniert - ich wüsste nicht, warum:
Delphi-Quellcode:
procedure TAlexPdfFormular.FOnMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  const Tolerance = 2.0;
  var WebLinkIndex: Integer; LdfView : TPdfView;
begin
  FMarkedText := False;
  LdfView := (Sender as TPdfView);
  Pdf1.PageNumber := LdfView.PageNumber;
  if not LdfView.Active then
    Exit;
  LdfView.SetFocus;
  WebLinkIndex := LdfView.WebLinkAtPos(X, Y);
  if WebLinkIndex <> -1 then
    ShellExecute(0, 'open', PChar(string(LdfView.WebLink[WebLinkIndex].Url)), '', '', SW_SHOWNORMAL)
  else
    if SSRight in Shift then
    begin
      FMarkedText := True;
      FMouseMarked.x:=x;
      FMouseMarked.y:=y;
      FCurrentMarked.X := x;
      FCurrentMarked.Y := y; ;
    end;
 end;
Delphi-Quellcode:
procedure TAlexPdfFormular.FOnMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  const Tolerance = 2.0;
  var SelectedIndex: Integer; NeedRepaint: Boolean; S: String; LdfView : TPdfView;
begin
  LdfView := (Sender as TPdfView);
  if LdfView.Active then
    Pdf1.PageNumber := LdfView.PageNumber;
  if not LdfView.Active then
    Exit;
  if SSRight in Shift then
  begin
    TextMarkedField(pmnotxor,FCurrentMarked.X,FCurrentMarked.Y, LdfView); // : TPDFView
    FCurrentMarked.X := x;
    FCurrentMarked.Y := y; ;
    TextMarkedField(pmnotxor,FCurrentMarked.X,FCurrentMarked.Y, LdfView);
  end;
end;
Delphi-Quellcode:
procedure TAlexPdfFormular.TextMarkedField(mode: TPenMode; x, y: Integer;
  LdfView: TPDFView);
  var S: String; TheRect: TRect;
begin
  LdfView.Canvas.Pen.Mode:= mode; // Wieder Image.Canvas o.ä.
  LdfView.Canvas.Brush.Color := clNone;
  LdfView.Canvas.Pen.Color := clBlack;
  LdfView.Canvas.Pen.style:=psSolid;
  LdfView.Canvas.Brush.Style := bsClear;
  LdfView.Canvas.Rectangle(FMouseMarked.x,FMouseMarked.y,x,y);
  S := LdfView.TextInRectangle(FMouseMarked.X,FMouseMarked.Y,X,Y);
  Self.MemoPdfText.Lines.Add(S);
end;
Delphi-Quellcode:
procedure TAlexPdfFormular.FOnMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var Text: WString; LdfView : TPdfView;
begin
  LdfView := (Sender as TPdfView);
  if LdfView.Active then
  begin
    Pdf1.PageNumber := LdfView.PageNumber;
    Pdf1.Active := true;
    if FMarkedText then
    begin
      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);
      FMarkedText := False;
    end;
  end;
  if Assigned(FOnSelectedPdfTextEvent) then
    FOnSelectedPdfTextEvent(Sender,Text);
end;
Hintergrund : Ich erzeuge eine Reihe von TPdfView-Objekten, für jede Seite eines PDF-Dokumentes eins. Wird das PDF angezeigt, soll per Maus ein einzelnes Wort oder ein Text markiert und kopiert werden. Diese Objekte bieten eine Funktion TextInRectangel, die innerhalb eines angegebenen Rechtecks liegenden Text zurückgibt - oder zurückgeben sollte. Aber genau das tut se mit diesem Code nicht.

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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz