Fensterprobleme



  • Die Löschung des alten Fensters hast du nicht vergessen hoff ich?

    -junix



  • 1. FormStyle
    2. Left, Top....
    3. bool, if(){}else{}

    😑
    kurz gesagt nix was du nach 5 minuten probieren nicht auch selbst rausfindest 😃

    Und vieleicht solltest du eine Form die du nur einmal brauchst von anfang an laden und dann einfach Form->Visible = true machen wenn du sie brauchst....



  • Also left, right usw. sagt mir schon was und das habe ich ja auch eingestellt, deswegen kann ich das Fenster beim ersten öffnen ja auch an der richtigen Stelle öffnen, aber wenn ich es zu mache über den Befehl

    Action = caFree()

    und dann in der Form1 nochmal auf den Button drücke um das Fenster anzuzeigen, dann öffnet es sich wie beschrieben verschoben! 😕



  • void __fastcall TMain::DEditClick(TObject *Sender)
    {
       PMain->Visible = false;
       FEdit->Show();
    }
    

    reicht. Und lass das "Action = caFree;" weg.



  • Hi,
    du kannst auch Eigenschaften direkt im Code setzten und nicht nur mit dem Objektinspektor!

    Alexander Sulfrian



  • Irgendwie will das alles nicht so wie ich das will. Ich zeig euch hier mal den genauen Code der Anweisungen:

    Das Hauptformular:

    void __fastcall TMain::DEditClick(TObject *Sender)
    {
            PMain->Visible = false;
            FEdit = new TFEdit(this);
            FEdit->Show();
    }
    

    Und dann die Close Variante wenn ich das 2. Formular wieder zumache:

    void __fastcall TFEdit::FormClose(TObject *Sender, TCloseAction &Action)
    {
            Main->PMain->Visible = true;
            Action = caFree;
    }
    

    Und wie gesagt, das 2. Formular ist wenn ich es aufrufe an der richtigen Stelle, wenn ich es aber schließe und aus dem 1. Formular wieder aufrufe, dann wird das 2. Formular um ein paar Stellen verschoben in dem Bereich in dem es angezeigt werden soll.



  • Hi, das mit dem Verschieben is dock kein Prob..speicher einfach die Position ab beim Schließen, mit left=MyForm->Left und top=MyForm->Top, wenn es dann wieder aufpoppt, kannst du die Position wieder an die alte Stelle setzen (wenn es sich da sonst verschiebt) MyForm->Left=left und entsprechend mit top



  • Das ist doch mal eine Idee, danke!

    Aber kann mir vielleicht noch jemand sagen wie ich den blöden Namesbalken da oben wegbekomme? Auf der Hauptform geht das, aber bei der zweiten scheint der das nicht zu wollen.

    Und das zweite war, wie kann ich verhindern das das Fenster zweimal aufgerufen wird?



  • Namesbalken? Du meinst die Titelleiste? Schau dir mal die Eigenschaft "Border" an.

    -junix



  • Original erstellt von operator:
    Und das zweite war, wie kann ich verhindern das das Fenster zweimal aufgerufen wird?

    Wie meinst du das? Was willst du verhindern?
    1. beide Fenster gleichzeitig offen
    2. eins nach dem anderen



  • Hi!

    Border habe ich mir bereits angeguckt und die 2. Form die ich per Button aufrufe, hat Border->bsNone! Also sollte die Titelleiste eigentlich ja verschwinden. Tut sie aber nicht! 😞

    Ich meine das Fenster was ich aus Form1 aufrufe, also Form2. Wie kann ich verhindern, das wenn Form2 bereits aufgerufen ist, es aus der NavBar nochmal aufgerufen wird. Praktisch muss ja dann nur überprüft werden ist Form2 auf, wenn ja dann nicht nochmal öffnen. Aber wie geht das?

    Danke für die Hilfe schonmal!

    operator 🕶



  • Wenn du meinen Anweisungen nachgegangen wärst, dann hättest du das Problem jetzt nicht. Das macht mich schon wieder etwas sauer. :o
    Wenn du eine neue Form in der IDE erstellst, dann wird diese standardgemäß bei Programmstart geöffnet mit Visible = false. Sie ist zwar da - nur unsichtbar. Das kannst du in den Projektoptionen unter "Formulare" ändern. Aber wozu - das ist doch genau das, was du willst. Du brauchst kein new und kein "Action = caFree". Wenn du die Form anzeigen willst schreibst du eben einfach nur "Form2->Show();". Wenn dann die Form wieder geschlossen wird, ist sie immernoch da, nur eben unsichtbar. Kapiert?



  • Ahh, jetzt versteh ich was du meinst! Nicht sauer sein! :p

    Aber wie bekomme ich jetzt die Titelleiste weg?

    Borderstyle steht auf bsNone!



  • Bist du sicher, dass du den BorderStyle auch bei der richtigen Form gesetzt hast?

    Probier das am Besten mal an einen simplen Testprojekt aus. Eigentlich kann man da nichts falsch machen, und bsNone beseitigt die Titelleiste zuverlässig, auch bei sekundären Forms.



  • Ja, bin mir sicher! Deswegen wundert es mich ja auch so. Wenn ich den BorderStyle bei der Form1 z.B. änder, dann geht da die Titelleiste auch weg, aber bei der 2. will das einfach nicht funktionieren.



  • Funktioniert hier (BCB6/WinXP) problemlos. Welche Windows-/BCB-Version verwendest du? Hast du es mit einem unabhängigen Testprojekt probiert?



  • Ich habe Win2k und benutze den BCB 6 Prof.

    Habe das noch nicht an einem anderen Projekt ausprobiert. Da fehlt mir derzeit leider die Zeit zu! 😞

    Aber ich werde es sofort tun wenn ich endlich mal wieder Zeit finde. Derzeit habe ich nicht mal die Zeit an meinem Vokabeltrainer weiter zu arbeiten über den wir hier die ganze Zeit schreiben.

    operator 🕶



  • ich bin mir ziemlich sicher, das er eine MDI-anwendung schreibt. da werden formulare beim öffnen standardmässig immer etwas verschoben und man kann beim MDIChild die titelleiste nicht ausblenden. man kann die BorderStyle auf bsNone oder bsGanzNone 😉 einstellen, spielt bei MDI keine rolle. wenn meine vermutung richtig ist, verstehe ich nicht, warum er nicht einfach ein Panel nimmt, und Visible ändert?


Anmelden zum Antworten