08. november 2000 - 01:04Der er
2 kommentarer og 2 løsninger
Override accesmethods i TComponent??
Jeg har lavet min egen komponent-kontrol som nedarver fra TCustomControl. Den arver nogle (published) properties (eks. Width) fra TControl. Jeg kunne godt tænke mig at udføre noget kode når man eksempelvis ændre Width. Jeg kunne forestille mig at Width var deklareret sådan:
published property Width:integer write SetWidth read FWidth;
jeg kunne godt tænke mig at override SetWidth til f.eks:
procedure TMinKontrol.SetWidth(w:integer); begin inherited SetWidth(w); //gør noget end;
men TControl.SetWidth er ikke virtual/dynamic så det kan man ikke. Alternativet er at override selve propetyen Width, men det er ikke ønskeligt da properties er statisk bundne det vil sige at
var k:TControl; begin k := TMinKontrol.Create(self) k.Widt := 100;
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
ugge> Hvis det skal give mening at tale om viden af din kontrol, må du være igang med at lave et grafisk komponent. Ergo har den et Windows handle ... Så kan du far fat i dine dimentioner ved hjælp af Windows.GetClientRect()
Så kan du gøre noget alla det her : procedure tMyComponent.SetHeight(const Value: Integer); var Rect : TRect; begin FHeight := Value; windows.GetClientRect(Handle,Rect); FWidth := Rect.Bottom - Rect.Top; SetBounds(Rect.Left,Rect.Top,FWidth,fHeight);
end;
procedure tMyComponent.SetWidth(const Value: integer); var Rect : TRect; begin FWidth := Value; windows.GetClientRect(Handle,Rect); FHeight := Rect.Bottom - Rect.Top; SetBounds(Rect.Left,Rect.Top,FWidth,fHeight); end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.