Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi beliebig viele forms zur Laufzeit erstellen (https://www.delphipraxis.net/122513-beliebig-viele-forms-zur-laufzeit-erstellen.html)

5etH 17. Okt 2008 10:47


beliebig viele forms zur Laufzeit erstellen
 
Hallo zusammen,

ich bin grtade dabei ein Programm zu schreiben bei dem ich beliebig viele forms zur laufzeit erstellen möchte die in etwa gleich aussehen und die selben komponenten haben.

wie kann ich diese kopieren, so das sich die komponenten nicht überschreiben und ich induviduell auf diese zugrewifen kann

ich habe mir gedacht das ich einen globalen counter nehmen kann und diesen bei neu erstellung um eins erhöhe und das an die komponenten dran hänge gibts da eine möglichkeit oder laufe ich damit in eine sackgasse und wemm ja wie kann ich das anders lösen

schonmal vielen dank

Manuel

Apollonius 17. Okt 2008 10:49

Re: beliebig viele forms zur Laufzeit erstellen
 
Warum nimmst du kein dynamisches Array oder eine TObjectList?

5etH 17. Okt 2008 11:10

Re: beliebig viele forms zur Laufzeit erstellen
 
ja aber ist das dann auch dynamisch, weil ich will auf all diesen forms ein twebbrowser erzeugen ... nicht das sich das auf alle übertregt

mkinzler 17. Okt 2008 11:19

Re: beliebig viele forms zur Laufzeit erstellen
 
Ja, es geht ja nur um die Ablage der Formularreferenzen

5etH 17. Okt 2008 11:35

Re: beliebig viele forms zur Laufzeit erstellen
 
okay ich die letzte zeit mal gegoogelt aber nichts nütliches gefunden könntet ihr mir vill ein Beispiel geben?

wäre super nett danke schonmal

mkinzler 17. Okt 2008 11:36

Re: beliebig viele forms zur Laufzeit erstellen
 
Delphi-Quellcode:
Formulare[i] := <Formularklasse>.Create(<Owner>);

5etH 17. Okt 2008 11:43

Re: beliebig viele forms zur Laufzeit erstellen
 
sorry aber mit der thematik bin ich noch nicht so wirklich in kontakt gekommen kannst du mir das vill konkreter schildern

Uwe Raabe 17. Okt 2008 13:53

Re: beliebig viele forms zur Laufzeit erstellen
 
Wozu brauchst du überhaupt einen Speicher für die verschiedenen Form-Instanzen?

Nehmen wir an, die Applikation hat ein MainForm vom Typ TForm1 und soll beliebig viele Instanzen vom Typ TForm2 aufmachen können. Das Erzeugen eines neuen Forms machen wir in einem ButtonClick vom MainForm:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TForm2.Create(Application).Show;
end;
Falls du auf die Form-Instanzen zugreifen willst, kannst du das über Screen.Forms.

5etH 17. Okt 2008 14:25

Re: beliebig viele forms zur Laufzeit erstellen
 
funzt es auch dann weil die sache ist die das dieses fenster beliebig oft aufgemacht werden kann weil ich ein webbrowserinterface aufrufen möchte zur gleichen zeit und diese unabhängig von einander

Uwe Raabe 17. Okt 2008 15:08

Re: beliebig viele forms zur Laufzeit erstellen
 
Ich weiß ja nicht, ob du das meinst, aber wenn du im TForm2 einen TWebbrowser rein setzt, dann hast du mit jedem geöffnetet Form eine eigene Instanz und kannst so jeweils unabhängig voneinander surfen.

5etH 20. Okt 2008 08:01

Re: beliebig viele forms zur Laufzeit erstellen
 
Hallo zusammen

Das hat super funktioniert habe aber momentan folgendes problem:
Wenn ich einen neuen Browser öffne möchte ich gleich eine adresse mitgeben auf die er gehen soll ...

hier einmal der Quelltext
Delphi-Quellcode:
procedure Tform3.Combobox1Select(Sender: TObject);
begin
Tform2.Create(Application).show;
form2.webbrowser1.navigate(Combobox1.items[combobox1.itemindex]);
end;

Leider ruft er dann die adresse die in der Combobox steht nicht auf ... kann es daran liegen das ich nur form2 anspreche ?

schonmal vielen Dank
Manu

jfheins 20. Okt 2008 08:07

Re: beliebig viele forms zur Laufzeit erstellen
 
Delphi-Quellcode:
procedure Tform3.Combobox1Select(Sender: TObject);
begin
  with Tform2.Create(Application) do
  begin
    Show();
    webbrowser1.navigate(Combobox1.items[combobox1.itemindex]);
  end;
end;
Du musst den webbrowser natürlich auf die Instanz aufrufen, die du gerade erstellt hast. Also brauchst du eine lokale variable oder du nimmst with .. do ;)

5etH 20. Okt 2008 08:55

Re: beliebig viele forms zur Laufzeit erstellen
 
super Danke das hat funktioniert ... jetzt wollte ich einen CMD befehl mit shellexecute übergeben aber er kennt shellexecute nicht .... hab ich in den uses was vergessen unter umständen oder warum erkennt er das bei mir nicht ?

Neutral General 20. Okt 2008 09:21

Re: beliebig viele forms zur Laufzeit erstellen
 
Hi,

Delphi-Quellcode:
uses ShellAPI;
;)

5etH 20. Okt 2008 09:50

Re: beliebig viele forms zur Laufzeit erstellen
 
alles klar ^^ leider stellt er sich jetzt etwas an weil ich einen String übergeben möchte er aber Pchar will

der Entsprechende Code
Delphi-Quellcode:
shellexecute(application.handle,nil,('mstsc.exe'), ('/v ' + ((combobox1.items[combobox1.ItemIndex]))),nil,sw_Normal);
gibt es für den Befehl ShellExecute auch ne Möglichkeit ein Programm mit "ausführen als" zu starten ... mit Variablen die vorher festgelegt wurden, ohne das sich der Dialog öffnet, also das ich Benutzer, PW und Domain direkt übergebe ?

Gruß und vielen Dank
Manu

jfheins 20. Okt 2008 09:53

Re: beliebig viele forms zur Laufzeit erstellen
 
Zitat:

Zitat von 5etH
gibt es für den Befehl ShellExecute auch ne Möglichkeit ein Programm mit "ausführen als" zu starten ... mit Variablen die vorher festgelegt wurden, ohne das sich der Dialog öffnet, also das ich Benutzer, PW und Domain direkt übergebe ?

Nicht mit Shellexecute aber es gibt etwas wie .... das da: http://msdn.microsoft.com/en-us/library/ms682431(VS.85).aspx ;)

Neutral General 20. Okt 2008 09:54

Re: beliebig viele forms zur Laufzeit erstellen
 
Das PChar Problem lässt sich mit einem einfachen Cast auf PChar beheben:

Delphi-Quellcode:
shellexecute(application.handle,nil,('mstsc.exe'),PChar('/v ' + ((combobox1.items[combobox1.ItemIndex]))),nil,sw_Normal);
Zu deiner anderen Frage, habe ich leider keine Antwort.

5etH 20. Okt 2008 10:32

Re: beliebig viele forms zur Laufzeit erstellen
 
alles klar super das klappt ^^ nur das createproccessasuser bereitet mir kopfschmerzen ... bin total überfordert und desto länger ich nach suche desto schlimmer wird es hier schonmal was ich habe

Delphi-Quellcode:
logonuser(PChar(form1.edit1.text),Pchar('hsvv.hessen.de'),Pchar(form1.edit2.text),<LOGON32_LOGON_BATCH or LOGON32_LOGON_NETWORK or LOGON32_LOGON_INTERACTIVE>,
             <LOGON32_PROVIDER_DEFAULT>,
             AdminToken));
wie ich aber nun mit diesen daten ein programm aufrufe weis ich nicht :(, weil ich kann mit diesen daten nichts im "createprocessasuser" anfangen ... kann man nicht auch runas dafür nehmen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.

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