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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.10.2012, 00:10
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию Создание нового класса который должен отображаться графически

есть модуль:
Код:
unit Balka;

interface
         uses SysUtils, Dialogs, Classes, StdCtrls, Graphics;
         type
             Tbalka=class
                   private
                          fdlina:real;
                          fploshad:real;
                          fshema:tcanvas;
                          procedure setshema(value:tcanvas);
                   published
                            property dlina:real
                                    read fdlina
                                    write fdlina;
                            property ploshad:real
                                    read fploshad
                                    write fploshad;
                            property shema:tcanvas
                                    read fshema
                                    write setshema;
             end;

implementation
              procedure setshema(value:tcanvas);
                       var
                          x1, y1, x2, y2:real;
                       begin
                            x1:=100;
                            y1:=100;
                            x2:=x1+fdlina;
                            y2:=y1+20;
                            value.Rectangle(x1, y1, x2, y2);
                       end;

end.


Что нужно:
- описать процедуру графического отображения здесь в модуле
- значения полей буду определять в другом unit, а описать процедуру графич построения нужно в этом модуле и она зависит от поля

как реализовать данный момент?
Ответить с цитированием
  #2  
Старый 25.10.2012, 05:36
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

x1, x2 ... определять в другом unit? тогда их в класс, а значение передавать через конструктор
а пока в этом модуле ничего стоящего нет
__________________
>woweook<

Последний раз редактировалось Pyro, 25.10.2012 в 05:38.
Ответить с цитированием
  #3  
Старый 25.10.2012, 05:47
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Pavel_Aleksandrovich
Код:
.....
implementation
              procedure setshema(value:tcanvas);
                       var
.....
Здесь должно быть так:
Код:
.....
implementation
              procedure Tbalka.setshema(value:tcanvas);
                       var
.....
Цитата:
Сообщение от Pavel_Aleksandrovich
- значения полей буду определять в другом unit, а описать процедуру графич построения нужно в этом модуле и она зависит от поля

как реализовать данный момент?
Подключаешь к этому модулю через uses тот другой unit и бери с него значения. Или наоборот с другого unit'а подключай этот модуль и вызывай методы этого класса с нужными параметрами.
Ответить с цитированием
  #4  
Старый 25.10.2012, 11:18
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

подключаю этот модуль в другом юнит
но все равно ошибка

вот другой модуль:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Balka;

var
balka1:Tbalka;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
     balka1:=Tbalka.create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
     balka1.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     balka1.dlina:=200;
end;

end.

несколько ошибок

ругается на fdlina

и на rectangle

где ошибки?
может как-то каряво модуль написан?
Ответить с цитированием
  #5  
Старый 25.10.2012, 11:27
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Pavel_Aleksandrovich
несколько ошибок

ругается на fdlina

и на rectangle

где ошибки?
может как-то каряво модуль написан?
В каком месте ругается на fdlina и на rectangle?

В этом чтоли?:
Код:
.....
                            x2:=x1+fdlina;
                            y2:=y1+20;
                            value.Rectangle(x1, y1, x2, y2);
.....
И как ругается? Прям нецензурными словами которые нельзя здесь на форуме опубликовать?
Ответить с цитированием
  #6  
Старый 25.10.2012, 16:22
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

ошибки которые выдает компилятор

- Undeclared identifier: 'fdlina'

- There is no overloaded version of 'Rectangle' that can be called with these arguments
Ответить с цитированием
  #7  
Старый 25.10.2012, 16:31
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от Pavel_Aleksandrovich
ошибки которые выдает компилятор

- Undeclared identifier: 'fdlina'

- There is no overloaded version of 'Rectangle' that can be called with these arguments
1. Внимательно читал пост №3?
2. Для функции Rectangle допустимы только целочисленные параметры.
Ответить с цитированием
  #8  
Старый 25.10.2012, 17:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Это конечно все весело, но если изначально стоит задача визуального отображения вашей балки, почему вы класс не сделали наследником TGraphicControl ?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 25.10.2012, 18:01
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

Цитата:
Сообщение от Страдалецъ
Это конечно все весело, но если изначально стоит задача визуального отображения вашей балки, почему вы класс не сделали наследником TGraphicControl ?
что измениться?
Ответить с цитированием
  #10  
Старый 25.10.2012, 23:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Работа с TCanvas реализована в полном объёме.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 26.10.2012, 07:16
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

интересно как эти балки будут соединяться
__________________
>woweook<
Ответить с цитированием
  #12  
Старый 26.10.2012, 10:46
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

Цитата:
Сообщение от Pyro
интересно как эти балки будут соединяться

это тоже проблема и механизма описания что бы прога понимала всю схему, состоящ из нескольких балок и тп, я пока не знаю, но проге и не обязательно это понимать
Ответить с цитированием
  #13  
Старый 27.10.2012, 09:25
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
Сообщение от Pavel_Aleksandrovich
но проге и не обязательно это понимать

а что прога сможет делать без этого?
__________________
>woweook<
Ответить с цитированием
  #14  
Старый 27.10.2012, 15:14
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Вопрос: это должна быть "типа CAD-система" или готовая прога, которая рассчитывает схему, нарисованную в ней же? Думаю, это продолжение следующей темы:
http://www.delphisources.ru/forum/sh...ad.php?t=22055
Скорее, таковой класс не подойдет, ведь теоретически балка может находиться под любым углом, при воздействии деформации - изгибаться, и т.д.

ЗЫ запостите, пожалуйста, примерный рисунок, как должна выглядеть схема.
Ответить с цитированием
  #15  
Старый 28.10.2012, 10:12
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

Цитата:
Сообщение от YVitaliy
Вопрос: это должна быть "типа CAD-система" или готовая прога, которая рассчитывает схему, нарисованную в ней же? Думаю, это продолжение следующей темы:
http://www.delphisources.ru/forum/sh...ad.php?t=22055
Скорее, таковой класс не подойдет, ведь теоретически балка может находиться под любым углом, при воздействии деформации - изгибаться, и т.д.

ЗЫ запостите, пожалуйста, примерный рисунок, как должна выглядеть схема.


редактора пока не будет, т е рисовать балку не надо, положение ее будет горизонтальное, а тема действительно продолжение предыдущей

Последний раз редактировалось Pavel_Aleksandrovich, 28.10.2012 в 10:34.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter