Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edgebrowser will nicht (https://www.delphipraxis.net/208325-edgebrowser-will-nicht.html)

Delbor 14. Jul 2021 17:36

Delphi-Version: 10.4 Sydney

Edgebrowser will nicht
 
Hi zusammmen
So wähle ich eine Pdf-Datei

Delphi-Quellcode:
procedure TOpenFileFrame.TVFilesExplorerMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var AnItem: TTreeNode; ATextSelection :String;
begin
  AnItem := TVFilesExplorer.GetNodeAt(X, Y);
  if not AnItem.HasChildren then
  begin
    FFileName := AnItem.Text;
    ATextSelection := PNameRec(AnItem.Data)^.RealName;
    if Assigned(OnTextSelectionEvent) then
      OnTextSelectionEvent(Sender,ATextSelection);
  end;
end;
Der Containerframe ermöglicht individuelle Änderungen, ohne gleich den Openfileframe ändern zu müssen, ist aber nicht absolut nötig:
Delphi-Quellcode:
procedure TFileSearchContainerFrame.DoSelectTextEvent(Sender: TObject; const ATextSelection: String);
begin
  FTextSelection := ATextSelection;
  Self.Edit2.Text := ATextSelection;
  if ExtractFileExt(ATextSelection) = AnsiLowerCase('.pdf') then
  begin
    if Assigned(FOnTextSelection) then
      FOnTextSelection(Sender, ATextSelection);
  end;
Schliesslich kommt der Event in der Mainform an:
Delphi-Quellcode:
procedure THomeOfficerFeMain.DoTextSelectionEvent(Sender: TObject;
  const ATextSelection: String);
begin
Self.RogersPdfFrame1.PdfFileName := ATextSelection;
//Self.RogersPdfFrame1.PdfViewCreate2; // Hier den EdgeBrowser anzeigen
Self.EdgeBrowserFrame1.EdgeBrowser1.Navigate(ATextSelection);                 // ???
end;
Und hier soll der Edgebrowser nun angewiesen werden, die gewählte Pdf-Datei anzuzeigen. Nur - das tut er nicht.
Wesshalb?
Der Edgebrowser liegt auf einem Tabsheet/Pagecontrol. Es wäre aber ein absolutes Novum, wenn Komponenten hier explizit adressiert werden müssten.
Was mache ich falsch?

Gruss
Delbor

Der schöne Günther 14. Jul 2021 18:13

AW: Edgebrowser will nicht
 
Ich finde es beim besten Willen nicht, meine aber, dass wir das Thema vor ein paar Monaten schonmal hatten. Eventuell war es in der englischen Delphi-Praxis oder auf StackOverflow, ich weiß es nicht mehr.

Jedenfalls hat, meine ich doch, sowohl der alte Internet Explorer, als auch Edge, keine Lust etwas anzuzeigen wenn er auf einem nicht sichtbaren TabSheet eines PageControl liegt.

Kannst du ein Minimalbeispiel einstellen? Kannst du zu einem Test das PageControl weglassen?

PS: Ich glaube das hier war, was ich noch im Hinterkopf hatte:
https://stackoverflow.com/q/66134174/2298252

Delbor 14. Jul 2021 21:06

AW: Edgebrowser will nicht
 
Hi Günther

Aproppo Frames: Ich hatte vor einiger Zeit versucht, mit Panels/GridPanels auf einem Frame zu arbeiten. Dabei hätten die (2) Panels mit je 6 Gridpanels eingemittet erden sollen - ich hatte eine Weile, bis mir klar wurde, dass entsprechender Code im Basisframe auch die Mitte des Basisframes ermittelt. Auch wenn die Frameinstanz diesen Code erbt.
Wenn, dann müsste der Parent der Frameinstanz die entsprechende Methode bereitstellen.
Zitat:

Jedenfalls hat, meine ich doch, sowohl der alte Internet Explorer, als auch Edge, keine Lust etwas anzuzeigen wenn er auf einem nicht sichtbaren TabSheet eines PageControl liegt.
Ich hab schon etwas daraufgesetzt, dass das entsprechende Tabsheet aktiv wird, wenn die enthaltene Komponente aktiv wird, aber zufällig war das Tabsheet aktiv. Von daher vermute ich auch, dass das am Frame liegt.
Zitat:

Kannst du zu einem Test das PageControl weglassen?
Hab ich gerade mal gemacht - ohne Änderung.

Gruss
Delbor

Delbor 14. Jul 2021 23:00

AW: Edgebrowser will nicht
 
Hi Günter

Ich hab jetzt mal der Demo ein PageControl mit zwei Tabsheets verpasst, dass 2. mit Panel und Edgebrowser.
Damit kann 'problemlos' ein Verzeichnis mit Unterverzeichnissen angezeigt werden. Pdf ist ebenfalls kein Problem.
Wenn allerdings das Tabsheet mit dem Edge nicht sichtbar ist, bleibt der Edge auch nach aktivieren seines Parenttabsheets weg. Wie sich das verhält, wenn der Edge in TPageControl.OnChange 'gestartet' wird, hab ich noch nicht getestet.

Anbei noch die ergänzten Createprozedur der Demo:
Delphi-Quellcode:
procedure TEdgeViewForm.FormCreate(Sender: TObject);
var X : String;
begin
  X := 'F:\BenutzerHandbücher&Manuals\Benutzerhandbuch HP OfficeJet 3830 All-in-One series';
  EdgeBrowser1.Navigate(X);
//  EdgeBrowser1.Navigate('https://www.delphipraxis.net/forum.php');
end;

Gruss
Delbor

Der schöne Günther 15. Jul 2021 06:26

AW: Edgebrowser will nicht
 
Ja genau, das meinte ich.

Ich glaube ich hatte ein ähnliches Problem mit einem Popup das erst einmal eingerichtet werden sollte (Beschriftungen anpassen, PDF einblenden, Größe setzen) und dann erst eingeblendet wurde. Ich habe mir dann stattdessen die URL zum PDF gemerkt und den Browser dann erst im onActivate des Formulars die PDF anzeigen lassen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf