TButton veya TEdit gibi varolan bir VCL bileşeninin özel bir sürümünü tanımlamak için aynı sınıf adıyla bir hack yapmanın bir örneğini gördüm ve bunu yapmak için bir şeyler yapın. DFM streamer, orijinal yerine sürümünüzü başlatır. Maalesef, bunu yapabilmem gereken bir durumdayım ve yazımı bulamıyorum. Bunu nasıl başaracağınız konusunda bilgi nereden bulacağını bilen var mı?Delphi içinde bir bileşen sınıfının değiştirilmesi
type
TMyForm = class(TForm)
protected
procedure ReadState(Reader: TReader); override;
end;
procedure TMyForm.ReadState(Reader: TReader);
begin
Reader.OnFindComponentClass := FindComponentClass;
inherited;
end;
procedure TMyForm.FindComponentClass(Reader: TReader; const ClassName: string;
var ComponentClass: TComponentClass);
begin
if ComponentClass=TButton then begin
ComponentClass := TMySuperDuperButton;
end else if ComponentClass=TEdit then begin
ComponentClass := TMyTotallyAwesomeEdit;
end;
end;
bunu yapmak için muhtemel sayısız başka yolları da vardır, ama bu böyle yaparız: En formda
Çantalarınızdan hanıma baktınız mı? http://windwings.wordpress.com/2009/10/07/turbocharging-delphi-2010-2-adding-dynamic-functionality-to-3rd-parties-the-solution/#comment-1066 ;-) –
@ Jørn Bu cevap şöyle: http://stackoverflow.com/questions/4685863/replacing-a-component-class-in-delphi/4686920#4686920 –
@Jeroen, biliyorum ... Sadece göstermek istedim @ Mason onun "bir yerlerde gördü". :-) –