| Autor |
Beitrag |
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Di 05.06.07 20:12
Also ich hoff' mal das es das richtige Forum ist (bzw der Teil des Forums).
Ich wollte mal fragen ob es möglich ist, Formen bzw eine Form als "Thread oder Instance" zu starten.
Ich meine das wie so eine Exe von der man mehrere gleichzeitig laufen lassen kann nur halt nicht als Exe sondern als Form in einem Projekt.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 06.06.07 02:36
Du kannst Programmcode in einem Thread laufen lassen, und wenn dieser Code ein Formular anzeigt etc., dann läuft dieses gewissermaßen auch dadrin.
Da man aber ja die Oberfläche eines Programms, insbesondere bei Multithreading, von der Oberfläche trennt, hat das ja erstmal nichts mit dem Formular an sich zu tun. Du brauchst eine Klasse, die von TThread abgeleitet ist, und den Code enthält, der im Thread laufen soll, und dann wird der bzw. werden diese Threads gestartet und laufen dann parallel weiter.
Aber vielleicht solltest du mal genauer schreiben was du eigentlich machen möchtest, dann kann ich bzw. können wir auch genauer sagen, wie du das realisieren kannst...
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 06.06.07 05:51
Wenn Du eine Form mit 'ShowModal' anzeigst, dann 'hängen' alle anderen Formulare, weil diese Form ja exklusiv alle Tastendrücke, Mausereignisse etc. bekommt.
Zeigst Du dagegen ein Formular mit 'Show', dann wird es nur angezeigt und erhält die Ereignisse nur dann, wenn es fokussiert ist. Vermutlich meinst du soetwas.
Dann gibt es noch die MDI-Metapher, das Multi-Document-Interface. Du erstellst dir ein Hauptforumlar, sozusagen den Container für die einzelnen Formulare, und dann eine Formular-Klasse vom Typ 'MDI-Child'. Wo man das einstellt, weiss ich grad nicht, aber in der OH und den Demos findest Du Beispiele.
_________________ Na denn, dann. Bis dann, denn.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Mi 06.06.07 21:17
Also ich habe eine "Main" Form die bleibt immer im hintergrund bzw als hintergrund .
so und nun will ich z.b. eine Form machen die wie ein Editor funktioniert wo ein Memo drinn ist
Und sowas sollte man mehrfach aufrufen können.
Also möchte ich nur Form2 mehrfach aufrufen können und hin und her switchen und auch auf die Main-Form ohne probleme zurueck.
Also nicht wie bei showModal (nix anderes mehr anklickbar)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 07.06.07 07:18
alzaimar hat folgendes geschrieben: | | Zeigst Du dagegen ein Formular mit 'Show', dann wird es nur angezeigt und erhält die Ereignisse nur dann, wenn es fokussiert ist. Vermutlich meinst du soetwas. |

_________________ Na denn, dann. Bis dann, denn.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Do 07.06.07 08:03
ja nur wenn ich ein weiteres fenster der gleichen form zeigen will geht das doch nicht?! Es zeigt nur die eine Form die ich erstellt hab an mit Show.
Ich habs mit Arrays und Application.FormCreate gelöst 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 07.06.07 08:07
Delphi-Quelltext 1:
| TMyForm.Create(nil).Show; |
_________________ Na denn, dann. Bis dann, denn.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Fr 08.06.07 15:15
Die idee hatte ich auch schon ^^ funzt nur nicht.
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0045671C in Modul 'Project1.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Help
---------------------------
Bei der Linie:
MyForm[i].Create(nil).show;
MyForm ist ne array [0..9] vom typ TForm
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Fr 08.06.07 15:46
und lass mich raten: i hat die Werte 1 bis 10? ;mrgreen:
Das von Alzaimar funktioniert schon, kontrollier bitte mal deine Zählvariable
Gruß
alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 19.06.07 15:51
Ist jetzt zwar schon ein paar Tage her seit dem letzten Post, aber egal...
Das liegt nicht an der Zählvariablen. Das liegt daran, dass bei Simak hat folgendes geschrieben: | Bei der Linie:
MyForm[i].Create(nil).show; |
die Methode Create von MyForm[i] aufgerufen wird, da dieses Objekt jedoch noch gar nicht initialisiert wurde, geht das natürlich nicht.
Richtig ist: Delphi-Quelltext 1: 2:
| MyForm[i] := TMyForm.Create(nil); MyForm[i].Show; |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 19.06.07 16:05
Simak hat folgendes geschrieben: | Also ich habe eine "Main" Form die bleibt immer im hintergrund bzw als hintergrund .
so und nun will ich z.b. eine Form machen die wie ein Editor funktioniert wo ein Memo drinn ist
Und sowas sollte man mehrfach aufrufen können. |
Das klingt ganz nach einer MDI Anwendung.
|
|