|
Вопрос # 6 478/ вопрос решён / |
|
Здравствуйте!
Как вносить изменения в потомка компонента?
Я делаю так:
- компонент-предок отображается в палитре компонентов (процедура регистрации среде Delphi проведена);
- открываю проект, в котором будет работать потомок (File=>Open Project=>);
- в папке проекта сохраняю копию компонента-предка, открываю его (File=>Open...=>'имя компонента'.pas);
- вношу изменения в открытый компонент;
- компилирую для проверки работоспособности внесенных изменений.
А как вносить изменения правильно (для некоммерческого использования только мной)? Скорость получения ответа не интересует. Вполне удовлетворит в течении нескольких лет.
Например внесены изменения в строки с 147 до 165 :
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 17 сентября 2013, 10:17
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 36; последнее сообщение — 12 октября 2013, 22:53; участников в обсуждении: 2.
Страницы: [« Предыдущая] [1] [2]
|
zvygin1964 (статус: Посетитель), 28 сентября 2013, 20:44 [#21]:
Переделать "демо 1:1 с нуля" мне сложно, пока.
Пробую "создать компонент на форме динамически" чужого творения:
-Удалил компонент uHeartMachine из палитры компонентов (типа, его там никогда и не было).
-File->Open Project...->HMDemo.dpr;
-Form1->Events->OnCreate->(двойной щелчок в пустом окошке рядом)->получил "FormCreate";
-в конце программы возникла процедура, а она нужна в самом начале:
procedure TForm1.FormCreate(Sender: TObject);
begin // создадим компонент и поместим его на форму
HeartMachine1:= THeartMachine.Create(self);
HeartMachine1.Parent:= self;
end;
-выделил выше появившееся, вырезал и вставил куда мне надо;
-от доброты душевной добавил в глобальные переменные:
var
Form1: TForm1;
HeartMachine1: THeartMachine; // компонент uHeartMachine;
-сохранил;
-Run;
-компонент попытался нарисоваться в другом масштабе и "повис", показал на ошибку:
raise ERangeError.Create('Point value out of range ('+IntToStr(Point)+')');
Знаем точно, что компонент изумительный, значит я его неправильно готовил.
Чего досыпать по вкусу?
unit uHMDemo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,uHeartMachine, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ExtCtrls; //
type
TForm1 = class(TForm)
Panel1: TPanel;
StatusBar1: TStatusBar;
Panel2: TPanel;
// HeartMachine1: THeartMachine; // это удалил я на время динамически создания компонента
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
TrackBar4: TTrackBar;
CheckBox1: TCheckBox;
Timer1: TTimer;
CheckBox2: TCheckBox;
Panel3: TPanel;
Edit1: TEdit;
UpDown1: TUpDown;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Panel2Resize(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
private
{ Private declarations }
public
// HeartMachine1: THeartMachine; // Объявление компонента пробовал, но не помогло
{ Public declarations }
end;
var
Form1: TForm1;
HeartMachine1: THeartMachine; // компонент uHeartMachine
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin // создадим компонент и поместим его на форму
HeartMachine1:= THeartMachine.Create(self);
HeartMachine1.Parent:= self;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
HeartMachine1.AddPoint(0, 5, 'First');
end;
procedure TForm1.Panel2Resize(Sender: TObject);
begin
TrackBar1.Height := Panel2.Height-33;
TrackBar2.Height := Panel2.Height-33;
TrackBar3.Height := Panel2.Height-33;
TrackBar4.Height := Panel2.Height-33;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Timer1.Enabled := CheckBox1.Checked;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if CheckBox2.Checked then
begin
TrackBar1.Position := Random(100)+1;
TrackBar2.Position := Random(100)+1;
TrackBar3.Position := Random(100)+1;
TrackBar4.Position := Random(100)+1;
end;
HeartMachine1.AddPoint(0, 100-TrackBar1.Position, 'Track Bar 1');
HeartMachine1.AddPoint(1, 100-TrackBar2.Position, 'Track Bar 2');
HeartMachine1.AddPoint(2, 100-TrackBar3.Position, 'Track Bar 3');
HeartMachine1.AddPoint(3, 100-TrackBar4.Position, 'Track Bar 4');
end;
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
Timer1.Interval := StrToInt(Edit1.Text);
end;
end.
Вижу в учебнике дальше написано бледным шрифтом, но это уже не на моем языке. Пока не понимаю.
Поможете?
|
|
min@y™ (статус: Доктор наук), 28 сентября 2013, 21:16 [#22]:
Цитата (zvygin1964):
Пробую "создать компонент на форме динамически" чужого творения: -Удалил компонент uHeartMachine из палитры компонентов (типа, его там никогда и не было).
Зачем?!!!!!! Чем он тебе мешал-то там, сидел себе тихо и никого не трогал!
Цитата (zvygin1964):
-Form1->Events->OnCreate->(двойной щелчок в пустом окошке рядом)->получил "FormCreate";
-в конце программы возникла процедура, а она нужна в самом начале
Я ж тебе в соседнем вопросе написал, что расположение функций/процедур в модуле на очерёдность их выполнения не влияет. Ты моё сообщение не читал или тупым прикидываешься?
Цитата (zvygin1964):
procedure TForm1.FormCreate(Sender: TObject);
begin // создадим компонент и поместим его на форму
HeartMachine1:= THeartMachine.Create(self);
HeartMachine1.Parent:= self;
// а где задание таких параметров компонента,
// как координаты его углов?
end;
-выделил выше появившееся, вырезал и вставил куда мне надо;
"Куда мне надо" - это куда?
Цитата (zvygin1964):
-от доброты душевной добавил в глобальные переменные:
var
Form1: TForm1;
HeartMachine1: THeartMachine; // компонент uHeartMachine;
ЗАЧЕМ ВСЁ ЭТО????!!!!!!!!!111111
Цитата (zvygin1964):
Вижу в учебнике дальше написано бледным шрифтом, но это уже не на моем языке. Пока не понимаю.
Ну если ты не понимаешь, нахрена ж ты лезешь туда?!
Я ж тебе написал ПОШАГОВУЮ инструкцию, что и как делать надо, ну какого ж ты хрена делаешь всё наоборот?
НЕ ТРОГАЙ ЧУЖОЙ ПРОЕКТ!!! Я ж тебе сказал создать СВОЙ ПРОЕКТ С НУЛЯ!!! Б...ЯТЬ!!! Не делай "-File->Open Project...->HMDemo.dpr", начни с "File->New->Application"!!!!!!!!!
АААААААААААААААА, Мама, роди меня обратно!!!!!
Короче, если ЕЩЁ РАЗ проявишь свою самодеятельность, больше мне вопросы не задавай - буду посылать на...уй, раз ты такой самостоятельный!
З.Ы. Как же меня вымораживают имена компонентов по умолчанию! Ладно, хрен с ним, что глупая система их клепает при проектировании, переименовать - самая первая операция, которая должна быть совершена над только что брошенным на форму компонентом. НО ЧТОБЫ ЧЕЛОВЕК (!) САМ (!!!!) ОБЗЫВАЛ КОМПОНЕНТЫ ИМЕНАМИ ПО УМОЛЧАНИЮ - ЭТО ЁБ..........ЗДЕЦ!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 28 сентября 2013, 21:30 [#23]:
И вообще, я не понимаю, зачем ты полез менять чужой код, если вообще в программировании на delphi ни в зуб ногой? Даже азов ООП на паскале на знаешь. Это ж всё равно, что полезть преребирать дизель от камаза, увидев по телевизору, как это делают 4 спеца с 80-летним стажем на всех.
Ну чем тебя не устроил предложенный мной компонент? Чего в нём тебе не хватило? Ну перечисли, пожалуйста!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 28 сентября 2013, 22:10 [#24]:
Очень хороший. Но им нельзя показывать момент во времени, когда был нарушен заданный режим технологического процесса. То есть должно быть только две горизонтальные линии на сетке координат. Вертикальные линии привязаны к промежуткам времени. То есть на главную форму хотел добавить легенду измерений (кажется Edit).
Так я сразу и сказал, что не знаю ничего. Просил научить...
|
|
zvygin1964 (статус: Посетитель), 28 сентября 2013, 22:11 [#25]:
Получится у меня или нет, это не важно. Завораживает процесс изучения.
|
|
min@y™ (статус: Доктор наук), 28 сентября 2013, 22:30 [#26]:
Цитата (zvygin1964):
должно быть только две горизонтальные линии на сетке координат
И это всё??!!
Количество горизонтальных линий можно менять, не изменяя код компонента. Неужели нельзя было прочитать, для чего нужны свойства и Object Inspector???!!!

Цитата (zvygin1964):
Вертикальные линии привязаны к промежуткам времени.
Да, так и есть. Если они мешаются, их можно отключить.
Цитата (zvygin1964):
То есть на главную форму хотел добавить легенду измерений (кажется Edit).
Если хочешь - добавляй, зачем компонент менять-то?
Цитата (zvygin1964):
Так я сразу и сказал, что не знаю ничего. Просил научить...
Да я пытался, но ты мои советы не читаешь или игнорируешь.
Цитата (zvygin1964):
Получится у меня или нет, это не важно. Завораживает процесс изучения.
Ты не с того начал изучение. Это как начинать на 1-м курсе мединститута изучать микрохирургию глаза. Причём сразу на живых пациентах практиковаться.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 28 сентября 2013, 22:41 [#27]:
Спасибо. Ушел пробовать на неделю.
|
|
zvygin1964 (статус: Посетитель), 11 октября 2013, 11:41 [#28]:
Если помечтать:" изменение от 0 до 110 градусов уважаемого Цельсия. Интересно иметь только две линии на уровне 102 и 104 градуса. Это будет совсем не наглядно (вероятно будут сливаться), поэтому придется подбирать их нелинейное размещение (а не использованной кривой раскрашивать площадь под измеряемым параметром, когда он выходит за эти пределы (102 и 104 градуса)). С таймером разберусь сам. Измерения делаются не чаще одного раза в 15 минут, а сетка времени будет выглядеть красивей в формате, как на ручных часах блондинки,то есть в формате "16часов", точнее и не надо. И вот эта цифра должна ползти рядом с вертикальной линией сетки.
Может быть это предусмотрено в предлагаемом Object Inspector ?
Да, ладно, это просто бред и мечты о идеале.
И так хорошо... Спасибо буду говорить каждый раз, как вспомню о Вас. Можно? Учусь читать. "1-й курс мединститута",- приятно, не ожидал такой высокой оценки!
|
|
min@y™ (статус: Доктор наук), 11 октября 2013, 12:01 [#29]:
Цитата (zvygin1964):
Может быть это предусмотрено в предлагаемом Object Inspector ?
Нет, сам компонент разработан не для этой конкретной задачи, а для общей (отображение значения параметра(ов) функции от времени), однако, на его основе можно быстро и легко сваять то, что тебе нужно.
Цитата (zvygin1964):
Да, ладно, это просто бред и мечты о идеале.
Не преувеличивай. Я не совсем врубился, что ты хочешь в итоге. Нарисуй, что хочешь видеть и покажи. Если мне станет интересно, сделаю. За пиво, конечно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 11 октября 2013, 12:21 [#30]:
Для Вас пива не жалко! Но это не коммерческий проект. Я хочу сам. Может быть у меня еще есть вторые 50 лет? Развлекуха на работе. Скучно смотреть на этот долбаный градусник целыми сутками. А рисовать здесь мне не дозволено вашими правилами.
|
|
min@y™ (статус: Доктор наук), 11 октября 2013, 12:27 [#31]:
Цитата (zvygin1964):
А рисовать здесь мне не дозволено вашими правилами.
А ты нарисуй мне по ё-почте.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 11 октября 2013, 12:28 [#32]:
Кстати, таки TChart-ом можно воспользоваться, в нём есть ВСЁ, включая логарифмический масштаб осей. Однако, нарисуй сначала и дай посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 12 октября 2013, 22:27 [#33]:
Получил от Вас подарок. Очень, очень...! Запишите в мой долг.
|
|
min@y™ (статус: Доктор наук), 12 октября 2013, 22:37 [#34]:
Цитата (zvygin1964):
Получил от Вас подарок. Очень, очень...! Запишите в мой долг.
Чо, понравилось?
+$100500!
Куда пиво засылать - знаешь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 12 октября 2013, 22:48 [#35]:
У вас на клавиатуре залипает кнопка "0". Высылаю сумму достаточную для покупки 10 шт. клавиатур.
|
|
min@y™ (статус: Доктор наук), 12 октября 2013, 22:53 [#36]:
Цитата (zvygin1964):
Высылаю сумму достаточную для покупки 10 шт. клавиатур.
Пишу с ноутбука [закадровый ржач]. Интересно, а сколько стоит 10 клав для моего старенького hp probook 4320s?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
23 декабря 2013, 22:24: Статус вопроса изменён на решённый (изменил автор вопроса — zvygin1964): Моих познаний недостаточно для понимания ответов экспертов.
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|