Announcement

Collapse
No announcement yet.

BorderStyle = bsNone bei MDIChild

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • BorderStyle = bsNone bei MDIChild

    Servus,

    wenn ich ein MDIChild habe, kann ich nicht BorderStyle = bsNone setzen. Gibt es eine Möglichkeit, dies zu realisieren, ohne in der VCL Änderungen zu machen?

    Danke!

    Ciao

    Benni

  • #2
    Schwierig, denn grundsätzlich kennt Windows keine MDI Childs ohne Border. Man könnte aber versuchen zu tricksen. Dazu muß die Message wm_NCCalcSize überschrieben werden und der darin berechnete Clientbereich des Fensters auf de NC Bereich expandiert werden.<br>
    Ob dies funktioniert habe ich praktisch noch nicht getestet, von der Logik her ist es aber der richtige Weg.

    Gruß hage

    Comment


    • #3
      Ich habs durch ein bischen Tricksen in der Forms.pas hingekriegt!

      In der Funktion TCustomForm.CreateParams findet man folgende Zeile im Case bei bsSizeable:

      <pre>
      Style := Style or (WS_CAPTION or WS_THICKFRAME);
      </pre>

      Das hab ich durch folgenden Code ersetzt:

      <pre>
      if (Self Is TBISForm) Then Begin
      If Not (Self As TBISForm).ExpertMode Then
      Style := Style or (WS_CAPTION or WS_THICKFRAME);
      End Else
      Style := Style or (WS_CAPTION or WS_THICKFRAME);
      </pre>

      Jetzt wird erst geprüft, ob das Formular von meiner Klasse ist und wenn ja, wird der Rahmen und die Caption nur gezeichnet, wenn die Property ExpertMode False ist.

      Wenn man's erstmal raushat, ist es doch recht einfach...

      Leider musste ich doch die Forms.pas editieren

      Comment


      • #4
        Hi Benni,<br>
        reicht's denn nicht in TBISForm CreateParams zu überschreiben?
        <br>BTW: Wenn du ein Objekt mit "is" typgeprüft hast, reicht hinterher ein "normaler" Cast a la "TBISForm(frm)" anstatt "frm as TBISForm". "as" wiederholt nämlich exakt die gleiche Typprüfung, die du mit "is" schon erledigt hast.
        <p>Ciao, Uli

        Comment


        • #5
          Danke für den Hinweis! Das as auch is ausführt (was für ein Deutsch), hab ich nicht gewusst..

          Comment


          • #6
            as ist die gleiche Abfrage wie is, nur das im Falle eines Fehlschlagens, eg. is = False, eine Exception ausgelösst wird

            Comment

            Working...
            X