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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.01 c
4-21325
maxim2
2002-08-21 08:14
2002.10.07
Cut, Copy, Paste,


1-21011
turusov
2002-09-25 15:24
2002.10.07
Object Pascal and Delphi


14-21223
Карелин Артем
2002-09-10 13:49
2002.10.07
Вход автоматом в Win 2000 server.


3-20944
KIR
2002-09-12 02:16
2002.10.07
На что сменить ГЛЮЧНЫЙ Paradox?


14-21268
DeMoN-777
2002-09-13 10:23
2002.10.07
Save as txt





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский