Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2010, 08:45   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Как добавить свой компонент в палитру Делфи?

В общем занимаюсь отладкой своего компонента для подсветки синтаксиса (плюнул на RichEdit), взял буржуйский исходник, сделал болванку под себя. Теперь мне нужно его потестить, добавил компонент - все ОК. Но на палитре компонент не появился.
Добавляю так:

Код:
// Зарегистрируем компонент
procedure Register;
begin

    RegisterComponents('Utkin', [THMemo]);
end;
///////////////////////////////////////////////////////////////////////////////
Повторно установить естественно не дает . Уже и свой пакет замутил, все моего Делфи 7 никак не устраивает .

ЗЫ. Возможно что-то напутал с именами. Юнит называется HMemo, компонент THMemo.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 04.02.2010 в 08:52.
Utkin вне форума Ответить с цитированием
Старый 04.02.2010, 09:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Повторно установить естественно не дает
И не нужно. Достаточно перекомпилировать пакет с компонентом, и перезапустить проект (ну в крайняк перезапустить делфи).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.02.2010, 09:47   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну-ка подробней, вот я его установил. Все без ошибок, но самого компонента и вкладки нету, че нужно сделать? Я смотрел в пакете он живет (обычный текстовый файл), но мне на это пофигу - я хочу просто взять компонент с палитры и закинуть на форму.
ЗЫ. Наследуется от TMemo, проблем возникнуть не должно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.02.2010, 09:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как минимум для того чтоб у тя на палитре появился компонент тебе нужно чтоб он наследовал от TComponent.
Покажи как у тя класс описан.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.02.2010, 09:53   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...бывал такой глючок, помогала кнопочка "show" в общем списке палитры компонентов (если он есть, установлен, но скрыт) и перезагрузка delphi/
Изображения
Тип файла: png Screen0.png (16.1 Кб, 146 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.02.2010, 10:14   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как минимум для того чтоб у тя на палитре появился компонент тебе нужно чтоб он наследовал от TComponent.
Покажи как у тя класс описан.
Код:
type

    // Создадим свой класс на основе TMemo
    THMemo = class(stdctrls.TMemo)
    private

        Keys:  TStringList;         // Ключевые слова для выделения
        KColor: TColor;           // Каким цветом выделять ключевые слова
        procedure WMPaint      (var Message: TWMPaint); message WM_PAINT;
        procedure WMSize       (var Message: TWMSize);  message WM_SIZE;
        procedure WMMove       (var Message: TWMMove);  message WM_MOVE;
        procedure WMVScroll    (var Message: TWMMove);  message WM_VSCROLL;
        procedure WMMousewheel (var Message: TWMMove);  message WM_MOUSEWHEEL;

    protected
        procedure Change; override;
        procedure KeyDown(var Key: Word; Shift: TShiftState); override;
        procedure KeyUp(var Key: Word; Shift: TShiftState); override;
        procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
        procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
        function  IsKeyWord (s: String): Boolean;    // TRUE - если перед нами ключевое слово
        procedure SetLines2(Value: TStringList);
        procedure SetKeyColor(Value: TColor);
    public

        procedure GotoXY (mCol,mLine: Integer );
        function  Line : Integer;
        function  Col : Integer;
        function  TopLine : Integer;
        function  VisibleLines: Integer;

        constructor Create(AOwner: TComponent); override;       // Наш конструктор
        destructor Destroy();                   override;       // Наш деструктор
    published

        property KeyWords: TStringList read Keys write SetLines2;
        property KeyColor: TColor read KColor write SetKeyColor;
    end;
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.02.2010, 10:17   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

raxp, у меня версия 7, там кнопка Delete (иногда Hide). Я вообще своего компонента там не найду. Типа не поставился, а заново поставить тоже не айда .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.02.2010, 10:28   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Подозреваю что ты это руками писал...
Расскажу как обычно делаю я а там сам решай:
1) Создаю проект Package
2) В нем Add New-Other выбираю Component
3) У казываю от кого наследоваться будем, там же указываю место в палитре и имя класса
4) ДЕлфи создала шаблон - теперь в нем уже пишу код
5) Инсталирую этот Pаckage - он грит мол добавлен компонент
6) если мне нужно изменить что-то в компоненте по ходу написания проги его содержащей, я меняю не закрывая того проекта, и просто перекомпилирываю все.
Если изменения затрагивают IDE (напрмер поменял че-то из раздела Published) то закрываю проект, открываю Package и перекомпилирываю его (Если в него был добавлен новый компонент то будет доступна кнопка Install - по которой добавится на палитру).
потом открываю свой проект и далее работаю как ни в чем не бывало.

Но главное - я не ручками создаю компонент, а пользуюсь для этого "мастером" делфийским, пусь сам мне шаблон накидает, у него это луче получается.

т.е. короче говоря у меня твой класс выглядит так:
Код:
unit Memo1;

interface

uses
  SysUtils, Classes, Controls, StdCtrls,Graphics,windows,messages;

type
  TMemo2 = class(TMemo)
 private

        Keys:  TStringList;         // Ключевые слова для выделения
        KColor: TColor;           // Каким цветом выделять ключевые слова
        procedure WMPaint      (var Message: TWMPaint); message WM_PAINT;
        procedure WMSize       (var Message: TWMSize);  message WM_SIZE;
        procedure WMMove       (var Message: TWMMove);  message WM_MOVE;
        procedure WMVScroll    (var Message: TWMMove);  message WM_VSCROLL;
        procedure WMMousewheel (var Message: TWMMove);  message WM_MOUSEWHEEL;

    protected

....
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.02.2010, 10:34   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Да, я до этого рукописный компонент в DRKB видел, он у меня до сих пор стоит , поставился с первого раза. Ну думал, чем мы хуже. Так-то все по сути тоже самое, а чего не устраивает так и не пойму.
Ну к примеру если я захочу другому компонент дать - как он его поставит, если я сам поставить его не могу .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.02.2010, 10:39   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
raxp, у меня версия 7, там кнопка Delete (иногда Hide). Я вообще своего компонента там не найду...
прокрути список слева вниз, там будет показать все - all и тогда кнопочки show-hide будут, а справа в общем списке ...так пробовал?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить компонент? iiunbreakableii Общие вопросы C/C++ 9 10.06.2009 09:01
Как добавить компонент в Delphi? Evgenii Компоненты Delphi 2 07.02.2009 12:55
Как добавить свой раздел в стандартное контекстное меню yaver Общие вопросы Delphi 2 26.11.2008 19:44
Как создать свой компонент? Д'якон Компоненты Delphi 1 21.05.2008 16:37