Thema: Delphi Shellexecute in 'Neubau'

Einzelnen Beitrag anzeigen

Delbor

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

Shellexecute in 'Neubau'

  Alt 17. Mär 2022, 17:48
Delphi-Version: 11 Alexandria
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
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