Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

Нужен совет по созданию компонента (если не жалко)   Найти похожие ветки 

 
Begin ©   (2002-09-24 00:54) [0]

Хочу вот попробовать на базе стандартной панельки сделать более навороченную путем добавления к ней Bevel"я и переноса дефолтного Caption в верхний левый угол. Соответственно вознокло вопросов :

1. Можно ли (как ?) сделать копию стандартного компонента и поместить ее в палитру под другим именем?
2. Могу ли я визуално создавать/править внешний вид компонента, а потом прописывать его св-ва и методы, или же все только в коде ?
3. Как в одном новом компоненте совместить несколько стандартных (сделать что то типа TLabeledEdit)
4. Имеет ли место быть ситуация - положили на панельку несколько компонетов, выделили их и по нажатию некой последовательности кнопок(пунктов меню) получили новый компонент с лицом в виде созданного набора. Если имеет, то как ???

Или книжку какую посоветуйте, где эта тема хорошо расписана.

Спасибо заранее.


 
MBo ©   (2002-09-24 06:26) [1]

1. Делаешь из меню Component-New Component - выбираешь предка из имеющихся, страницу палитры, пакет (DCLUSR50 по умолчанию)

2. Нет, только с помощью редких платных пакетов

3. В композитном компоненте создаешь подкомпоненты

4. Выделяешь несколько компонентов на форме - создать Template - помещаешь в палитру

Познакомься также с фреймами (Frame). Многие задачи можно решить с их помощью


 
Separator ©   (2002-09-24 06:50) [2]

>4.
Выделил, нажал правую кнопку мыши и выбра "Add to Repository..."


 
KSergey ©   (2002-09-24 07:03) [3]

Вначале "лирическое отступление".
Сказать по-правде, компоненты я тоже по началу писал "методом тыка". Потом, когда "почуял" что оказывается получается и не так это страшно, попер дальше (спасибо Анатолию Подгорецкому, он мне в другом форуме тогда все растолковал, где были заблуждения). Так что идейно тема "потыкаться" в таписании компонент мне близка... ;)

Значит сразу: компоненты не имеют design time. Вернее, процесс их разработки такого не имеет.
Отсюда:

> 4. Имеет ли место быть ситуация - положили на панельку несколько
> компонетов, выделили их и по нажатию некой последовательности
> кнопок(пунктов меню) получили новый компонент с лицом в
> виде созданного набора. Если имеет, то как ???


Нет. Вообще-то тут, думаю, вам поможет скорее фрейм (начиная с D5). Вот там как раз это можно: накидал на него все что угодно, повязал все кодом - а потом на любую форму уже готовый набор в виде фрейма кидаешь. Это к тому же все можно еще и подвигать относительно друг друга.

Ну и попутно

> 2. Могу ли я визуално создавать/править внешний вид компонента,
> а потом прописывать его св-ва и методы, или же все только
> в коде ?


Нет, все тольео в коде.
Причем напугаю еще больше: когда компонент будет скомпилирован и добавлен в палитру Delphi, то Delphi начнет использовать сожержащую его bpl-ку в процессе своей работы (для отрисовки в design-time и вычитывания published-свойств). Так вот если в компоненте есть ошибочки - все IDE начнет понятно страшно пучить и кривить. Отсюда золотой правило создания компонент: сначала на тестовом примере добиваемся стабильной работы компонента при динамическом его создании, и только после отладки всех замеченых ошибок его можно добавлять в палитру IDE.

> 3. Как в одном новом компоненте совместить несколько стандартных
> (сделать что то типа TLabeledEdit)


Ну во-первых, опять же чем фрейм плох?
Нет у меня к сожалению D6, посмотреть бы, но так понимаю, что в create компонента создается 2 элемента, которые потом и отрисовываются совместно. Вот только интересно, что взято тогда за основу... Впрочм, что гадать? Посмотрите в VCL- вот и все!


> 1. Можно ли (как ?) сделать копию стандартного компонента
> и поместить ее в палитру под другим именем?


Запросто!
Но сперва замечание: не всегда есть смысл и достаточная возможность наследовать от "конечного" компонента, часто приходится брать за основу промежоточный (например, вместо TLabel брать TCustomLabel). Ну и обязательно почитайте конечно книжку. Уж хоть какую-нибудь про написание компонент - там много всяких нюансов. Того же Тейксеру с Паченко, второй том.

