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 Ein Formular mehrmals öffnen (https://www.delphipraxis.net/118033-ein-formular-mehrmals-oeffnen.html)

STaRDoGGCHaMP 30. Jul 2008 12:32


Ein Formular mehrmals öffnen
 
Hallo,
Momentan arbeite ich gearde an einem DLL-Injector. Zur Funktionsweise: Man kann einzelne Aufträge in eine Liste eintragen, dazu muss man prozess name und den DLL-Pfad angeben, die Aufträge werden dann in der Liste gesammelt und können einzeln bearbeitet, gelöscht oder injiziert werden (man kann auch alle aufträge auf einmal starten, aber das tut ja nix zur sache). Das Bearbeiten und Löschen funktioniert mittels eines eigenen PopUp-Menüs. Zur Verdeutlichung zwei Screenshots: http://img137.imageshack.us/img137/7...jector1bh5.gif
http://img411.imageshack.us/img411/2...jector2xq1.gif


Da Multiselect eingestellt ist kann man auch mehrere Aufträge in der Liste bearbeiten, löschen und injizierten. Beim Bearbeiten stellt sich mir jedoch ein Problem in den Weg. Der entsprechende Code im PopUpMenü sieht so aus:
Delphi-Quellcode:
procedure TForm_WInjector_Main.Menu_EditClick(Sender: TObject);
var i: Integer;
begin
  for i := 1 to ListView_Instructions.Items.Count do
    if ListView_Instructions.Items[i-1].Selected then begin
      InstructionEditor.Form_WInjector_EditInstruction.Label_InstructionNumber.Caption := 'Nr. ' + IntToStr(i);
      InstructionEditor.Form_WInjector_EditInstruction.Edit_ProcessName.Text := ListView_Instructions.Items[i-1].SubItems[0];
      InstructionEditor.Form_WInjector_EditInstruction.Edit_DllPath.Text := ListView_Instructions.Items[i-1].SubItems[1];
      InstructionEditor.Form_WInjector_EditInstruction.Caption := 'Instruction Editor: Nr. ' + IntToStr(i);
      InstructionEditor.Form_WInjector_EditInstruction.Visible := TRUE;
    end;
end;
(InstructionEditor is ne eigene erstellte und eingebundene Unit)

Wenn jetzt mehrere Einträge markiert und bearbeitet werden wird nur der letzte markierte Eintrag im Editor angezeigt (ist ja auch logisch, da die Schleife ja bis zum Ende durchläuft..). Nun meine Frage: Wie ist es möglich sozusagen mehrere Instanzen von dem InstructionEditor-Formular zu starten. Am besten wäre es wenn man x Einträge markiert hat auch x Editor-Fenster gleichzeitig aufgehen.

SaFu 30. Jul 2008 12:42

Re: Ein Formular mehrmals öffnen
 
Meinst du sowas

Delphi-Quellcode:
Application.CreateForm(TMeineForm,MeineForm);
Offnet dir ein Formular mehrmals


Gruß Sascha

spaxxn 30. Jul 2008 12:43

Re: Ein Formular mehrmals öffnen
 
Für jedes markierte Element ein Formular instanzieren und anzeigen?

Denke mal, dass du derzeit mit nur einem instanzierten Formular arbeitest...


Edit: @fuknersascha, denk nochmal über das nach, was du da geschrieben hast :P

gmc616 30. Jul 2008 12:43

Re: Ein Formular mehrmals öffnen
 
Du kannst doch mehrere Instanzen des InstructionEditor erstellen, oder?
Delphi-Quellcode:
MyEditor := TInstructionEditor.Create (...);
günstig wäre es dann noch die erstellten Editoren in einer Liste oder einem Array zu halten und sie später evtl. wieder frei zu geben.


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