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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2015, 11:12   #1
Alekseyh
Пользователь
 
Аватар для Alekseyh
 
Регистрация: 18.09.2012
Сообщений: 41
По умолчанию Delphi помогите создать компонент

Вообщем нужно из проекта сделать компонент. Помогите пожалуйста! сам бы разобрался но чет пока не выходит.
Само задание я написал(Приложение) а как сделать из него компонент не знаю. Подозреваю что это проще чем кажется, но тяму мне пока не хватает. В итоге должно выйти примерно так же как на скрине.
Изображения
Тип файла: jpg Снимок.JPG (49.0 Кб, 93 просмотров)
Вложения
Тип файла: rar ИДЗ.rar (93.4 Кб, 7 просмотров)
Alekseyh вне форума Ответить с цитированием
Старый 19.01.2015, 11:43   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
сам бы разобрался но чет пока не выходит.
неужели?
а ну показывай, что не получается!
Изображения
Тип файла: jpg 53.jpg (45.7 Кб, 117 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.01.2015, 11:56   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Не совсем компонент, но автономная единица

procedure TForm15.FormCreate(Sender: TObject);
begin
TTrumpetPanel.Create(self).Parent:= self;
end;

Код:
unit Trumpet;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExtCtrls;

type
  TTrumpetPanel = class(TPanel)
  private
    Grid: TStringGrid;
    Lab: TLabel;
    buttonAdd: TButton;
    buttonDelete: TButton;
    buttonCalc: TButton;
    buttonExit: TButton;
    indexRowMaxVolume :real;
    procedure buttonAddClick(Sender: TObject);
    procedure buttonDeleteClick(Sender: TObject);
    procedure buttonCalcClick(Sender: TObject);
    procedure buttonExitClick(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  end;


implementation



{ TTrumpetPanel }

procedure TTrumpetPanel.buttonAddClick(Sender: TObject);
begin
  Grid.RowCount := Grid.RowCount + 1;
  Grid.Cells[0, Grid.RowCount - 1] := IntToStr(Grid.RowCount - 1);

end;

procedure TTrumpetPanel.buttonCalcClick(Sender: TObject);
var
  trumpets :array of TTrumpet;
  currIndexRow :Integer;
  currLength :Integer;
  currDiameter :Integer;
  currTrumpet :TTrumpet;
  trumpetKeeper :TTrumpetKeeper;
begin
  SetLength(trumpets, Grid.RowCount - 1);
  for currIndexRow := 1 to Grid.RowCount - 1 do
  begin
    currLength := StrToIntDef(Grid.Cells[1, currIndexRow], -10001);
    currDiameter := StrToIntDef(Grid.Cells[2, currIndexRow], -10001);
    if((currLength = -10001) or (currDiameter = -10001)) then
    begin
      ShowMessage('Не удалось определить число в строке номер ' + IntToStr(currIndexRow));
      exit;
    end;
    currTrumpet := TTrumpet.Create(currLength, currDiameter);
    trumpets[currIndexRow-1] := currTrumpet;
    Grid.Cells[3, currIndexRow] := FloatToStr(currTrumpet.CalculateVolume());
  end;

  trumpetKeeper := TTrumpetKeeper.Create(Grid.RowCount - 1, trumpets);
  try
    self.indexRowMaxVolume := trumpetKeeper.getIndexItemMaxVolumn() ;

    trumpetKeeper.clean();
    SetLength(trumpets, 0);
  finally
    trumpetKeeper.Free;
  end;
  Lab.Caption:='Средний объем: '+ floattostr( indexRowMaxVolume);
end;

procedure TTrumpetPanel.buttonDeleteClick(Sender: TObject);
begin
  if (Grid.RowCount > 2) then
    Grid.RowCount := Grid.RowCount - 1;
end;

procedure TTrumpetPanel.buttonExitClick(Sender: TObject);
begin
  Application.Terminate;
end;

constructor TTrumpetPanel.Create(AOwner: TComponent);
begin
  inherited;
  AutoSize:=True;
  Grid:=TStringGrid.Create(Self);
  Grid.Parent:=Self;
  Grid.SetBounds(0,0,300,300);
  Grid.ColCount:=4;
  Grid.RowCount:=2;

  Grid.Cells[0, 0] := '№ п/п';
  Grid.Cells[1, 0] := 'Длина, мм';
  Grid.Cells[2, 0] := 'Диаметр, мм';
  Grid.Cells[3, 0] := 'Объем, куб. мм';
  Grid.ColWidths[0]:=40;
  Grid.Cells[0, 1] := '1';


  Lab:= TLabel.Create(Self);
  Lab.Parent:=Self;
  Lab.SetBounds(8,310,150,13);
  Lab.Caption:='Средний объем: невычеслен';

  buttonAdd:= TButton.Create(Self);
  buttonAdd.Parent:=Self;
  buttonAdd.SetBounds(0,340,75,25);
  buttonAdd.Caption:='buttonAdd';
  buttonAdd.OnClick:=buttonAddClick;

  buttonDelete:= TButton.Create(Self);
  buttonDelete.Parent:=Self;
  buttonDelete.SetBounds(80,340,75,25);
  buttonDelete.Caption:='buttonDelete';
  buttonDelete.OnClick:=buttonDeleteClick;

  buttonCalc:= TButton.Create(Self);
  buttonCalc.Parent:=Self;
  buttonCalc.SetBounds(160,340,75,25);
  buttonCalc.Caption:='buttonCalc';
  buttonCalc.OnClick:=buttonCalcClick;

  buttonExit:= TButton.Create(Self);
  buttonExit.Parent:=Self;
  buttonExit.SetBounds(240,340,75,25);
  buttonExit.Caption:='buttonExit';
  buttonExit.OnClick:=buttonExitClick;
end;

end.
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 19.01.2015, 19:01   #4
Alekseyh
Пользователь
 
Аватар для Alekseyh
 
Регистрация: 18.09.2012
Сообщений: 41
По умолчанию Спасибо огромное выручил!

Получилось, сделал компонент из твоего объекта. Спасибо, очень помог!
Alekseyh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодом (Delphi) компонент StringGrid Alexander788 Помощь студентам 1 22.05.2014 22:20
Создать компонент Delphi стек Graff Valdemar Помощь студентам 3 20.05.2010 20:19
Помогите найти компонент для Delphi e-y-e-l-e-s-s Компоненты Delphi 6 19.05.2009 14:41
Помогите создать компонент на основе PageControl SibBear Компоненты Delphi 5 23.03.2009 16:28