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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Содержимое формы в tpanel 
:(
    Опции темы
AnacRon
Дата 12.6.2008, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток! Значить относительно недавно появилась необходимость сделать такой вариант: имеется с десяток другой форм, и соответственно главная, на которой расположены ListBox  с перечнем индексов форм, Panel1 в рамки которой хотелось бы выводить содержимое форм (я так подозреваю что здесь надо будет использовать не TForm a TPage). Вот и при выборе нужной строки в ListBox в Panel1 рисовать содержимое форм.
кстати будет интересен совет и по поводу возможности пополнения количества списка форм (так думаю что путем копирования DLL c  формой внутри). чисто технически интересно как это осуществить...
Свои догадки имеются но настолько деревянные что и догадками назвать то сложно хотелось бы мнение проффи...  smile 
заранее спасибо!
PM   Вверх
pseud
Дата 13.6.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(AnacRon @  12.6.2008,  23:03 Найти цитируемый пост)
с перечнем индексов форм


конкретизируй, что за индексы.

Цитата(AnacRon @  12.6.2008,  23:03 Найти цитируемый пост)
Panel1 в рамки которой хотелось бы выводить содержимое форм


вот пример, если в листбоксе храниться список имен форм связанных со ссылками на сами формы:

Код

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    FMyActiveForm: TForm;
    procedure SetMyActiveForm(const Value: TForm);
    { Private declarations }
  public
    property MyActiveForm: TForm read FMyActiveForm write SetMyActiveForm;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.AddItem(Form2.Name, Form2);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex > -1 then
    MyActiveForm := TForm(ListBox1.Items.Objects[ListBox1.ItemIndex]);
end;

procedure TForm1.SetMyActiveForm(const Value: TForm);
begin
  if FMyActiveForm <> nil then
  begin
    FMyActiveForm.Parent := nil;
    FMyActiveForm.Visible := False;
  end;
  FMyActiveForm := Value;
  FMyActiveForm.Align := alClient;
  FMyActiveForm.Parent := Panel1;
  FMyActiveForm.Visible := True;
end;



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


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



при использовании форм в DLL код усложнится...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AnacRon
Дата 15.6.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(pseud @ 13.6.2008,  09:19)
конкретизируй, что за индексы.

Суть вопроса Вами было понята верно! пример приложенный именно то, что я хотел! спасибо smile 

Цитата(MetalFan @ 13.6.2008, 10:10)
при использовании форм в DLL код усложнится...

тоеть есть варианты проще? просто мой сорец сейчас реализует 20 задач! затем если понадобится мне добавить еще хотя бы парочку это мне придется перекомпилить всю рогу и заменить у человека который ее уже использует.. не всегда удобно... тоесть принцип ядра и плагинов  интересен... пока гугль мне ничего по этому поводу стоящего не подсказал
PM   Вверх
AnacRon
Дата 15.6.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile спасиб ребятки! похоже выходные не прошли даром! похоже до етого момента или я с гуглем плохо дружил или просто в глаза не видел хорошей штуки drkb
на 200 шагов продвинулся! ссори за оФФтоп
PM   Вверх
MetalFan
  Дата 15.6.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



накидал тут за полчаса простой пример с плагинами и формами в них.
если интересно - в аттаче.


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  DllPlugs.rar 9,97 Kb


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AnacRon
Дата 17.6.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(MetalFan @ 15.6.2008,  22:17)
накидал тут за полчаса простой пример с плагинами и формами в них.
если интересно - в аттаче.

спасибо я примерно так и начал делать, но камней подводных нарыл с которыми после примера разобрался

теперь совсем не могу сообразить в другом немного.... на первой форму рисую
Код

procedure TForm1.ShowForm2;
var
  f : TForm2;
begin
  f := TForm2.Create (Self);
  f.Parent := Self;
  f.Show;
end;

а вот проблема в том что события клавы не Form2 не обрабатывает... думал не беда и обработаю в Form1 при условии активности Form2, но не тут-то было... выдает ошибку Access violation при обращении к объектам второй формы
Код

      Form2.Label1.Caption := 'текст';

PM   Вверх
pseud
Дата 17.6.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



AnacRon,  smile 
ай ай ай
ну кто ж так делает?

Цитата(AnacRon @  17.6.2008,  09:32 Найти цитируемый пост)
Form2.Label1.Caption := 'текст';


а создал ли ты Form2
ведь в твоем примере видно что создал ты лишь переменную 
Код

f : TForm2;

тем более локальную, о которой никто за пределами процедуры не знает
а если ты хочешь работать с перемнной Form2, то позаботься о ее создании
повторяю:
Form2 - это перемнная класса TForm2


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


Новичок



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

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



pseud, Form2 точно создана! а на счет локальности я и не подумал даже верней не заметил.... спасибо
стыдно за невнимательность....
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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