Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Constructor


Автор: Blindman 17.4.2005, 00:35
Раньше никогда не доводилось работать с конструкторами и деструкторами. Тут решил использовать пример из DRKB для уменьшения мерцания компонентов при перерисовке.

Код

constructor TMyControl.Create; 
begin 
  inherited; 
  ControlStyle := ControlStyle + [csOpaque]; 
end;


Дельфин ругается на этот код. Объясните как же заставить его заработать. Я понимаю что нужно что-то прописать дополнительно, но где? Пытался понять читая объяснение из книги, но там написано настолько заумным языком, что крыша едет.

Разжуйте всё поподробнее, плиз: где, что и как прописать.

Автор: Ch0bits 17.4.2005, 01:03
А какая ошибка конкретно?

Автор: Blindman 17.4.2005, 02:40
Undeclared identifier "Label1". На форме есть.

Вы мне напишите, что (допустим):

В секцию процедур допиши то-то
Конструктор вызывай так-то
И т.д.

А то я вообще не понимаю что и куда.

Автор: Snowy 18.4.2005, 12:38
Доктор, я когда чихаю, у тещи в тамбове под мышкой чешется...
Между приведенным кодом и этой ошибкой никакой связи.
Конструктор написан правильно.

Автор: Blindman 18.4.2005, 22:52
smile
Блин. Пишу я в модуле вышеприведенный пример и мне выдается такая ошибка (Undeclared identifier "Label1"). В чём загвоздка??? Пишу я только вышеприведенный код , неужели ничего дописывать не надо, неужели глюк Дельфи или моих кривых рук? Я даже не знаю что еще написать чтобы меня поняли.

Напишите мне пример использования конструктора, чтобы я понял что к чему.

Автор: Girder 19.4.2005, 11:34
Код
unit labelX;

interface

uses
  SysUtils, Classes, Controls, StdCtrls;

type
  tlabelX = class(TLabel)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [tlabelX]);
end;

constructor TlabelX.Create(AOwner:TComponent);
begin
 inherited Create(Aowner);
 ControlStyle := ControlStyle + [csOpaque]; 
end;

end.

Автор: Blindman 19.4.2005, 22:27
А можно небольшое пояснение? Что делает процедура:
Код

procedure Register;    
begin    
  RegisterComponents('Samples', [tlabelX]);    
end;

smile

Автор: сфе 20.4.2005, 06:46
Это регистрация собственного компонента. Инсталировав этот компонент, можно пользоваться вместо TLabel - TLabelX.

Автор: Blindman 21.4.2005, 00:12
То есть, даем компоненту второе имя. Так?

Автор: сфе 21.4.2005, 06:43
Открываешь в Делфе меню Компонент, нажимаешь Нью компонент, в качестве предка указываешь Тлабел и инстелируешь. На закладке Сампл, которая задана там по умолчанию появляется твой TLabelX картинка у него будет А. Удачи!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)