Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А всё-таки, почему не написать свой компонент? Ведь вы уже все сделали, осталось только собрать в пакет и инсталлировать.
type
TMemo = class(StdCtrls.TMemo)
...
end;
В результате в design-time ничего не меняется — там остается стандартный TMemo, а в run-time имеем доступ ко всем новым «фичам» нового класса.
Вот, кстати, на кой чёрт там указатель?
var параметры придумали миллиард лет назад. Ещё в Borland Pascal были.
function F1 (var m : TCustomMemo) : boolean;F1 (Memo1);{$apptype console}
program Test;
uses
System.SysUtils;
type
TBase = class(TObject)
end;
TFoo = class(TBase)
end;
TBar = class(TBase)
end;
TXyz = class(TObject)
end;
TUtility = class(TObject)
public
class procedure SurpriseMe<T: TBase>(var AValue: T);
end;
class procedure TUtility.SurpriseMe<T>(var AValue: T);
begin
FreeAndNil(AValue);
AValue := T(TBar.Create());
end;
var
ObjFoo: TBase;
ObjXyz: TXyz;
begin
ObjFoo := TFoo.Create();
try
writeln('Before:'#9, ObjFoo.ClassName);
TUtility.SurpriseMe(ObjFoo);
writeln('After:'#9, ObjFoo.ClassName);
finally
FreeAndNil(ObjFoo);
end;
// Will fail to compile at SurpriseMe() call.
{
ObjXyz := TXyz.Create();
try
writeln('Before:'#9, ObjXyz.ClassName);
TUtility.SurpriseMe(ObjXyz);
writeln('After:'#9, ObjXyz.ClassName);
finally
FreeAndNil(ObjXyz);
end;
}
end.
Как в TMemo сделать вертикальное выравнивание, отступы и TextHint