| 
| 
 | Вопрос # 2 372/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Помогоите решить всё тотже  вопрос...выдает ошибку при установке на форме незнаю что и как но я уже на нескольких версиях Делфи и нескольких машинах тестил свой новый компонент от SpeedButton, сразу не получалось скомпилить а когда получилось выдаёт ошибку. ПОМОГИТЕ КРОВЬ ИЗ НОСУ НА ПОНЕДЕЛЬНИК НАДО СДАТЬ КУРСАК!!!! Унит прикрепил  может кто отладит запакуйте сразу в пакет. ПЛИЗ HELP!!!!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) Приложение:Переключить в обычный режим   [50126B51]{vcl120.bpl  } Graphics.TFont.SetColor (Line 2375, "Graphics.pas" + 1) + $0[037616B6]{Package1.bpl} Linkspeedbutton.THyperLinkSpeedButton + $1A[215478FF]{delphicoreide120.bpl} CompPalMgr.TComponentPalettePageItemDelegate.CreateComponent (Line
2472, "CompPalMgr.pas" + 2) + $7[20BB70EE]{designide120.bpl} ComponentDesigner.TComponentRoot.DoCreateComponent (Line 2304,
"ComponentDesigner.pas" + 10) + $17[20BB6B22]{designide120.bpl} ComponentDesigner.TComponentRoot.CreateComponent (Line 2165,
"ComponentDesigner.pas" + 1) + $1C[215446E0]{delphicoreide120.bpl} CompPalMgr.TPalettePageItem.Execute (Line 1232,
"CompPalMgr.pas" + 4) + $1E[2086E8F2]{coreide120.bpl} ToolFrm.TToolForm.DoItemExecute (Line 2524, "ToolFrm.pas" + 2)
+ $5[2086B21D]{coreide120.bpl} ToolFrm.TToolForm.PaletteButtonClicked (Line 1182,
"ToolFrm.pas" + 13) + $4[5022F4E5]{vcl120.bpl  } CategoryButtons.TCategoryButtons.DoItemClicked (Line 1827,
"CategoryButtons.pas" + 13) + $A[5022F29D]{vcl120.bpl  } CategoryButtons.TCategoryButtons.MouseUp (Line 1750,
"CategoryButtons.pas" + 13) + $C[50006EA8]{rtl120.bpl  } System.@CallDynaInst (Line 10189, "System.pas" + 3) + $0[501D1564]{vcl120.bpl  } Controls.TControl.DoMouseUp (Line 6884, "Controls.pas" + 2) + $1D[501D15E1]{vcl120.bpl  } Controls.TControl.WMLButtonUp (Line 6897, "Controls.pas" + 9) +
$6[501D0BFA]{vcl120.bpl  } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6[501D5287]{vcl120.bpl  } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) +
$6[50006DDA]{rtl120.bpl  } System.@IsClass (Line 10084, "System.pas" + 1) + $8[501FBAD0]{vcl120.bpl  } Forms.TApplication.DispatchAction (Line 10786, "Forms.pas" + 6) +
$F[501F0F88]{vcl120.bpl  } Forms.TCustomForm.WndProc (Line 3902, "Forms.pas" + 191) + $5[501D0820]{vcl120.bpl  } Controls.TControl.Perform (Line 6418, "Controls.pas" + 10) + $8[501FBAF5]{vcl120.bpl  } Forms.TApplication.DispatchAction (Line 10789, "Forms.pas" + 9) +
$A[501F9384]{vcl120.bpl  } Forms.TApplication.WndProc (Line 9212, "Forms.pas" + 87) + $E[501D4B93]{vcl120.bpl  } Controls.TWinControl.IsControlMouseMsg (Line 9119, "Controls.pas"
+ 1) + $9[501D5287]{vcl120.bpl  } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) +
$6[501D49A0]{vcl120.bpl  } Controls.TWinControl.MainWndProc (Line 9063, "Controls.pas" + 3)
+ $6[50057E04]{rtl120.bpl  } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0[2086AEBC]{coreide120.bpl} ToolFrm.TToolForm.PaletteHook (Line 1054, "ToolFrm.pas" + 14) +
$1E[50057E04]{rtl120.bpl  } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0[501F9EAB]{vcl120.bpl  } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) +
$1[501F9EEE]{vcl120.bpl  } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) +
$4[501FA219]{vcl120.bpl  } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3[004259D2]{bds.exe     } bds.bds (Line 196, "" + 7) + $7 
|  |   Вопрос задал: 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 (статус: 4-ый класс), 1 февраля 2009, 01:09 [#1]:PPS кровь из носу затыкают ваточкой и завтра ещё воскресенье  
 PPPS и не надо особо сильно волноваться, от этого все беды и несчастья. У меня например 2 недели назад было 7 долгов... и я был совершенно спокоен (чем сильно удивлял одногрупников ^^), поэтому у меня их щас осталось 2 (долга) и я получил продление сессии
 |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:21 [#2]:Спасибо за ответ))  но мог бы ты исправить прикреплённый мой юнит ?? |  
|   | Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:42 [#3]:Там исправлять то нечего... 
 constructor THyperLinkSpeedButton.Create(AOwner: TComponent);
 begin
 Inherited;
 Font.Color:=clBlue;
 Font.Style:=[fsBold];
 end;
 
 и всё... я вроде больше ошибок не нашел
 |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:42 [#4]:Всё Работает!!! А как же свойства тогда изменить типа шрифт где и что нужно вписать??? |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:44 [#5]:Спасибо пока отправил вы уже написали))) |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:46 [#6]:А новое событие не подскажите какое ещё можно добавить и что вписать??? |  
|   | Amidamaru (статус: 4-ый класс), 1 февраля 2009, 01:48 [#7]:inherited; просто вызывает метод класса-предка, как и любой другой метод. на нём выполнение не прекращается. Просто в конструкторе он должен быть первым, чтобы сначала выполнились конструкторы классов-предков, а потом уже изменять свойства и т.п. |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:53 [#8]:Мне по заданию нужно добавить хотя бы одно свойство и одно событие что вы мне подскажите??? |  
|   | 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;
 ...
 |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:55 [#10]:тоесть метод а не событие |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:55 [#11]:ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!! |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 01:57 [#12]:Я только непонял что препод имела ввиду под новым методом |  
|   | ubyou (статус: Посетитель), 1 февраля 2009, 02:13 [#14]:Ок обязательно  зайду)) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |