Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Логарифмическая шкала   Найти похожие ветки 

 
Profi ©   (2005-02-13 21:06) [0]

На каком базовом классе лучше всего создавать сабж. Пробовал на TImage, но столкнулся с проблемой цвета фона. Закрашивается только та область, размер которой совпадает с первым закрашиванием.


 
Юрий Зотов ©   (2005-02-13 21:32) [1]

Вполне возможно, TCustomControl.
Надо бы дать описание компонента, тогда можно будет уточнить.


 
Vaitek ©   (2005-02-13 21:39) [2]

Я обычно рисую на TPaintBox, но там надо не забывать отлавливать onPaint событие.


 
Profi ©   (2005-02-13 23:38) [3]

Юрий Зотов ©   (13.02.05 21:32) [1]
Прямоугольное поле, задается цвет фона, цвет осей, цвет линии графика, максимум и минимум по осям, ну и вводятся сами данные. Производится расчет, строится сетка, рисуется график.


 
Юрий Зотов ©   (2005-02-13 23:56) [4]

ИМНО, TCustomControl.

Для отрисовки - перекрыть Paint.

Параметры осей и данные - реализовать в виде свойств с методами Set, в которых вызывается Invalidate. Ввод данных в design-time удобно сделать через диалоговый редактор свойства.


 
Profi ©   (2005-02-14 00:53) [5]

Юрий Зотов ©   (13.02.05 23:56) [4]
Да TCustomControl подошел, но вот не пойму в чем ошибка:

Constructor.Create(aOwner:TComponent);
begin
Inherited;
fBackColor:=clWhite;
UpdateLogChar;
end;

Procedure TLogChar.UpdateLogChar;
begin
Canvas.Brush.Color:=fBackColor;
Canvas.FillRect(Rect(0,0,Width,Height));
end;


Вызывает ошибку Controls "" is not parent window


 
Юрий Зотов ©   (2005-02-14 01:03) [6]

При выполнении конструктора окно еще не создано и хэндла у канвы еще нет - значит, рисовать еще не на чем. Рисуйте в Paint.


 
Profi ©   (2005-02-14 01:16) [7]

Юрий Зотов ©   (14.02.05 1:03) [6]
Ок, спасибо!


 
Profi ©   (2005-02-15 00:34) [8]

Столкнулся тут с проблемой, никак не могу решить!
Создал доп. модуль с классом

unit LogCharMat;

interface

Uses
 Classes, Messages, Controls;

Type
 TPoints=class(TPersistent)
 private
   fMin:Integer;
   fMax:Integer;
   Procedure SetMax(NewMax:Integer);
   Procedure SetMin(NewMin:Integer);
 Public
   OnChanged: TNotifyEvent;
   Constructor Create;
 published
   Property Min: Integer read fMin
     write SetMin default 10;
   Property Max: Integer read fMax
     write SetMax default 10000;
end;

implementation

Constructor TPoints.Create;
begin
 Inherited;
 fMin:=10;
 fMax:=10000;
end;

Procedure TPoints.SetMax(NewMax:Integer);
begin
 If NewMax=fMax then exit;
 fMax:=NewMax;
 if Assigned(OnChanged) then OnChanged(self);
end;

Procedure TPoints.SetMin(NewMin:Integer);
begin
 If NewMin=fMin then exit;
 fMin:=NewMin;
 if Assigned(OnChanged) then OnChanged(self);
end;

end.


В модуле самого компонента делаю так:

type
 TLogChar = class(TCustomControl)
 private
   { Private declarations }
...
 protected
   { Protected declarations }
   fXPoints:TPoints;
   fYPoints:TPoints;
   Procedure SetXpoints(NewXPoints:TPoints);
   Procedure SetYpoints(NewYPoints:TPoints);
   Procedure UpdateLogChar;
 public
   { Public declarations }
   Constructor Create(aOwner:TComponent); override;
   Destructor Destroy; override;
   published
   { Published declarations }
   Property XPoints: TPoints read fXPoints
     write SetXpoints;
   Property YPoints: TPoints read fYPoints
     write SetYPoints;
 end;


Но почему-то в SetXPoints и SetYPoints ничего не отлавливается. А очень надо! Помогите, pls.


 
Юрий Зотов ©   (2005-02-15 02:12) [9]

1. В TPoints добавить метод AssignTo (присвоение FMin, FMax и вызов OnChange).

2. В SetYPoints вызвать FYPoints.Assign(Value).


 
Profi ©   (2005-02-15 18:54) [10]

Юрий Зотов ©   (15.02.05 2:12) [9]
Я наверное что-то не так делаю. Сделал так:
в LogCharMat в Public добавил AssignTo: TnotifyEvent;

В SetYPoints пишу
If NewYPoints<>fYPoints then
fYPoints.AssignTo(NewYPoints);
UpdateLogChar;


Но UpdateLogChar все равно не вызывается!


 
Юрий Зотов ©   (2005-02-16 02:26) [11]

> Profi ©   (15.02.05 18:54) [10]

TNotifyEvent тут ни при чем. См. описание AssignTo в справке и примеры в исходниках.



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.559 c
11-1110529724
Vladimyr
2005-03-11 11:28
2005.11.06
Чёртов Service


2-1128965564
partizan
2005-10-10 21:32
2005.11.06
Чем отличаются object и class?


1-1129555609
malamba
2005-10-17 17:26
2005.11.06
как в listbox хранить двойные данные


3-1127598752
quadronik
2005-09-25 01:52
2005.11.06
Одна форма для всех таблиц


2-1128903401
Raziel
2005-10-10 04:16
2005.11.06
Открытие файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский