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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 18:20   #1
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию Динамические компоненты.Бага с созданием

Здравствуйте у меня в проэкте 3 статические формы. Я создаю динамические на основе классов статических.
Вот класс на основе которого я создаю окно
Код:
type
  TForm3 = class(TForm)
    Label1: TLabel;
    PBar1: TProgressBar;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    MB: TLabel;
    speed: TLabel;
    time: TLabel;
    timel: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    status: TLabel;
    url: TEdit;
    path: TEdit;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TimerElapse(Sender: TObject);
    function get(const fileURL, FileName: string): boolean;
    procedure timespeed(Sender: TObject);

  private

  public
   ID:integer;
  end;
Эта форма создается по нажатию на кнопку на формк основаной на классе
Код:
type
  TForm2 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Memo1: TMemo;
    Label4: TLabel;
    Button1: TButton;
    Button2: TButton;
    SaveDialog1: TSaveDialog;
    SpeedButton1: TSpeedButton;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    function check:string;
    function GetUrlSize(const URL:string):Integer;
    function hosttoip(name: string; var ip: string): boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Вот моя структура.

Код:
type download=record
formdown:Tform3;
url,path,category,comment,prog,status,ip:string;
size,speed:integer;
result,pause:boolean;
tmpsize,file1,file2,ostatok:integer;
timerspeed,timerelapse:Ttimer;
threaddownload:TNewThread;
end;
Есть динамический массив

Код:
data:array of download;
Форма создается так

Код:
inc(i);
setlength(data,size+1);
inc(size);
data[i].url:=combobox1.Text;    
data[i].category:=combobox2.Text;    
data[i].path:=combobox3.Text;        
data[i].timerspeed:=Ttimer.Create(self);  
data[i].timerspeed.Interval := 1000  ;
data[i].timerspeed.OnTimer:=form3.timespeed; 
data[i].timerspeed.Enabled:=false;        
data[i].timerelapse:=Ttimer.Create(self);  
data[i].timerelapse.Interval := 1000  ;
data[i].timerelapse.OnTimer:=form3.TimerElapse;
data[i].timerelapse.Enabled:=false;      
data[i].formdown:=tform3.Create(application);    
data[i].formdown.ID:=i;              
data[i].formdown.url.Text:=combobox1.Text;  
data[i].formdown.path.Text:=combobox3.Text;
self.Hide;
data[i].formdown.Show;        
end;
По нажатию форма выполняет событие Oncreate и событие Onshow а потом почему то вместо этой формы(он должна быть data[1].formdown) в переменной self записан уже не динамический data[1].formdown а статическая форма form3. Пожалуйста помогите решить эту проблему.
Horus92 вне форума Ответить с цитированием
Старый 01.06.2010, 02:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
(он должна быть data[1].formdown)
уверены что индексы не путаете?
массивы то с нуля идут.
(возможно еще в добавок есть ошибка работы с дин массивом)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.06.2010, 08:26   #3
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию

нет индекс не путается я создаю массив на 2 элемента и пишу в первый нулевой пустой а при трассировке номер не меняется.
Horus92 вне форума Ответить с цитированием
Старый 01.06.2010, 20:23   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а i у вас глобальная переменная?
где обьявлена?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строки обратно с STD - бага AQSW Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 07.07.2009 21:40
Динамические компоненты. Уже не могу.. Ky3Heu, Общие вопросы Delphi 2 15.04.2009 15:05
Динамические компоненты и MouseMove Шульц Общие вопросы Delphi 10 23.01.2009 11:27
Что же это, бага vs2005, или VC++ 6.0? evil_factory Visual C++ 1 24.07.2008 22:30