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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2014, 00:45   #1
DiQ
Новичок
Джуниор
 
Регистрация: 29.10.2014
Сообщений: 2
Лампочка КурсачЪ, Разработка таблиц, проблема с удалением компонентов.

Суть курсового проекта:
Разработать табличный редактор для расчета стоимости создания компьютерной сети.
StringGrid не предлагать, и обязательное условие разработка в delphi

Проблема следующая,
При повторном создании полей ввода, повторяются имена и выскакивает ошибка.
Каким образом можно избежать данной ошибки ?

Код:
unit WindSecond;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure pwB;
    procedure pwE;
    procedure pwL;
    { Public declarations }
  end;

var
  Form2: TForm2;
  PosL,PosT:integer;
  wB:TButton; wE:TEdit; wL:TLabel;

implementation
  uses WindMain, LIBR;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  i,wCount: Integer;
begin

  PosT:=70;
  wCount:=StrToInt(Edit1.Text);

  for I := 1 to wCount do
  begin
  PosL:=20;
  pwE;
  wE.Name:='Title'+IntToStr(I);
  wE.Width:=150;
  wE.Left:=PosL;
  wE.Top:=PosT;
  PosL:=PosL+150+20;

  pwE;
  wE.Name:='Amount'+IntToStr(I);
  wE.Width:=40;
  wE.Left:=PosL;
  wE.Top:=PosT;
  PosL:=PosL+40+20;

  pwE;
  wE.Name:='Price'+IntToStr(I);
  wE.Width:=40;
  wE.Left:=PosL;
  wE.Top:=PosT;
  PosL:=PosL+40+20;

  pwE;
  wE.Name:='Equally'+IntToStr(I);
  wE.Width:=40;
  wE.Left:=PosL;
  wE.Top:=PosT;
  PosL:=PosL+40+20;

  PosT:=PosT+30;
  end;

end;
procedure TForm2.pwB;
begin
  wB:=TButton.Create(Form2);
  wB.Parent:=Form2;
  wB.Left:=PosL;
  wB.Top:=PosT;
end;

procedure TForm2.pwE;
begin
  wE:=TEdit.Create(Form2);
  wE.Parent:=Form2;
  wE.Left:=PosL;
  wE.Top:=PosT;
  wE.Text:=' ';

end;

procedure TForm2.pwL;
begin
  wL:=TLabel.Create(Form2);
  wL.Parent:=Form2;
  wL.Left:=PosL;
  wL.Top:=PosT;
end;
end.

Последний раз редактировалось Stilet; 29.10.2014 в 07:20.
DiQ вне форума Ответить с цитированием
Старый 29.10.2014, 01:41   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Свойство Name должно иметь уникальное значение, а у Вас они повторяются при каждом нажатии кнопки.
Streletz вне форума Ответить с цитированием
Старый 29.10.2014, 02:11   #3
DiQ
Новичок
Джуниор
 
Регистрация: 29.10.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Свойство Name должно иметь уникальное значение, а у Вас они повторяются при каждом нажатии кнопки.
та это понятно,
но сложность у меня заключается именно в том что бы удалить объекты
DiQ вне форума Ответить с цитированием
Старый 29.10.2014, 03:34   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от DiQ Посмотреть сообщение
та это понятно,
но сложность у меня заключается именно в том что бы удалить объекты
Удаление делается с помощью Free/
Пример для Edit-ов.
Код:
procedure TForm2.Button2Click(Sender: TObject);
var
  i: integer;
begin
  i := 0;
  while (i <= Form2.ControlCount - 1) do
  begin
    if ((Pos('Title', Form2.Controls[i].Name) <> 0) or
      (Pos('Amount', Form2.Controls[i].Name) <> 0) or
      (Pos('Price', Form2.Controls[i].Name) <> 0) or
      (Pos('Equally', Form2.Controls[i].Name) <> 0)) then
    begin
      Form2.Controls[i].Free;
      continue;
    end;
    inc(i);
  end;
end;
С остальными компонентами аналогично.
P.S. Настоятельно советую не копипастить код примера "в лоб", а всё-таки в нём разобраться.
Streletz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с удалением дубликатов strannick Microsoft Office Excel 19 28.09.2013 18:08
Проблема с удалением файла Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.06.2011 20:15
проблема с удалением файла katttes Общие вопросы Delphi 3 30.04.2010 13:17
Проблема с удалением файлов. Dj_smart Общие вопросы Delphi 4 22.03.2008 12:32