Когда я добавляю новые элементы управления в мою форму во время разработки, Delphi дает им имена по умолчанию. TLabel
элементы управления будут именоваться 'Label1'
, 'Label2'
и т. Д.
Я создал свой собственный класс компонентов: tMyLabel
. Обратите внимание на строчные буквы t
. Delphi называет эти элементы управления 'tMyLabel1'
, 'tMyLabel2'
и т. Д. Я не хочу 't' в начале.
Я понимаю, что это как-то связано с именем класса. В этой ситуации Delphi чувствителен к регистру.
Если я переименую свой класс в TMyLabel
, тогда все будет хорошо.
Почему Delphi чувствителен к регистру в этом вопросе? Могу ли я убедить Дельфи не проводить различий между 'tMyLabel'
и 'TMyLabel'
?
Я использую Delphi 10.2.3, но Delphi вёл себя так в течение многих лет.
Изменить (2018-04-30):
Кен попросил код
unit MySpeedButton;
interface
uses
SysUtils, Classes, Controls, Vcl.Graphics, Buttons;
type
tMySpeedButtonProps = class(TPersistent)
private
fParent : pointer ;
constructor Create( pParent : pointer );
destructor Destroy; override;
end;
type
tMySpeedButton = class( TSpeedButton )
private
fMyProps : tMySpeedButtonProps ;
protected
procedure Click ; override;
public
function GetCanvas: TCanvas; //Allow access to the Canvas procedure Paint ; override ;
constructor Create( AOwner : TComponent ); override;
destructor Destroy; override;
published
property TM : tMySpeedButtonProps read fMyProps write fMyProps;
end;
procedure Register;
implementation
uses
Forms, Windows;
constructor tMySpeedButtonProps.Create( pParent : pointer );
begin
inherited Create;
fParent := pParent ;
end;
destructor tMySpeedButtonProps.Destroy;
begin
inherited Destroy;
end;
constructor tMySpeedButton.Create(AOwner: TComponent);
begin
fMyProps := tMySpeedButtonProps.Create( self );
inherited Create(AOwner);
{$ifdef RegisterFormular }
{$endif}
end;
destructor tMySpeedButton.destroy;
begin
fMyProps.Free;
inherited destroy;
end;
procedure tMySpeedButton.Click ;
begin
inherited Click;
end;
procedure tMySpeedButton.Paint ;
begin
inherited Paint;
end;
function tMySpeedButton.GetCanvas: TCanvas;
begin
Result:= Canvas;
end;
procedure Register;
begin
RegisterComponents( 'Test' , [ tMySpeedButton ] );
end;
end.
После компиляции и регистрации tMySpeedButton
я получаю нежелательные имена, начинающиеся с 't'.