Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фреймы, Изменить содержание 
:(
    Опции темы
TForumUser
Дата 12.6.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Итак, здрасте!
Я создал 2 фрейма (File -> New -> Frame) (Frame2 и Frame3) и вставил один из них на форму. Автоматически на форме создасля Frame21, представляющий собой Frame2. Теперь вопрос: могу ли я програмно изменить Frame21, чтобы он отобразал Frame3?
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
pseud
Дата 12.6.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Код

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FFrame: TFrame;
    FFrame2: TFrame2;
    FFrame3: TFrame3;
    procedure SetFrame(const Value: TFrame);
    { Private declarations }
  public
    property Frame: TFrame read FFrame write SetFrame;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Frame := FFrame2;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Frame := FFrame3;
end;

procedure TForm1.SetFrame(const Value: TFrame);
begin
  if FFrame <> nil then
    FFrame.Parent := nil;
  FFrame := Value;
  FFrame.Parent := Panel1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FFrame2:= TFrame2.Create(Self);
  FFrame3:= TFrame3.Create(Self);
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
TForumUser
Дата 12.6.2008, 13:48 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



pseud, хм спасибо, но я уже сам сделал, правда немного иначе. Если кому интересно, могу показать свой ватиант

Код
//Сначала создаем 2 фрейма File -> New -> Frame (Frame1 и Frame2)
//на форму их вставлять не обязательно, далее
uses uFrame1, uFrame2; //модули с фреймами
type
 TForm1 = class(TForm)
  ...
  FFrame: TFrame;
  procedure SetFrame1;
  procedure SetFrame2;
  ...
implementation

procedure SetFrame1;
begin
 if FFrame <> nil then FFrame.Destroy;
 FFrame := TFrame1.Create(self);
 FFrame.Parent := Form1;
 FFrame.Top := 16;
 FFrame.Left := 8;
 FFrame.Height := 201;
 FFrame.Width := 177;  //или другие значения
end;

procedure SetFrame2;
begin
 if FFrame <> nil then FFrame.Destroy;
 FFrame := TFrame2.Create(self);
 //аналогично
end;

procedure Usage;
begin
 SetFrame1; //показать фрейм1
 SetFrame2; //показать фрейм2
end;
вот smile 
Можно доработать, добавив в процедуры параметры, но в рамках моей задачи и этого хватит

Это сообщение отредактировал(а) TForumUser - 12.6.2008, 14:02
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
pseud
Дата 12.6.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(TForumUser @  12.6.2008,  13:48 Найти цитируемый пост)
Если кому интересно, могу показать свой ватиант

ИМХО - плохой вариант.
1. а теперь тебе надо опять Frame1 на поверхность вывалить и что ты будешь вызывать? опять SetFrame1?
2.  FFrame.Parent надо бы назначать в последнюю очередь, чтоб не наблюдать мерцания формы.

Цитата(TForumUser @  12.6.2008,  13:48 Найти цитируемый пост)
При компиляцыи выскакивает ошибка

с удовольствием бы помог, вот только твой код копи пастом не заюзать
предположу что ты FFrame в published запихал.



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
TForumUser
Дата 12.6.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Цитата(pseud @  12.6.2008,  14:02 Найти цитируемый пост)
предположу что ты FFrame в published запихал.
ну да, так и сделал. Исправил, сунув в private, помогло smile
А если сделать одну процедуру с парамертами, или придумать свойство, то и мой код неплохо будет смотреться


Это сообщение отредактировал(а) TForumUser - 12.6.2008, 14:11
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
pseud
Дата 12.6.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(TForumUser @  12.6.2008,  14:06 Найти цитируемый пост)
А если сделать одну процедуру с парамертами, или придумать свойство, то и мой код неплохо будет смотреться

т.е. ты имеешь ввиду доточить напильником твой код... до моего  smile 
зачем? 
ведь уже есть мой код  smile 


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
TForumUser
Дата 12.6.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Будет не совсем твой. Твой код создает на форме все фреймы в начале и присваивает их основному. Мой - динамически пересоздает один, не создавая дополнительных.
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.