Announcement

Collapse
No announcement yet.

Childfenster hat keinen Fokus

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

  • Childfenster hat keinen Fokus

    Hallo,

    ich habe ein Hauptformular mit einer
    Panelkomponente. Während der Laufzeit,
    lasse ich mir Childformulare (die ich zur
    Entwicklungszeit zusammengabaut habe)
    dynamisch auf dem Panel des
    Hauptformulares erzeugen. Die Titelzeile
    der Childforms ist immer grau, die
    Komponenten (Buttons) kann man an
    clicken, d.h. sie reagieren. Nur ein
    Editfeld nimmt keine Eingaben an. Frage,
    wie kann ich dem Childform den Fokus
    geben, damit all seine Komponenten
    bedienbar sind ?

  • #2
    Hallo Michael,

    ich arbeite in meiner Anwendung auch nur mit ChildForms, aber ein derartiges Problem ist mir noch nicht untergekommen.

    Wie bringst Du Dein Form denn dazu, ein Child des MainForm zu sein?

    Grüße

    Juli

    Comment


    • #3
      Hallo Julia,

      ich weise bei Create einen Owner und einen Parent zu.<br>Als Parent dient ein TPannel auf dem Hauptformular. Ich häge ein Paar Codeschnipsel mal an:<br>
      <PRE>{******************************************** **************************************}
      unit ChildForm;

      interface

      uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;

      type
      TfoChildForm = class(TForm)
      private
      { Private declarations }
      FTempParent : TWinControl;
      protected
      procedure CreateParams (var Params : TCreateParams); override;
      procedure Loaded; override;
      public
      { Public declarations }
      constructor Create (AOwner : TComponent; AParent : TWinControl); reintroduce; overload;
      destructor Destroy; override;
      end;

      var
      foChildForm: TfoChildForm;

      implementation

      ...

      {************************************************* *********************************}

      constructor TfoChildForm.Create(AOwner: TComponent; AParent: TWinControl);
      begin

      FTempParent := AParent;
      inherited Create(AOwner);
      end;

      {************************************************* *********************************}

      procedure TfoChildForm.CreateParams(var Params: TCreateParams);
      begin
      inherited CreateParams(Params);
      Params.Style := Params.Style or WS_CHILD;
      end;

      {************************************************* *********************************}

      destructor TfoChildForm.Destroy;
      begin
      inherited destroy;
      end;

      {************************************************* *********************************}

      procedure TfoChildForm.Loaded;
      begin
      inherited Loaded;
      Align := alClient;
      BorderStyle := bsSizeable;
      BorderIcons :=[biSystemMenu];
      WindowState := wsNormal;
      Parent := FTempParent;
      Position := poDefault;
      end;
      <\PRE>

      Gruß
      Michae

      Comment


      • #4
        Hallo Michael,

        nach einigem Experimentieren:

        Es scheint am BorderStyle zu liegen.

        Steht bei mir auf bsnone, dann gibts allerdings keine Extra Kopfzeile für das Childform, andererseits, wenn es die geben soll, wozu ist es dann ein childform und nicht einfach nur ein modales form, das aufs panel plaziert wird?

        Grüße

        Juli

        Comment


        • #5
          Hi Julia,

          danke für den Tip. Es klappt wunderbar.
          Das die Kopfzeile nicht angezeigt wird
          ist nicht weiter schlimm. Es taucht aber
          eine neue Frage/Problem auf:<br>
          Wenn sich die Größe des Hauptformulars
          ändert, so das die Komponenten im
          Childformular nicht mehr 'draufpassen',
          erscheinen keine Scrollbars im Child.
          Woran kann das liegen und wie kann das
          umgehen ?

          Gruß Michae

          Comment

          Working...
          X