Nov 16, 2011

Ajustar IFrame de acordo com conteúdo

Há algum tempo tive o problema de redimensionar um iframe de acordo com o conteúdo , conforme o conteúdo aumenta, o iframe aumenta também.

Para realizar esta façanha, seguir os seguintes passos:

Na página conteúdo ( que ficará dentro do iframe )

Colocar o seguinte código.



<body onload="atualizaIframe();">



criar uma div com o nome "container" , para assim , conseguir pegar a altura total, para assim, alterar o height do iframe da página pai.

função JavaScript:



function atualizaIframe() {
  var tamanho = document.getElementById("container").offsetHeight;
  parent.document.getElementById("ifrm").style.height = tamanho;  
}




Na página pai (parent), onde ficará o iframe

colocar o código do iframe.Não esquecer de setar a propriedade scrolling para "no" e definir o id do iframe para "ifrm" no caso da função javascript atual, se quiser alterar o nome, alterar na função também



<iframe width="100%" scrolling="no" height="600px" frameborder="0" id="ifrm"
allowtransparency="true" heigth="100%" marginwidth="10" marginheight="0"
style="padding: 0pt; margin: 0pt; height: 10111px;" src="http://paginafilha/conteudo">
</iframe>



 Pronto, de acordo com o crescimento do conteúdo, a altura do iframe aumenta também.

Outra solução: http://stackoverflow.com/a/9976309/1607490


Ambas soluções funcionam somente se o os conteúdos estiverem no mesmo domínio! mais informações sobre isto em: Same Origin Policy

 

Nov 10, 2011

Foco inicial em controle

Hoje tive um problema simples mas que gastei algum tempo pesquisando como solucionar, como sou muito legal, colocarei a solução aqui.


Ao tentar colocar foco em algum controle, como por exemplo um TextBox, o método Focus (tanto no FormLoad quanto no construtor, do controle retornava falso e a propriedade CanFocus também.Não sei porque  isto ocorre, talvez porque o controle não foi completamente contruido, mas a solução é a seguinte:

Colocar chamar o metodo Focus no Evento FormShown , do formulário.


private void Form_Shown(object sender, EventArgs e)
{
    textBox1.Focus();
}


Créditos para onde eu encontrei a solução:

Tópico no StackOverflow

HotKey em um formulário

O evento OnKeyPress, KeyDown ou qualquer outro do genero não será disparado se o foco estiver em qualquer outro controle, mesmo estando dentro do formulário,

Para adicionar uma hotkey em um formulário, simplismente sobreescreva o Método
"ProcessCmdKey" .


 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)  
     {  
       switch (keyData)  
       {  
         case Keys.F5:  
           ExecutarMetodoF5();  
           return true;  
         case Keys.F9:  
           ExecutarMetodoF9();  
           return true;  
         case Keys.F10:  
           ExecutarMetodoF10();  
           return true;  
       }  
       return base.ProcessCmdKey(ref msg, keyData);  
     }  

Pronto, qualquer tecla pressionada no formulário será capturada.