Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2015, 21:43   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию Создание дочерней формы в границах Panel родительской. Делфи

Доброго времени суток.
Пишу один проектик и никак не получается впихнуть дочернюю форму в границу Panel3 родительской. Даже просто пытался создать, что б не выходила за границы не компонента, а формы - ничего не получилось!
Собственно код родительской:
Код:
unit Unit1;
interface

uses Vcl.Menus, System.Classes, Vcl.Forms, Vcl.Controls, Vcl.ExtCtrls,
  Vcl.StdCtrls, Vcl.CheckLst, SysUtils, Vcl.Dialogs, Vcl.Buttons, child2;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    Panel1: TPanel;
    ListBox1: TListBox;
    OpenDialog1: TOpenDialog;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Panel3: TPanel;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  FormArray : array of TForm2;

implementation
{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var I : integer;
begin
  if OpenDialog1.Execute then
      for I := 0 to OpenDialog1.Files.Count - 1 do
        Form1.ListBox1.Items.Add(ExtractFileName(Form1.OpenDialog1.Files.Strings[i]));
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  SetLength(FormArray, Length(FormArray)+1);

  FormArray[High(FormArray)] := TForm2.Create(Application); //Form1.Panel3 //Panel3 //Form1 //nil //Self
  FormArray[High(FormArray)].Enabled := True;

end;
end.
FormStyle - fsMDIForm
Дочерняя пока кода не имеет, но это не суть важно.
Вот как я написал, то форма дочерняя создаётся по нажатию кнопки столько раз сколько мне нужно.
Если я прописываю дочерней форме FormStyle - fsMDIChild, то она вообще отказывается создаваться. Никаких ошибок не выдает вообще. Просто не создается.
Хелп ми. Как сделать чтоб дочерняя форма не выходила за границы Panel?
Artsiom вне форума Ответить с цитированием
Старый 01.08.2015, 22:10   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2:=TForm2.Create(Self);
  Form2.Parent:=Self;
  Form2.Left:=Panel1.Left;
  Form2.Top:=Panel1.Top;
  Form2.Width:=Panel1.Width;
  Form2.Height:=Panel1.Height;
  Form2.Show;
end;
И ни каких MDIForm. Это вообще с другой оперы. Переменную Form2 не использовать если несколько таких форм будет создаваться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 01.08.2015 в 22:14.
Аватар вне форума Ответить с цитированием
Старый 01.08.2015, 22:55   #3
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
Form2.Parent:=Self;
Спасибо! Только тут всё же не Self, а Panel.
Код:
FormArray[High(FormArray)] := TForm2.Create(Self);
FormArray[High(FormArray)].Parent := Form1.Panel3;
FormArray[High(FormArray)].Show;
А зачем мы указываем положение от края/верха, а так же ширину и высоту, если это убрать ничего же не поменялось?

О Боже, а можно что ни будь сделать, чтоб при создании новой формы, она не мигала. Блин, создал 11 форм и чуть не

Последний раз редактировалось Artsiom; 01.08.2015 в 23:04.
Artsiom вне форума Ответить с цитированием
Старый 01.08.2015, 23:05   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И работает с панелью в качестве родителя? Сомневаюсь, сильно, хотя... ну и хрен с ней. Указывал потому, что родитель форма у меня, а не панель
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.08.2015, 23:11   #5
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Ну, пока работает) а вот мигающее окно это очень жутко.


А, всё. Сделал.
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
 AnimateWindow(Handle,500,AW_BLEND);
end;
Artsiom вне форума Ответить с цитированием
Старый 02.08.2015, 02:20   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Осталось узнать, зачем форма внутри панели.
и скриншот покажь.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.08.2015, 09:43   #7
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Господа, автор в частности, у меня на работе есть такая задача и решал её мой коллега. В принципе ответ автору дан господином Аватаром но с ордлним уточнением.
Если панельнаходится на чём то ещё (например в TTabSheet как на работе) пришлось в качестве "парента" выставлять форму и ограничивать размеры панелью вклинивая куски кода в OnResize.
Это такая особенность использования
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 02.08.2015, 14:42   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

А форм2.даблбуфер:=истина пробовали?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 02.08.2015, 14:53   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Автор, ты такого квазимоду мутишь?
Вложения
Тип файла: zip форма в панели.zip (198.1 Кб, 59 просмотров)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 02.08.2015, 15:58   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Тип файла: zip форма в панели.zip (198.1 Кб, 0 просмотров)
Даёшь КОНТЕСТ!!! Чур левый говнокод не юзать!!11
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие родительской формы[Visual C#] spectrum988 Помощь студентам 2 08.02.2015 22:00
Запретить появление родительской формы Random2 Общие вопросы Delphi 9 12.01.2015 18:54
как сделать кнопку BitBtn, на одной дочерней форме, не активной при закрытии другой дочерней формы? yds-09 Общие вопросы Delphi 18 30.09.2013 20:42
Обновление дочерней формы Nulex Microsoft Office Access 1 05.09.2010 21:51
Обновление Родительской формы denver_ua Microsoft Office Access 0 26.03.2009 16:15