Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизCursors Найти похожие ветки
← →
Yanis © (2004-04-15 11:26) [0]Хочу написать компонент, для использования в программе своих курсоров. Например: в компоненте есть свойство Cursur, Control. В них соответственно указывается курсор(из файла *.cur) и компонент. А при работе программы у контрола отображается курсор, который я выбрал. Надеюсь понятно выразился!? Или мож компонент такой уже есть?
Как такой компонент написать?
← →
TUser © (2004-04-15 11:29) [1]
> Как такой компонент написать?
TNeponaitnoZachemNujniyCursorComponent = class
...
← →
Yanis © (2004-04-15 11:31) [2]Я вообще сам принцип спрашиваю :|
← →
clickmaker © (2004-04-15 11:36) [3]
> Надеюсь понятно выразился!?
Непонятно. Если имеешь в виду использование своих курсоров из ресурсов, то так примерно:
const
crMyCursor = 5;
Screen.Cursors[crMyCursor] := LoadCursor(HInstance, "MyCoolCursor");
Label1.Cursor := crMyCursor;
← →
Юрий Зотов © (2004-04-15 11:37) [4]> Yanis © (15.04.04 11:31) [2]
> Я вообще сам принцип спрашиваю
Книги, в которых рассказано о принципах создания компонентов, имеют объем в сотни страниц. Вы хотите, чтобы все это изложили прямо здесь? И считаете это возможным?
Я думаю, что online-форумы все же предназначены для КОНКРЕТНЫХ вопросов. Например: "Подскажите, хорошие ссылки или книги, где можно почитать о принципах создания компонентов".
← →
Yanis © (2004-04-15 11:37) [5]Нужно указать курсор из файла и "прикрепить" курсор к этому компоненту.
← →
Yanis © (2004-04-15 11:40) [6]Неужели это трудно!!!??? Мне нужен компонент по типу как в RxLib - Hook, в нём указываешь контрол и он отлавливает API сообщения. Нужно на подобии только с указанием курсора для этого контрола??????????????????
← →
Sun bittern © (2004-04-15 11:47) [7]Yanis © (15.04.04 11:40) [6]
>> Неужели это трудно!!!???
см.
Юрий Зотов © (15.04.04 11:37) [4]
← →
Yanis © (2004-04-15 11:50) [8]To [7]
Я и без тебя видел :( Не слепой!!!
Я же не прошу код компонента!!(хотя... :)) Принцип!!! Куда мыслить?
← →
Sun bittern © (2004-04-15 12:14) [9]Тока VCL
← →
Юрий Зотов © (2004-04-15 12:39) [10]> Yanis © (15.04.04 11:40) [6]
> Неужели это трудно!!!???
Сделать - нетрудно. А объяснить - трудно. Потому что очень много объяснять придется.
Скажите, Вы бы взялись объяснять тригонометрию ученику второго класса? Я бы - не взялся. А сказал: "Парень, ты сначала прочитай все учебники по математике с 3-го по 8-й класс, вот тогда тебе можно будет и о тригонометрии рассказывать".
Так вот - после того, как Вы усвоите принципы разработки компонентов, я готов оказать Вам конкретную помощь по разработке конкретного компонента. А раньше - сорри, не получится.
Начать рекомендую, например, с выбора класса-предка. Затем, раз уж у Вас будет ссылка на контрол, есть смысл изучить механизмы нотификации в компонентах и уже можно потихоньку начинать писать код. Для начала реализуйте в нем свойство Control - но грамотно, чтобы при работе с ним не возникало Access Violation (а при неграмотной реализации оно обязательно возникнет).
Правда, как только Вы начнете все это делать, тут же возникнет мысль, что связок "контрол-курсор" может быть много... и будут произнесены слова "список... массив... коллекция". Но это уж потом.
← →
Sun bittern © (2004-04-15 13:07) [11]type
TComponenter = class(TComponent)
private
{ Private declarations }
FCursor: TCursor;
FControl: TControl;
procedure SetCursor(Value: TCursor);
procedure SetControl(Value: TControl);
protected
{ Protected declarations }
constructor Create(AOwner: TComponent); Override;
Destructor Destroy; Override;
public
{ Public declarations }
published
{ Published declarations }
property Cursor: TCursor read FCursor write SetCursor;
property Control: TControl read FControl write SetControl;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Samples", [TComponenter]);
end;
{ TComponent1 }
constructor TComponenter.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TComponenter.Destroy;
begin
inherited Destroy;
end;
procedure TComponenter.SetControl(Value: TControl);
begin
if FControl <> Value then
begin
if FControl <> nil then RemoveFreeNotification(FControl);
FControl := Value;
if FControl <> nil then FreeNotification(FControl);
if FControl <> nil then FControl.Cursor := FCursor;
end;
end;
procedure TComponenter.SetCursor(Value: TCursor);
begin
if FCursor <> Value then
begin
FCursor := Value;
if FControl <> NIL then FControl.Cursor := Value;
end;
end;
end.
Но коллекции удобнее, как сказал Юрий Зотов
← →
Sun bittern © (2004-04-15 13:19) [12]Вот это промазал :(
protected
{ Protected declarations }
constructor Create(AOwner: TComponent); Override;
Destructor Destroy; Override;
надо в public
← →
Юрий Зотов © (2004-04-15 14:06) [13]> Sun bittern © (15.04.04 13:19) [12]
И не только это...
:о)
Например, нет Notification. Нет загрузки курсоров из файлов (о чем, собственно, и был вопрос)... желателен, конечно, и редактор свойства с предпросмотром (как Picture).
А конструктор с деструктором - зачем вообще их здесь надо перекрывать?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c