[C++Builder] Focus setzen
-
Hallo,
ich habe folgendes Problem:Ich habe auf meinem Form1 ein Panel gelegt; in diesem Panel lasse ich ein neues Form anzeigen; Jetzt sollte aber der Focus auf dem Form2 sein, doch irgendwie bleibt der auf dem Form1 hängen!
Weiß jemand eine Lösung?Hier mein Code:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Form2->Parent = Panel1; Form2->Visible = true; Form2->Position = poDesktopCenter; Form2->SetFocus(); }
Danke für die Antworten!
-
Hast du denn in dem Form selber irgend etwas, das fokussiert sein kann?
-
probier mal BringToFront()
-
@Reyx:
Ich denke mal schon, denn ein Form ansich kann ja fokussiert werden.
Ich möchte im Prinzip, dass mein Panel einmal als Hintergrund dient und zweitens soll der Panelbereich die Arbeitsfläche begrenzen. Mit der Anweisung:Form2->Parent = Panel1;
klappt das ja auch ganz gut, nur wird das Form2 so angezeigt, als wäre es nicht fokussiert, obwohl man es verschieben kann und alles. Visuell bleibt der der Fokus auf dem Form1 sitzen.
Hast du eine Idee warum das sein könnte??Leider kommt es zum gleichen Effekt wie schon oben erklärt. Liegt es daran, dass sich das Form2 in dem Panel1bereich befindet und das es vielleicht damit zusammenhängt?
Danke nochmal!
-
Hallo
Ds siegt sicher an der parent-Zuweisung. Ich bezweifle das diese Zuweisung so von den Entwicklern gedacht war. Deshalb bekommst du dieses Verhalten.
Denn damit ist das zweite Form dem ersten Form untergeordnet, und das erste Form wird nicht den Fokus verlieren, wenn du auf dem zweiten Form ein Control anklickst. Damit kann das zweite Form aber auch nicht als ausgewählt dargestellt werden.
Entweder lebst du damit, oder stellt dein Konzept um, zu Beispiel auf Frames.
bis bald
akari
-
Wenn ich ein Frame benutze, soll ich dann trotzdem die Parent - Anweisung nehmen, oder muss ich davon weg und etwas anderes versuchen?(Wenn ja, welchen Weg muss ich einschlagen?)
Denn eben habe ich es versucht, und er spuckt mir eine Exception aus!
-
@akari
Ich habe das mal in einem Projekt so verwendet. Stimmt, das zweite Form kann nicht fokussiert werden, Elemente darauf aber durchaus (zumindets beim BCB 4 war das so).Aber Frames währen do wohl tatsächlich die elegantere Methode...
Und nein, bei Frames entfällt die Parent-Anweisung... genau so wie jede andere!
-
Hallo
Wenn ich ein Frame benutze, soll ich dann trotzdem die Parent - Anweisung nehmen
Ja
Denn eben habe ich es versucht, und er spuckt mir eine Exception aus!
Was genau hast du versucht, und was für eine Exception kam an welcher Stelle?
Wir sind keine Hellseher.bis bald
akari
-
Schon klar! Sorry!
Es war eine Exception der Klasse: EAccessViolation aufgetreten.
Ich habe folgenden Quellcode:
void __fastcall TForm1::Button1Click(TObject *Sender) { Frame2->Parent = Panel1; Frame2->Visible = true; Frame2->SetFocus(); }
??
-
Hallo
ist Frame2 denn eingültiges Objekt?
Wenn du Frame2 dynamisch verwenden willst, mußt du new verwenden, um das Objekt zu erstellen.
Wenn du es nicht dynamisch verwenden willst, kannst du gleich im OI den Frame setzten. Dnan reicht im Button eine Zuweisung an Visible, um den Frame ein- oder auszublenden.
bis bald
akari