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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как копировать окна 
:(
    Опции темы
Andreyzpr
Дата 21.4.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как вот например в чатах делают, что когда присылают сообщения на них открываються одинаковые окна, притом если пришлют 10 сообщений, то откроеться 10 окон... Как они их создают???? Как можно повторять формы?
PM MAIL WWW ICQ   Вверх
maniaks1
Дата 21.4.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как понять повторять? Если ты имеешь в виду создание в реальном времени, то примерно так:

Код

procedure TForm1.Button1Click(Sender: TObject);
Var Form2:TForm;
begin
  Form2:=TForm.Create(self);
  Form2.Show
end;


естественно можно задать размеры и всё остальное...
PM MAIL ICQ   Вверх
Andreyzpr
Дата 21.4.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так подожди
А как мне на тех формах мемо например сделать и вот как в чатах что на них мемо например и на каждой разный текст?
Там вообще появляються пусыте формы
Как можно их редактировать?? или там надо на низ создавать компоненты?
PM MAIL WWW ICQ   Вверх
maniaks1
Дата 21.4.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если можно создавать формы, то можно и создавать компоненты на них.
Примерно так:

Код

procedure TForm1.Button1Click(Sender: TObject);
Var Form2:TForm; Memo1:TMemo;
begin
  Form2:=TForm.Create(self);
  Form2.Caption:='Это вторая форма';
  Form2.Show;
  Memo1:=TMemo.Create(self);
  Memo1.Parent:=form2;
  Memo1.Align:=alclient;
  Memo1.Show;
end;


Этот пример создаёт вторую форму с заголовком и растянутым на всю клиентскую область Memo.

С созданным Memo, можно работать как с обычным.
Например:
Код

  Memo1.Clear;


P.S. Можно и не один компонент на форме разместить...
PM MAIL ICQ   Вверх
Andreyzpr
Дата 21.4.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А что такое self
и че он делает?
PM MAIL WWW ICQ   Вверх
maniaks1
Дата 21.4.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Лично я плохо понимаю что такое self. Но помоему, это дополнительный(неявный) параметр.
Но тебе он не нужен.
Главное это что создаём и 
где создаём (Memo1.Parent:=form2;)
PM MAIL ICQ   Вверх
lukas
Дата 21.4.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Self - это имя формы ... можно и что угодно написать например form1 ... formN


Код

procedure TForm1.Button1Click(Sender: TObject);
Var Form2:TForm; 
Memo1:TMemo;
begin
  Form2:=TForm.Create(nil);
  Form2.Caption:='Это вторая форма';
  Form2.Show;
  Memo1:=TMemo.Create(form2);
  Memo1.Parent:=form2;
  Memo1.Show;
end;


а парент это родитель... 

Это сообщение отредактировал(а) lukas - 21.4.2007, 21:21


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Sunvas
Дата 22.4.2007, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Ребята, зачем все ручками создавать, если можно приспокойно в дизайнере это все сделать?
Код

var f:TForm2;
{......}
f:=TForm2.create(application);


Вот несколько примеров:
Код

unit Unit1;    
interface    
uses    
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    
  Dialogs, StdCtrls, Contnrs,    
  Unit2;    
type    
  TForm1 = class(TForm)    
    Button1: TButton; // кнопка "Добавить форму"    
    Button2: TButton; // кнопка "Действие с формой"    
    Edit1: TEdit;    
    procedure Button1Click(Sender: TObject);    
    procedure Button2Click(Sender: TObject);    
  private    
    FForms: TObjectList; // список форм    
    function GetForm2(Index: integer): TForm2;    
    function GetCount: integer;    
  public    
    constructor Create(AOwner: TComponent); override;    
    destructor Destroy; override;    
    function AddForm2: TForm2;  // создать новую Form2    
    procedure CloseForm2(Index: integer); // Удалить Form2 под номером Index    
    property Form2[Index: integer]: TForm2 read GetForm2; // Обращение к списку Form2    
    property FormsCount: integer read GetCount; // кол-во форм2    
  end;    
var    
  Form1: TForm1;    
implementation    
{$R *.dfm}    
constructor TForm1.Create;    
begin    
  inherited;    
  FForms := TObjectList.Create; // создаем список форм в конструкторе    
end;    
destructor TForm1.Destroy;    
begin    
  FForms.Free; // в деструкторе уничтожаем все формы и список    
  inherited;    
end;    
function TForm1.GetCount: integer;    
begin    
  result := FForms.Count;    
end;    
function TForm1.GetForm2(Index: integer): TForm2;    
begin    
  if (Index < 0) or (Index >= FForms.Count) then result := nil    
  else result := TForm2(FForms[Index]);    
end;    
function TForm1.AddForm2: TForm2;    
begin    
  result := TForm2.Create(nil);    
  FForms.Add(result);    
  result.Show; // при создании сразу показываем форму    
end;    
procedure TForm1.CloseForm2(Index: integer);    
begin    
  if GetForm2(Index) <> nil then FForms.Delete(Index); // убить форму    
end;    
// теперь все это пробуем:    
procedure TForm1.Button1Click(Sender: TObject);    
begin    
  AddForm2; // создать новую форму    
end;    
// взять последнюю созданную форму,    
procedure TForm1.Button2Click(Sender: TObject);    
begin    
  Form2[FormsCount-1].Caption := Edit1.Text; // поменять ей заголовок    
  Form2[FormsCount-1].Button1.Click;  // Нажать ей на кнопку    
end;    
end.


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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Andreyzpr
Дата 25.4.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



НУ вот если использовать код:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
form:TForm;
Button:TButton;
begin
form:=TForm.Create(self);
form.Show;
Button:=TButton.Create(self);
Button.Parent:=form;

end;

он мне создает форму а на ней бутон
А как мне теперь бутону процедуру прописать?
Ну например мне нада чтобы при нажатии на бутон выплыл ShowMessage
Что сделать чтобы он процедуру выполнял?
PM MAIL WWW ICQ   Вверх
Bose
Дата 25.4.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



Andreyzpr, учи самые основы. 

А на твой вопрос ответ вкратце таков: 

В дизайнере форм создаётся класс формы, со всеми контролами и обработчиками событий. А в run-time ты для каждой новой формы будешь создавать свой экземпляр.
PM MAIL WWW Skype   Вверх
lukas
Дата 25.4.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Andreyzpr

ну например создал новую форму, на ней сразу же создал все кнопки и все что тебе надо, присвоил события... ну примерно так,..

Создали форму...

Код

procedure TForm1.Button1Click(Sender: TObject);
var
form:TForm;
Button:TButton;
begin
form:=TForm.Create(self);
form.Show;

Button:=TButton.Create(form); // лучше создавать на самой форме
Button.Parent:=form;
button.tag:=1;  // или любое другое число, это как захочешь.. 

Button.OnClick:=Form1.button1.OnClick // или любое другое событие... это событие опишу ниже...
end;



Обработчик Form1.button1.OnClick:

Код

....
begin
If TButton(sender).tag=1 then close;
If TButton(sender).tag=2 then hide;

// и так далее...
....



Ну вот и все собственно...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
MetalFan
Дата 26.4.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(lukas @  21.4.2007,  21:20 Найти цитируемый пост)
Self - это имя формы ... 

не совсем верно... 
Self в контексте метода класса - это указатель на экземпляр класса.


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


Бывалый
*


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

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



lukas 
Вот смотри
У меня есть на созданой форме кнопка.
При нажатии на эту кнопку эта форма (не программа) должна закрыться,
а если использовать твой код то закрываеться та форма, на какой Button я ссылаюсь, тоесть на Form1
Как сделать чтобы закрылась созданая форма?
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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