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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2010, 17:13   #1
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
Сообщение классы. свойства. read, write

всем доброго времени суток! решил я создать свой компонент.. а точнее расширить уже сущиствующий..(TLabel); суть моего компонента, TLinkLabel состоит в том чтобы сделать чтото подобное (визуально) ссылкам..
я добавил два новых свойства
Код:
eFont: TFont;
lFont: TFont;
первое - параметры шрифта при попадании курсора мышки на объект
второе - при выходе курсора..
пока я создавал наброски расширеного класса, то все нормально было, лейбл создавался цвет, параметры шрифта менялись.. кроче говоря все работало идеально...вот наброски кода:
Код:
unit Unit1;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TLinkLabel = class(TLabel)
    eFont: TFont;
    lFont: TFont;
    constructor create(ef,lf:TFont);
    procedure TLLMouseEnter(Sender:TObject);
    procedure TLLMouseLeave(Sender:TObject);
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
сonstructor TLinkLabel.create(ef,lf:TFont);
begin
  inherited create(nil);
  font := lf;
  eFont := ef;
  lFont := lf;
  onMouseEnter := TLLMouseEnter;
  onMouseLeave := TLLMouseLeave;
end;
procedure TLinkLabel.TLLMouseEnter(Sender: TObject);
begin
  font := eFont;
end;
procedure TLinkLabel.TLLMouseLeave(Sender: TObject);
begin
  font := lFont;
end;
procedure TForm1.Button1Click(Sender: TObject);
var lb:TLinkLabel;
    ef,lf:TFont;
begin
  ef:=TFont.Create;
  lf:=TFont.Create;
  ef.Color := $00FFCC00;
  ef.Style := [fsUnderline];
  lf.Color := $00CCAA00;
  lf.Style := [];
  lb:=TlinkLabel.create(ef,lf);
  lb.Parent := form1;
  lb.Caption := 'TLinkLabel';
  lb.Left := 8;
  lb.Top := 8;
end;
но когда дело дошло до создания отдельного компонента.. вот тут уже я и запутался...
я хочу созать два совойства
Код:
  mEnterFont: TFont;
  mLeaveFont: TFont;
.. какие были бы доступны пользователю чтобы тот мог менять параметры шрифта...но почемуто тупо не могу... знаю что делается все через read, и write, надо функции делать с таким же типом результата..
Код:
property mLeaveFont: TFont read getMEFont write setMEFont
но вот чтото я туплю и не могу это реализровать.. и к тому же я с этим никогда еще не практиковался толково... только теорию знаю.. но
грош цена тем знаниям, которые не знаешь как применить на практике
пожалуйста помогите реализировать...

Последний раз редактировалось lowercase; 15.09.2010 в 17:25.
lowercase вне форума Ответить с цитированием
Старый 15.09.2010, 18:31   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Почитайте лучше Архангельского, там принципы создания компонентов подробно освещены и примеры есть.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 15.09.2010, 18:43   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

А еще лучше (имхо) почитать Рэй Конопка "Создание оригинальных компонент в среде Delphi"
_Engine_ вне форума Ответить с цитированием
Старый 15.09.2010, 19:08   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А зачем Вы его создаете? Зачем изобретаете велосипед? Такие компоненты уже существуют (RzURLLable например) и все свойства остальные свойства: наведение и т.д. можно программно менять через свойства.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.09.2010, 19:53   #5
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

artemavd, человек, может, сам научиться хочет? Чтож его от этого отговаривать?
А готовых компонентов куча целая, это так. Но чтобы добавить/изменить свойства у уже скаченного компонента уметь же надо. Вот пусть товарищ литературу почитает на эту тему.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 15.09.2010, 20:01   #6
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

вродебы уже понял как надо сделать.. буду пытатся сделать...
p.s. спасибо за литературу)

Последний раз редактировалось lowercase; 15.09.2010 в 20:07.
lowercase вне форума Ответить с цитированием
Старый 15.09.2010, 20:31   #7
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Будут конкретные вопросы - обращайтесь
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
USB Read Write misterx Общие вопросы C/C++ 2 31.08.2010 17:27
document.write Flamberg JavaScript, Ajax 1 10.01.2010 15:07
FileStream. Как узнать сколько байтов в Read и Write надо написать? Манжосов Денис :) Помощь студентам 2 24.10.2008 08:29
Как подъобекту объекта добавить методы/свойства/классы? Izhic Компоненты Delphi 1 19.10.2008 13:02