2008-11-25 7 views
2

Quelqu'un peut-il me dire pourquoi la seconde distribution ne parvient pas à compiler dans Delphi 7?Coulée d'un TWebBrowser en tant que TWinControl

var 
    WebBrowser: TWebBrowser; 
begin 
    WebBrowser := TWebBrowser.Create(Self); 
    TWinControl(WebBrowser).Parent := Self; 
    (WebBrowser as TWinControl).Parent := Self; // fail here 
end 

Parent dans TWebBrowser est une propriété en lecture seule IDispatch, mais pourquoi le premier casting voir la propriété parent TWinControl ok, mais le second ne fonctionne pas?

Merci

Répondre

7

La première utilisation de fonte aucun contrôle, il suppose que le programmeur est juste et continue. La deuxième distribution utilise un contrôle de cohérence. (Provoque une exception si la distribution n'est pas valide). Je pense que dans ce cas, le compilateur est confus à cause des propriétés nommées similaires. Ce pourrait même être un optimiseur tropenthousiaste.

Au moins,

var 
    wc : TWinControl; 
begin 
    wc := (WebBrowser as TWinControl); 
    wc.Parent := Self; 
end; 

Works. Il y a donc un contournement.