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


Автор: Aline 31.1.2006, 10:38
Привет!
Ещё такой вопрос: есть две формы. Из одной формы нажатием на кнопочку вызывается вторая форма.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *p = new TForm2(this);
p->ShowModal();
delete p;
}

В Form2 заданы какие-то определенные размеры в ObjectInspector. После её вызова, размер формы изменяется на какой-то то ли предустановленный, то ли ещё какой-то, но не тот который был задан. Что происходит?


Это можно обойти конечно, задавая размеры формы при OnShow Form2, но это неудобно.

Автор: Neitron 31.1.2006, 10:43
Во первых я думаю, что в твоем случае можно даже делать так
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->ShowModal();
}


Ну а если ты все таки хочешь динамически создать форму, делай так
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
       TForm2 * p;
       Application->CreateForm(__classid(TForm2),&p);
       p->ShowModal();
       delete p;
}

Автор: Aline 31.1.2006, 13:27
Neitron
Дело в том, что с показом формы нет никаких проблем, проблема только с размерами. Причем интересно, что тоже самое дело на другой машине: всё нормально. У меня есть проект, в котором таким образом вызывается достаточно много форм разных размеров и я с такой проблемой не сталкивалась. А тут парень попросил помочь организовать вызов форм у него в проекте, стали делать и появилась такая ерунда с размерами

Автор: Neitron 31.1.2006, 14:06
Я же показал.
Вот так создовай форму
Код

TForm2 * p;
       Application->CreateForm(__classid(TForm2),&p);


Автор: Romikgy 31.1.2006, 14:12
Ну так и сделай
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{TForm2 *p = new TForm2(this);
p->heigth=число;
p->width=число;
p->ShowModal();
delete p;}

Автор: Vyacheslav 31.1.2006, 16:30
Посмотрите у него как
1)какой у него устанвлен размер шрифтов в системе
Скорее всего у него стоит высокое разрешения и выбран удобный(для него) размер шрифта smile

Попробуте поставить поставить у формы Scaled = false

Автор: Aline 31.1.2006, 16:34
Я думаю, что тему можно закрыть. Это по-видимому какие-то глюки с компом или с Билдером, посколько при компилляции с n-раза когда были опробованы разные варианты вызова формы, наконец стало работать всё нормально. :-)
При том, что на моем компьютере всё работало нормально и с первого раза
Всем спасибо :-)

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