Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.05.2011, 16:22
Muaz Muaz вне форума
Прохожий
 
Регистрация: 07.05.2011
Сообщения: 4
Репутация: 10
Стрелка UML редактор на Delphi

Редактор должен работать только с диаграмой классов, что упрощает задание. Нужно создать два Класса : "TClass" и "TArrow". прошу помочь разобраться с классами, почему то переменные члены-класса нормально не работают не пойму что не так.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Math, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TClass = class
    PtA,PtB,PtC,PtD: TPoint; //  <--- ПРОБЛЕМНЫЕ ПЕРЕМЕННЫЕ
    str: record name,atr,oper: string; end;
    procedure Paint;
    procedure Size;
    //procedure Delete;
  end;

type
  TArrow = class
  //
  end;

var
  Form1: TForm1;
  DClass: Array [1..10] of TClass;
  i: integer;
  procedure Redisigner;

implementation

{$R *.dfm}

procedure TClass.Size;
begin
  PtA.X:=15;
  PtA.Y:=15;
  PtB.X:=PtA.X+150;
  PtB.Y:=PtA.Y+50;
  PtC.X:=PtA.X;
  PtC.Y:=PtB.Y+50;
  PtD.X:=PtA.X+150;
  PtD.Y:=PtC.Y+50;
end;

procedure TClass.Paint;
begin
  Image1.Canvas.FrameRect(Rect(PtA.X,PtA.Y,PtB.X,PtB.Y));  //вывод 1  прямоугольника
  Image1.Canvas.FrameRect(Rect(PtB.X,PtB.Y,PtC.X,PtC.Y));  //2-го
  Image1.Canvas.FrameRect(Rect(PtC.X,PtC.Y,PtD.X,PtD.Y));  //3-го
  Image1.Canvas.FrameRect(Rect(PtA.X,PtA.Y,PtD.X,PtD.Y));  //обвод
end;

procedure Redisigner;
begin
  DClass[i].Paint;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  i:=i+1;
  Image1.Canvas.Brush.Color:=clBlack;
  DClass[i].Create;
  DClass[i].Size;
  Redisigner;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=0;
end;

end.
Админ: Пользуемся тегами для оформления кода!

планируется езменение размера полей с помощью изменения PtB,PtC,PtD: TPoint

Последний раз редактировалось Admin, 07.05.2011 в 17:14.
Ответить с цитированием
  #2  
Старый 08.05.2011, 08:01
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Не созданы экземпляры класса.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 08.05.2011, 17:18
Muaz Muaz вне форума
Прохожий
 
Регистрация: 07.05.2011
Сообщения: 4
Репутация: 10
Стрелка

Код:
var
  Form1: TForm1;
  DClass: Array [1..10] of TClass; // <--  вот как бы...если я не ошибаюсь
  i: integer;
  procedure Redisigner;

Последний раз редактировалось lmikle, 08.05.2011 в 21:01.
Ответить с цитированием
  #4  
Старый 08.05.2011, 17:30
Muaz Muaz вне форума
Прохожий
 
Регистрация: 07.05.2011
Сообщения: 4
Репутация: 10
По умолчанию

вот старый вариант но там как бы всё через заднее место, но работает --> MUML.7z
и новый почти пустой и не работающий по задумке проект -->NP.7z
Ответить с цитированием
  #5  
Старый 08.05.2011, 18:14
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Перед первым обращением к переменной типа "класс", её надо инициализировать.
Вставь где-нибудь
Код:
DClass[N]:=TClass.Create;
Разумеется, создать надо все элементы массива.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #6  
Старый 08.05.2011, 19:23
Muaz Muaz вне форума
Прохожий
 
Регистрация: 07.05.2011
Сообщения: 4
Репутация: 10
Хорошо

ВОТ ЖЕ ОНО...то что я искал.... псб DJ PhoeniX ....
позже проверю на старом коде...если возникнут проблемы буду писать сюда же...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:16.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025