Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.053 c
1-1082015581
siriusP
2004-04-15 11:53
2004.05.02
Как сохранить, загрузить содержимое фрейма в Bitmap?


7-1079075427
smu
2004-03-12 10:10
2004.05.02
Как очистить кэш дисковода?


4-1078153109
_aga
2004-03-01 17:58
2004.05.02
ActiveX and WinAPI


1-1081864863
Rusar
2004-04-13 18:01
2004.05.02
Вопрос по ListView


14-1081687647
Thor
2004-04-11 16:47
2004.05.02
посоветуйте книгу по PHP.





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