Ну а теперь каркас "компонета". Т.е. создается просто копия без дополнительной функционатьности.
О, даже нет. Попался тут как раз под руку примерчик - очень удачный на мой взгляд. Тут и каркас просматривается, т.к. доп. кода мало, и в то же время можно посмотреть как что делается. Значит это недольшое расширение стандартного CheckBox с доп. свойством. (хотя зачем оно - я так и не понял: тоже самое срабатывает и в OnClick)
Заколовок модуля оставлен "фирменный", а наименование компонента я переделал из TAdvCheckBox в TЕхCheckBox.

{******************************************************************************}
{* TAdvCheckBox *}
{*----------------------------------------------------------------------------*}
{* Author: Alexander Markus, maxx@linznet.at *}
{* Last Change: 14.12.2000 *}
{*----------------------------------------------------------------------------*}
{* This small Component fires an Event every time the State of the Checkbox *}
{* changes. *}
{*----------------------------------------------------------------------------*}
{* new Event: *}
{* OnChange: TNotifyEvent *}
{******************************************************************************}

unit ExCheckBox;

interface

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

type

TExCheckBox = class(TCheckBox)
private
FOnChange: TNotifyEvent;
protected
procedure Toggle; override;
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("KSM", [TExCheckBox]);
end;

procedure TExCheckBox.Toggle;
begin
inherited Toggle;
if Assigned(FOnChange) then
FOnChange(Self);
end;

end.



 
KSergey ©   (2002-09-24 07:11) [4]

Даааа, народ то как всегда знает намого больше и пишет быстрее... ;) Что же, будем тянуться ;)


 
TTCustomDelphiMaster ©   (2002-09-24 22:18) [5]

http://interface.ru/borland/d5_2prraz1.htm


 
Begin ©   (2002-09-25 00:13) [6]

Большое всем спасибо ! :) Буду дальше учиться ...

P.S. Все ж таки странно, что нет ничего визуального для создания хотя бы внешнего вида компонента. Я не ленивый, просто так удобнее. :)


 
Юрий Зотов ©   (2002-09-25 00:17) [7]

> Буду дальше учиться ...

И это правильно. Только я бы посоветовал учиться все же по книгам, а не только на практике. Иначе будет и слишком долго, и много пробелов останется. Полуучеба получится.


 
Begin ©   (2002-09-25 00:31) [8]

> Юрий Зотов

Да я и не возражаю, более того, прошу - посоветуйте еще чего ни будь... :) (на данный момент желательно именно по данному вопросу)

P.S. KSergey спасибо за совет, а название можно ? По фамилиям Яндех выдает только 3 ссылки .... :)


 
Юрий Зотов ©   (2002-09-25 00:48) [9]

По написанию компонентов самая лучшая книга из всего, что я видел - Рэй Конопка. "Создание оригинальных компонентов в среде Delphi". Она издавалась уже давно, достать, наверное, будет непросто, но если достанете - хватайте и не отпускайте.

Из других - книга Тейксейры и Пачеко по Delphi 4 (возможно, и по другим Delphi тоже, но тех я подробно не читал, поэтому точно сказать не могу). Там не только создание компонентов, там много всего (кстати, много ценного), но и эта тема изложена очень неплохо. Во всяком случае, более полно, чем в других неспециализированных книгах, которые мне довелось видеть.

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


 
KSergey ©   (2002-09-26 12:50) [10]


> Юрий Зотов © (25.09.02 00:48)


Ну сядешь не сядешь, а приземлишься - это точно в любом случае!


> Begin © (25.09.02 00:31)


Название чего? Книги Тейксеры и Паченко?!! Да оно "одно", так сказать ;) (говорят ими или каждым в отдельности написано много, но эта пожалуй самая популярная) "Delphi X Руководство разработчика" (вместо X подставляется 4 или 5, впрочем особых различий между ними нету)
Но опять же кнга, упомянутая Юрием Зотовым более хвалится по компонентам, пожалуй.



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

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
14-21252
cyborg
2002-09-11 14:15
2002.10.07
Вставка картинок в редактор


1-20963
Kacnep
2002-09-19 08:47
2002.10.07
Хитрый Tray


1-21005
Conqueror
2002-09-26 09:01
2002.10.07
Как


14-21236
Aristarh
2002-09-12 14:01
2002.10.07
Почему разное оформление анкет?


14-21227
Дремучий
2002-09-11 15:40
2002.10.07
Печальная история...