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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
14-1081706466
smb
2004-04-11 22:01
2004.05.02
кто-нибудь знает?


4-1078768072
Wasp
2004-03-08 20:47
2004.05.02
Форма в DLL


1-1082109503
Андрей Сенченко
2004-04-16 13:58
2004.05.02
Ширина текста в пикслелах .


11-1065522331
Ал
2003-10-07 14:25
2004.05.02
Memproof показал на утечку при работе с записями


7-1074853800
ZMaximI
2004-01-23 13:30
2004.05.02
Байты и Биты