Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Frehauf
0 / 0 / 4
Регистрация: 09.11.2014
Сообщений: 64
#1

"Дочернее окно" - C++ Builder

01.11.2015, 21:18. Просмотров 820. Ответов 24
Метки нет (Все метки)

Помогите это реализовать. Буду очень благодарен.
"Нажатие клавиши мыши на кнопке "Дочернее окно" приводит к появлению пустого окна с таким же
заголовком в пределах главного и не может быть перемещено за его пределы."
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 21:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос "Дочернее окно" (C++ Builder):

MessageBox - чтобы вместо "Yes" и "No" показывало "Да" и "Нет"
Доброе время суток, как переделать int Key= Application->MessageBox(L"Text",...

Ищу исходник игры на С++, на подобие "Солитер", "Быки и коровы", "Змейка" и т. д
Нужен код игры на С++, на подобие "Солитер", "Быки и коровы", "Змейка" и т. д....

Открыть папку "мой компьютер", "панель управления", "program files"
Нужно открыть папку "мой компьютер", "панель управления", "program files"

Ошибки: "Failed to allocate SAVEmem" и ""bcc32" exited with code 1."
Помогите пожалуйста с этими ошибками. Такое не только у меня, полазил по разным...

Найти частоту встречаемости следующих друг за другом символов "А", "В"и "С".
В заданном тексте найти частоту встречаемости следующих друг за другом...

Как сделать окно "поверх всех окон"...
Как сделать так, чтобы окно содавалось поверх других окон?

24
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 10:29 #2
Ну на код кнопки поставить просто создание формы, а родителя для нее сделать форму создателя.

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TForm *form= new TForm (this);
form->Parent=Form1;
form->Caption=Form1->Caption;
form->Show() ;
}
//---------------------------------------------------------------------------
0
nick42
Практикантроп
4216 / 2249 / 379
Регистрация: 23.09.2011
Сообщений: 4,821
02.11.2015, 10:41 #3
Цитата Сообщение от Frehauf Посмотреть сообщение
"Нажатие клавиши мыши на кнопке "Дочернее окно" приводит к появлению пустого окна с таким же
заголовком в пределах главного и не может быть перемещено за его пределы."
1. У главного окна (Form1) установить FormStyle fsMDIForm;
2. Добавить (New... Form) форму Form2 и установить ей FormStyle fsMDIChild;
3. Добавить на первую форму кнопку "Дочернее окно" и написать в обработчике нажатия__
C++
1
2
3
4
5
   if(!Form2)
   {
     Application->CreateForm(__classid(TForm2), &Form2);
     Form2->Caption = Form1->Caption;
   }
