Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > MDI и проблема с чайландами


Автор: HappyLife 23.11.2006, 14:06
Создаю MDI приложение....

По кнопочке создается несколько дочерних окон. Все ок, они двигаются активируются, деактивируются. Вообщем порядок.
Добавляю в одно из дочерних окон, любой элемент, например TButton.
Дочернее окно с батоном двигается и порядок.
Активирую другое окно, без элементов.... Двигается все порядок, но когда пытаюсь снова активировать окно с TButton выскакивает сообщение 
"Cannot focus a disabled or invisible window"
Второй день бодаюсь с этой проблемой.

Автор: Vyacheslav 23.11.2006, 17:32
Цитата(HappyLife @  23.11.2006,  14:06 Найти цитируемый пост)
Активирую другое окно, без элементов.... Двигается все порядок, но когда пытаюсь снова активировать окно с TButton выскакивает сообщение 

А пояснить? Каким образом  активируете окно? Оно до момента активации не видимо?
Просто проблема не понятна. Сколько раз делал такие приложения, но на подобгую ршибку не натыкался

Автор: HappyLife 24.11.2006, 15:17
Весь код.

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainForm.h"
#include "modw.h"
//---------------------------------------------------------------------------
TGenForm *GenForm;
ClassModules * Modules;
//---------------------------------------------------------------------------
__fastcall TGenForm::TGenForm(TComponent* Owner)
        : TForm(Owner),
        Reg(new TRegistry())
{
        Modules = new ClassModules(this);
        Modules->LoadModules();
        FillMenu();
}

//---------------------------------------------------------------------------

void __fastcall TGenForm::FillMenu()
{
        int i = 0;
        while(ClassModule * Module = Modules->GetModule(i))
        {
                ++i;
                TForm * Form = new TForm(this);
                Form->Parent = this;
                Form->FormStyle = fsMDIChild;
                Form->Caption = Module->GetModuleName();
                Form->DefaultMonitor = dmMainForm;
                Form->Tag = i;
                //TsSkinProvider * sp = new TsSkinProvider(Form); Если это поставить, то вываливается сообщение No MDI


                TButton * Button = new TButton(Form);
                Button->Parent = Form;
                Button->Caption = "ssssssssssss";
        }
}


DFM файл

Код

object GenForm: TGenForm
  Left = 205
  Top = 182
  Width = 696
  Height = 480
  Caption = 'GTK Main'
  Color = 14215660
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  FormStyle = fsMDIForm
  Menu = MainMenu
  OldCreateOrder = True
  Position = poDesktopCenter
  PixelsPerInch = 96
  TextHeight = 13

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)