Hi zusammen
Folgenden Code soll in einem 'Neubau' übernommen werden:
Delphi-Quellcode:
procedure TRogersPdfFrame.FOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
Tolerance = 2.0;
var WebLinkIndex: Integer; LdfView : TPdfView;
begin
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
begin
...
'Corpus Delicti' ist hier 'Shellexecute', das hier im Originalcode absolut korrekt arbeitet. Probleme macht 'ShellExecute' erst im 'Neubau':
Delphi-Quellcode:
procedure TAlexPdfFrame.FOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
Tolerance = 2.0;
var WebLinkIndex: Integer; LdfView : TPdfView;
begin
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
begin
Hier ist ShellExecute schon zur Designzeit als unbekannt markiert, der Deklaration unter uses zum Trotz:
Delphi-Quellcode:
unit AlexPdfFrameUnit;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls, PDFium,
GenericObjectListUnit,
Vcl.StdCtrls, ExtDlgs, ImgList, ComCtrls, ToolWin,
RzTabs;
Der Usesteil in TRogersPdfFrame ist bis auf die
Unit RzTabs identisch.
Als Fehlerquelle könnte ich mir vorstellen, einen Flüchtigkeitsfehler bei der Anordnung der begin..end-Blöcke gemacht zu haben, aber das scheint nicht der Fall zu sein. Was könnte noch Ursache für den Fehler sein?
Ach ja - der 'Neubau' besteht aus völlig neu aufgebauten Formularen,Frames und Units unter Übernahme bestehenden Codes, anstelle der Suche nach einem Fehler, den ich wahrscheinlich nie finden würde...(vermutlich: in Sydney entwickelt, in Alexandria geöffnet und dann in Sydney weiterbearbeitet...)
Komponenten wie TPanel hab ich teilweise per Copy&Paste übernommen, jedoch Events neu per
OI erzeugt. Wichtig war für mich, nichts zu übernehmen, was irgendwie irgendwann compiliert worden war.
Gruss
Delbor