(в свойствах проекта - Project Options форма2 должна быть в зоне Forms-Avialable forms... перенести ее туда; а Unit1.cpp должна содержать строчку #include "Unit2.h").
0
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 10:44 #4
Кстати на эту же тему, может кто знает как это побороть.
Если создавать форму данным способом и кинуть на нее к примеру TEdit....то в последствии с этим компонентом будут проблемы с фокусом.
К примеру что бы хотя бы просто выделить компонент нужно осуществить двойной клик (с ним не комфортно работать).
0
nick42
Практикантроп
4216 / 2249 / 379
Регистрация: 23.09.2011
Сообщений: 4,821
02.11.2015, 11:49 #5
Dinkin, если добавить
C++
1
2
    Form1->FormStyle = fsMDIForm;
    form->FormStyle = fsMDIChild;
то проблемы такой не будет, зато появится другая: "убить" дочернюю форму нельзя (она просто сворачивается).
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 11:53 #6
Dinkin, http://www.cyberforum.ru/cpp-builder/thread1014069.html#post5368301
1
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 12:35 #7
volvo, Ваш способ не помог
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 12:39 #8
Прекрасно помогает, не знаю, что там ты нахимичил:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button30Click(TObject *Sender)
{
    TForm *form = new TForm(this);
    ::SetParent(form->Handle, Form1->Handle);
    // form->Parent=Form1;
    form->Caption = Form1->Caption;
 
    TEdit *ed = new TEdit(form);
    ed->Parent = form;
    form->Show();
}
Можно установить фокус в Edit, без проблем. Что опять не так?
0
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 12:44 #9
volvo,
А Вы попробуйте создать два Edita (что бы попеременно првоерить фокус)...введите в них текст, а после отредактируйте с середины текста
0
nick42
Практикантроп
4216 / 2249 / 379
Регистрация: 23.09.2011
Сообщений: 4,821
02.11.2015, 12:52 #10
Dinkin, вот в таком варианте все как надо (у меня)__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   TForm *form;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if(!form) {
    form= new TForm(this);
    ::SetParent(form->Handle, this->Handle);
    form->Caption=Form1->Caption;
 
    TEdit *edit31 = new TEdit(form);
    edit31->Parent=form;
    edit31->Name="Edit31";
    edit31->Left = 40; edit31->Top = 64;
 
    TEdit *edit21 = new TEdit(Application);
    edit21->Parent=form;
    edit21->Name="Edit21";
    edit21->Left = 40; edit21->Top = 40;
  }
   form->Show() ;
}
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 12:53 #11
Dinkin, И что? Работает, как и должно. Видео записать?
0
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 12:58 #12
nick42, Я делаю все тоже самое, только на вкладке TPageControl. Текст получается ввести корректно, но если я хочу его отредактировать, то не возможно кликнуть по центру текста, он или выделяет весь текст(по двойному клику) или же фокус становиться на конц строки (к сожалению на раб нечем видео записать =), так бы продемонстрировал, а на скринах не понятно).
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 13:00 #13
То есть, создается форма, на ней PageControl, на ней вкладка, и в этой матрешке еще и 2 эдита? Динамически?
0
nick42
Практикантроп
4216 / 2249 / 379
Регистрация: 23.09.2011
Сообщений: 4,821
02.11.2015, 13:04 #14
Цитата Сообщение от volvo Посмотреть сообщение
То есть, создается форма, на ней PageControl, на ней вкладка, и в этой матрешке еще и 2 эдита? Динамически?
... Dinkin ... извращенец
0
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 13:04 #15
volvo, все верно..вот так вот выглядит ..
0
Миниатюры
"Дочернее окно"  
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 13:04 #16
Даже и так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::Button30Click(TObject *Sender)
{
    TForm *form = new TForm(this);
    ::SetParent(form->Handle, Form1->Handle);
    form->Caption = Form1->Caption;
 
    TPageControl *pc = new TPageControl(form);
    pc->Parent = form;
    TTabSheet *ts = new TTabSheet(pc);
    ts->PageControl = pc;
    ts->Caption = "hello";
 
    TEdit *ed1 = new TEdit(ts);
    ed1->Parent = ts;
    TEdit *ed2 = new TEdit(ts);
    ed2->Parent = ts;
    ed2->Top = 30;
    form->Show();
}
- все равно не получается воспроизвести описанное. Все прекрасно работает, как и предполагалось.
1
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 13:11 #17
volvo,
Почти только форма создается дочеркой от вкладки у меня.
То есть такая эрархия
Главная форма-> На ней TPageContl-> На нем вкладка-> На вкладке форма с TEdit
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 13:21 #18
Dinkin, не представляешь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    TForm *form = new TForm(TabSheet1);
    ::SetParent(form->Handle, TabSheet1->Handle);
    form->Caption = Form1->Caption;
 
//    TPageControl *pc = new TPageControl(form);
//    pc->Parent = form;
//    TTabSheet *ts = new TTabSheet(pc);
//    ts->PageControl = pc;
//    ts->Caption = "hello";
 
    TEdit *ed1 = new TEdit(form);
    ed1->Parent = form;
    TEdit *ed2 = new TEdit(form);
    ed2->Parent = form;
    ed2->Top = 30;
    form->Show();
тоже, блин, работает прекрасно. Я прям не знаю, что и делать теперь
1
Dinkin
646 / 444 / 116
Регистрация: 31.05.2013
Сообщений: 2,270
Записей в блоге: 2
02.11.2015, 13:35 #19
volvo, У меня в вашем варианте в обще Едиты не доступны для редактирования...

вот весь код программы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void __fastcall TForm2::c1Click(TObject *Sender)
{
  TTabSheet *TabSheet = new TTabSheet(PageControl1);
  TabSheet->Parent = PageControl1;
  TabSheet->Caption = "Вкладка ";
  TabSheet->PageControl = PageControl1;
 
 
  TForm * f= new TForm(PageControl1->ActivePage->Handle);
  ::SetParent(f->Handle, PageControl1->ActivePage->Handle);
  f->Parent=PageControl1->ActivePage;
  f->Caption="11111";
 
  TEdit *ed1 = new TEdit(f);
  ed1->Parent = f;
  ed1->Text="11111";
 
  TEdit *ed2 = new TEdit(f);
  ed2->Parent = f;
  ed2->Top = 30;
  ed2->Text="2222";
 
 
  f->Show();
 
}
//---------------------------------------------------------------------------
0
Вложения
Тип файла: rar TestPage.rar (61.6 Кб, 6 просмотров)
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
02.11.2015, 13:45 #20
11-я строка на фиг нужна, объяснишь?
1
02.11.2015, 13:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2015, 13:45
Привет! Вот еще темы с решениями:

Окно с полем для ввода и одной кнопкой "ОК"
Вобщем суть такая надо что бы выскакивалло окно с полем для ввода данных и...

Здраствуйте!Как вывести настройки программы в отдельное и окно,и создать оконо "О программе"?
Мне хотя бы примерный код,чтобы можно было вывести все настройки программмы в...

Не приходит сообщение "развернуть окно"
Исправляю чужую программу, есть проблема - не приходит сообщение "развернуть...

"Закрыть окно" убрать функцию
Доброго времени суток, только что гуглил, нечего не нашел, собственно вопрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru