Einzelnen Beitrag anzeigen

Kill0r

Registriert seit: 5. Jun 2005
Ort: Zürich
50 Beiträge
 
Delphi 2010 Professional
 
#1

Form mit Parent = Desktop, Controls funktionieren nicht

  Alt 13. Jul 2007, 20:57
Hi!
Ich habe folgendes Problem:
Ich arbeite gerade an einem LAN-Messenger und habe dazu 2 Forms, 1 Form für die Kontaktliste (die MainForm ) und 1 Form für die Unterhaltungsfenster selbst. Die verschiedenen Unterhaltungen sind alle im gleichen Form mittels PageControl und Tabs untergebracht.
Die Tabs bzw. die verschiedenen Pages werden dynamisch erstellt und zugewiesen.

Nunja... nun muss ich ja die UnterhaltungsForm von der MainForm aus aufrufen... dabei erhält das Chatfenster als Parent die MainForm. Nun soll aber das Chatfenster weiterhin sichtbar bleiben (und auch einen eigenen Eintrag in der Taskleiste erhalten) auch wenn die Kontaktliste minimiert wird.

Ich hab es bereits einigermassen hingekriegt (den Parent des Chatfensters auf den Desktop zu setzen), nur gibt es nun ein grösseres Problem, nämlich das die Controls auf dem Chatfenster nicht bzw. nicht richtig auswählbar sind. Sogar das Fenster selbst hat Probleme (als würde irgendwas mit dem Fokus schief laufen). Wenn man das Fenster an der Titelliste packt, sieht das Fenster aus als wäre es gerade im Hintergrund (also Titelleiste hat die Farbe eines inaktiven Fensters) es lässt sich zwar verschieben doch man sieht den Inhalt des Fensters nicht, nicht mal einen Rahmen, sondern es taucht erst wieder beim Loslassen an der Stelle auf.

Hier der Code den ich zum Parent setze benutze:
frmConversation := TfrmConversation.CreateParented(GetDesktopWindow); Dies wird beim 1. Erstellen eines Tabs ausgeführt

Und hier noch der Teil wo die Forms erstellt werden:
Delphi-Quellcode:
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmSettings, frmSettings);
//Application.CreateForm(TfrmConversation, frmConversation);
Application.CreateForm(TfrmAddContact, frmAddContact);
(frmConversation hab ich auskommentiert weil ich es ja erst später mit CreateParented(); erstelle)

Ich hoffe ihr wisst eine Lösung wie ich diesen ziemlichen nervigen Fehler ausbügeln kann

Cu
Kill0r
  Mit Zitat antworten Zitat