Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 372

/ вопрос открыт /

Здравствуйте, эксперты!
Помогоите решить всё тотже вопрос...выдает ошибку при установке на форме незнаю что и как но я уже на нескольких версиях Делфи и нескольких машинах тестил свой новый компонент от SpeedButton, сразу не получалось скомпилить а когда получилось выдаёт ошибку. ПОМОГИТЕ КРОВЬ ИЗ НОСУ НА ПОНЕДЕЛЬНИК НАДО СДАТЬ КУРСАК!!!! Унит прикрепил может кто отладит запакуйте сразу в пакет. ПЛИЗ HELP!!!!

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1.  
  2.  
  3. [50126B51]{vcl120.bpl } Graphics.TFont.SetColor (Line 2375, "Graphics.pas" + 1) + $0
  4. [037616B6]{Package1.bpl} Linkspeedbutton.THyperLinkSpeedButton + $1A
  5. [215478FF]{delphicoreide120.bpl} CompPalMgr.TComponentPalettePageItemDelegate.CreateComponent (Line 2472, "CompPalMgr.pas" + 2) + $7
  6. [20BB70EE]{designide120.bpl} ComponentDesigner.TComponentRoot.DoCreateComponent (Line 2304, "ComponentDesigner.pas" + 10) + $17
  7. [20BB6B22]{designide120.bpl} ComponentDesigner.TComponentRoot.CreateComponent (Line 2165, "ComponentDesigner.pas" + 1) + $1C
  8. [215446E0]{delphicoreide120.bpl} CompPalMgr.TPalettePageItem.Execute (Line 1232, "CompPalMgr.pas" + 4) + $1E
  9. [2086E8F2]{coreide120.bpl} ToolFrm.TToolForm.DoItemExecute (Line 2524, "ToolFrm.pas" + 2) + $5
  10. [2086B21D]{coreide120.bpl} ToolFrm.TToolForm.PaletteButtonClicked (Line 1182, "ToolFrm.pas" + 13) + $4
  11. [5022F4E5]{vcl120.bpl } CategoryButtons.TCategoryButtons.DoItemClicked (Line 1827, "CategoryButtons.pas" + 13) + $A
  12. [5022F29D]{vcl120.bpl } CategoryButtons.TCategoryButtons.MouseUp (Line 1750, "CategoryButtons.pas" + 13) + $C
  13. [50006EA8]{rtl120.bpl } System.@CallDynaInst (Line 10189, "System.pas" + 3) + $0
  14. [501D1564]{vcl120.bpl } Controls.TControl.DoMouseUp (Line 6884, "Controls.pas" + 2) + $1D
  15. [501D15E1]{vcl120.bpl } Controls.TControl.WMLButtonUp (Line 6897, "Controls.pas" + 9) + $6
  16. [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
  17. [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
  18. [50006DDA]{rtl120.bpl } System.@IsClass (Line 10084, "System.pas" + 1) + $8
  19. [501FBAD0]{vcl120.bpl } Forms.TApplication.DispatchAction (Line 10786, "Forms.pas" + 6) + $F
  20. [501F0F88]{vcl120.bpl } Forms.TCustomForm.WndProc (Line 3902, "Forms.pas" + 191) + $5
  21. [501D0820]{vcl120.bpl } Controls.TControl.Perform (Line 6418, "Controls.pas" + 10) + $8
  22. [501FBAF5]{vcl120.bpl } Forms.TApplication.DispatchAction (Line 10789, "Forms.pas" + 9) + $A
  23. [501F9384]{vcl120.bpl } Forms.TApplication.WndProc (Line 9212, "Forms.pas" + 87) + $E
  24. [501D4B93]{vcl120.bpl } Controls.TWinControl.IsControlMouseMsg (Line 9119, "Controls.pas" + 1) + $9
  25. [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
  26. [501D49A0]{vcl120.bpl } Controls.TWinControl.MainWndProc (Line 9063, "Controls.pas" + 3) + $6
  27. [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
  28. [2086AEBC]{coreide120.bpl} ToolFrm.TToolForm.PaletteHook (Line 1054, "ToolFrm.pas" + 14) + $1E
  29. [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
  30. [501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
  31. [501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
  32. [501FA219]{vcl120.bpl } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3
  33. [004259D2]{bds.exe } bds.bds (Line 196, "" + 7) + $7
  34.  


ubyou Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: ubyou (статус: Посетитель)
Вопрос отправлен: 1 февраля 2009, 00:35
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Amidamaru

Здравствуйте, ubyou!
Ну конечно у тебя будет ошибка.
Ошибка в конструктуре. Он сам по себе просто создаёт объект и всё!
Твой Create хоть и использует дерективу override но в самом конструкторе нигде не вызывается контруктор класса-предка. Т.е. у тебя сам компонент как таковой не создётся. И ты ещё в конструкторе изменяешь свойство Font, которое вообщето никто ещё и не создал даже.
Конструктор создаёт объект - это его единственное отличие от обычного метода, поэтому и в конструкторе нужно вызывать
inherited Create(AOwner); {или прсто inherited;}
причем с самого начала, а не как в методе Click.

PS Если для создания "заготовки" методов использовать ctrl+shift+C , то в заготовках конструкторов первой строчкой будет inherited; а в деструкторах это будет последней строчкой

Ответ отправил: Amidamaru (статус: 4-ый класс)
Время отправки: 1 февраля 2009, 01:02
Оценка за ответ: 5

Комментарий к оценке: Действительно настоящая помощь!!! Спасибо!!!

Мини-форум вопроса

Всего сообщений: 14; последнее сообщение — 1 февраля 2009, 02:13; участников в обсуждении: 2.
Amidamaru

Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:09 [#1]:

PPS кровь из носу затыкают ваточкой и завтра ещё воскресенье :)

PPPS и не надо особо сильно волноваться, от этого все беды и несчастья. У меня например 2 недели назад было 7 долгов... и я был совершенно спокоен (чем сильно удивлял одногрупников ^^), поэтому у меня их щас осталось 2 (долга) и я получил продление сессии
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:21 [#2]:

Спасибо за ответ)) но мог бы ты исправить прикреплённый мой юнит ??
Amidamaru

Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:42 [#3]:

Там исправлять то нечего...

constructor THyperLinkSpeedButton.Create(AOwner: TComponent);
begin
Inherited;
Font.Color:=clBlue;
Font.Style:=[fsBold];
end;

и всё... я вроде больше ошибок не нашел
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:42 [#4]:

Всё Работает!!! А как же свойства тогда изменить типа шрифт где и что нужно вписать???
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:44 [#5]:

Спасибо пока отправил вы уже написали)))
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:46 [#6]:

А новое событие не подскажите какое ещё можно добавить и что вписать???
Amidamaru

Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:48 [#7]:

inherited; просто вызывает метод класса-предка, как и любой другой метод. на нём выполнение не прекращается. Просто в конструкторе он должен быть первым, чтобы сначала выполнились конструкторы классов-предков, а потом уже изменять свойства и т.п.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:53 [#8]:

Мне по заданию нужно добавить хотя бы одно свойство и одно событие что вы мне подскажите???
Amidamaru

Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:54 [#9]:

Ну первое что приходит в голову - OnWebLink которое происходит при открытии ссылки

...
property OnWebLink:TNotifyEvent read FOnWebLink write FOnWebLink; {тут нажимаем ctrl+shift+C}
...
procedure THyperLinkSpeedButton.Click;
begin
if FWebLink <> '' then
begin
ShellExecute(0,'open',PChar(FWebLink),nil,nil,SW_SHOW);
if assigned(FOnWebLink) then
FOnWebLink(Self);
end;
inherited Click;
end;
...
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:55 [#10]:

тоесть метод а не событие
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:55 [#11]:

ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 01:57 [#12]:

Я только непонял что препод имела ввиду под новым методом
Amidamaru

Amidamaru (статус: 4-ый класс), 1 февраля 2009, 02:07 [#13]:

Я сейчас уже ложусь спать, по поводу новых методов поговорим днем :) т.к. я раньше 12.00 MSK не проснусь :D

Если сможете - заходите в irc, я там практически постоянно
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ubyou

ubyou (статус: Посетитель), 1 февраля 2009, 02:13 [#14]:

Ок обязательно зайду))

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.02 сек.