Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Multiform Anwendung Drag Drop (https://www.delphipraxis.net/194374-multiform-anwendung-drag-drop.html)

needatip 13. Nov 2017 16:56

Multiform Anwendung Drag Drop
 
Hallo,

ich arbeite mit der JVDragDrop Komponente von Jedi.
Ich möchte Dateien vom Windows Explorer in meine Anwendung ziehen.
Bei meiner bisherigen "normalen Formularanwendung" funktioniert das einwandfrei.
JvDragDrop Komponente auf das Formular, Eigenschaft AcceptDrag anhaken und DropTarget Komponente einstellen und schon akzeptiert die entsprechende Komponente die Dateien.

Meine neue Anwendung hat aber mehrere Formulare die alle auf einem Panel entsprechend geladen werden.
d.h.
Ich habe links auf meinem Hauptformular eine Navigationskomponente(JvNavigationPane) mit der ich die einzelnen Formulare dann rechts auf mein Panel(sog. Containerpanel) anzeige.

Delphi-Quellcode:
procedure TForm1.NavP1Change(Sender: TObject);
var
  NewFormClass: TFormClass;
  NewForm: TForm;
begin
  begin
    case NavP1.ActivePage.PageIndex of
      0:
        begin
          NewFormClass := TmyForm1;
          if ContainerPanel.ControlCount > 0 then
            ContainerPanel.Controls[0].Free;
          if Assigned(NewFormClass) then
          begin
            NewForm := NewFormClass.Create(Self);
            NewForm.Hide;
            NewForm.BorderStyle := bsNone;
            NewForm.Parent := ContainerPanel;
            NewForm.Align := alClient;
            NewForm.Show;
          end;
        end;
      1:
        begin
          NewFormClass := TmyForm2;
          if ContainerPanel.ControlCount > 0 then
            ContainerPanel.Controls[0].Free;
          if Assigned(NewFormClass) then
          begin
            NewForm := NewFormClass.Create(Self);
            NewForm.Hide;
            NewForm.BorderStyle := bsNone;
            NewForm.Parent := ContainerPanel;
            NewForm.Align := alNone;
            NewForm.Show;
          end;
        end;
    end;
  end;
end;
Weil ich
Code:
NewForm.Parent := ContainerPanel;
zuweise, funktioniert die DragDrop Funktion nicht mehr.
Muss ich in dem Containerpanel noch irgendwas zuweisen bzw. woran liegt es?

blawen 13. Nov 2017 17:25

AW: Multiform Anwendung Drag Drop
 
Hallo

Persönlich nutze ich die Funktionen aus der Winapi.ShellAPI und nicht die jvDragDrop Komponente.
In meinem Falle hatte ich eine ähnliche Situation, sprich mit nur einer Form funktioniert das ganze einwandfrei und nach dem hinzufügend von weiteren Formularen, schien das ganze nicht mehr zu funktionieren. Schlussendlich habe ich herausgefunden, dass die AppMessage vom falschen (dem zuletzt erstellten) Formular ausgewertet wurde.

In meinem Fall erzeuge ich das benötigte Formular erst, wenn ich es effektiv benötige und gebe es danach auch gleich wieder frei.

Gruss
Blawen

needatip 13. Nov 2017 19:16

AW: Multiform Anwendung Drag Drop
 
Danke,
ich denke daß dann beim Containerpanel was eingestellt gehört bwz. daß die DragDrop funktion was durchreichen muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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