User LoL Posted April 8, 2013 at 04:44 AM Report #502078 Posted April 8, 2013 at 04:44 AM É o seguinte, eu tenho um form mdi pai, ele tem um controle, que cria um form mdi filho,com um textbox, e no mdi pai existe um botao para mandar o texto da area de transferencia para o textbox do form mdi filho que estiver ativo,mas nao estou conseguindo fazer isso,alguem pode me ajudar,a identificar o mdi filho ativo e colar o texto no textbox dele? E outra coisa, o mdi filho pode ser movido pra todos os lados,entao as vezes ele some,quando é movido para as bordas,nao tem como bloquear as bordas do mdi pai para delimitar ate onde o mdi filho pode ser arrastado?
NunoDinis Posted April 8, 2013 at 08:04 AM Report #502083 Posted April 8, 2013 at 08:04 AM É o seguinte, eu tenho um form mdi pai, ele tem um controle, que cria um form mdi filho,com um textbox, e no mdi pai existe um botao para mandar o texto da area de transferencia para o textbox do form mdi filho que estiver ativo,mas nao estou conseguindo fazer isso,alguem pode me ajudar,a identificar o mdi filho ativo e colar o texto no textbox dele? Para transportares valores entre formulários tens que usar classes. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
User LoL Posted April 9, 2013 at 03:54 AM Author Report #502264 Posted April 9, 2013 at 03:54 AM poderia me dar um exemplo simples, de como incluir o texto "Teste" no textbox do mdi filho que estiver ativo? E sobre a questão de ''bloquear'' as bordas do mdi pai, como o faço?
NunoDinis Posted April 9, 2013 at 08:18 AM Report #502278 Posted April 9, 2013 at 08:18 AM Tu queres, por exemplo, carregar no mdi pai e que os dados te apareçam no mdi filho ? Isso das bordas já não faço ideia, mas certamente virão-te ajudar.. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
User LoL Posted April 9, 2013 at 03:55 PM Author Report #502357 Posted April 9, 2013 at 03:55 PM Vou explicar melhor. Para mandar adicionar um texto em uma textbox, o código é assim textbox.text = "Teste" Acontece,que, o botão está no mdi pai, e o textbox no mdi filho, e pode ser aberto varios mdi filho ao mesmo tempo, por isso queria que o codigo identificasse qual mdi filho esta em foco,ativo, e mandasse o texto para o textbox desse mdi filho que estiver ativo
User LoL Posted April 11, 2013 at 04:00 PM Author Report #502837 Posted April 11, 2013 at 04:00 PM Ninguém mais tem uma sugestão?
NunoDinis Posted April 12, 2013 at 08:19 AM Report #502910 Posted April 12, 2013 at 08:19 AM Tenta desta forma: http://www.macoratti.net/10/06/vbn_vef1.htm Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
acao Posted April 12, 2013 at 10:14 AM Report #502922 Posted April 12, 2013 at 10:14 AM (edited) Acontece,que, o botão está no mdi pai, e o textbox no mdi filho, e pode ser aberto varios mdi filho ao mesmo tempo, por isso queria que o codigo identificasse qual mdi filho esta em foco,ativo, e mandasse o texto para o textbox desse mdi filho que estiver ativo boas veja se é isto que você necessita: no modulo crie uma variável publica, que será carregada com o valor que pretende obter na textbox, carregamento que terá que ser feito antes de criar os n forms, ao criar os form no evento «MouseEnter» coloque «me.textbox?.text = Variável». para obter o nome do form que tem o foco nesse evento coloque o seguinte cod: «msgbox"me.text"» espero ter ajudado cumps acao Edited April 12, 2013 at 10:16 AM by acao
FasterProgm Posted April 12, 2013 at 10:58 AM Report #502933 Posted April 12, 2013 at 10:58 AM É o seguinte, eu tenho um form mdi pai, ele tem um controle, que cria um form mdi filho,com um textbox, e no mdi pai existe um botao para mandar o texto da area de transferencia para o textbox do form mdi filho que estiver ativo,mas nao estou conseguindo fazer isso,alguem pode me ajudar,a identificar o mdi filho ativo e colar o texto no textbox dele? E outra coisa, o mdi filho pode ser movido pra todos os lados,entao as vezes ele some,quando é movido para as bordas,nao tem como bloquear as bordas do mdi pai para delimitar ate onde o mdi filho pode ser arrastado? Tenta com uma variável publica, deve chegar para isso "Sintax é a seguinte: Public nome_da_variável As tipo_de_dados_da_variável exemplo Public var as string"
Nelson Sousa Posted April 12, 2013 at 12:39 PM Report #502949 Posted April 12, 2013 at 12:39 PM Olá, NomedoMDI.NomedaText.Text = "teste" O MDI deverá estar carregado. Um Abraço, Nelson Sousa
User LoL Posted April 13, 2013 at 04:40 AM Author Report #503045 Posted April 13, 2013 at 04:40 AM (edited) Tenta desta forma: http://www.macoratti.net/10/06/vbn_vef1.htm Não funcionou de nenhuma forma, porque, como eu já havia explicado, podem ser abertos diversos forms2 identicos,usando esse codigo Dim frm = New Form2 frm = frm frm.Show() frm.MdiParent = Me tentei assim e também nao funcionou, o texto não passa para o form2 My.Forms.Form2.RichTextBox1.Text = ("teste") Edited April 13, 2013 at 04:40 AM by User LoL
User LoL Posted April 13, 2013 at 05:30 AM Author Report #503048 Posted April 13, 2013 at 05:30 AM Procurando pela internet,encontrei esse código que faz quase aquilo que eu queria.Esse código verifica qual mdi filho está ativo, independente de quantos sejam, e copia o texto do richtextbox selecionado,gostaria de adaptar para ao inves de copiar, ele colar um texto nessa richtextbox 'Verifica o mdi ativo. Dim activeChild As Form = Me.ActiveMdiChild ' If there is an active child form, find the active control, which ' in this example should be a RichTextBox. If (Not activeChild Is Nothing) Then Dim theBox As RichTextBox = _ TryCast(activeChild.ActiveControl, RichTextBox) If (Not theBox Is Nothing) Then 'Copia texto selecionado. Clipboard.SetDataObject(theBox.SelectedText) Else MessageBox.Show("Nenhum texto em richtextbox foi selecionado") End If End If
acao Posted April 13, 2013 at 01:36 PM Report #503081 Posted April 13, 2013 at 01:36 PM (edited) Não funcionou de nenhuma forma, porque, como eu já havia explicado, podem ser abertos diversos forms2 identicos,usando esse codigo Dim frm = New Form2 frm = frm frm.Show() frm.MdiParent = Me tentei assim e também nao funcionou, o texto não passa para o form2 My.Forms.Form2.RichTextBox1.Text = ("teste") no exemplo que te dei se passares o rato emcima do form ele carrega a textbox. aqui se sabes que é o form2 e so teres a variável publica e depois no evento load do form2 carregar a texto box. me.txtbox.text = VariavelPublica. cumps acao Edited April 13, 2013 at 01:38 PM by acao
User LoL Posted April 13, 2013 at 03:56 PM Author Report #503091 Posted April 13, 2013 at 03:56 PM Resolvi que vou deixar os comandos nos proprios mdi filhos. Agora, alguém pode me dizer como eu faço pra "bloquear" as bordas do mdi pai para que os mdi filho não ultrapasse determinada area,e consequentemente,fazendo uma scrollbar aparecer,oque se torna chato.
acao Posted April 13, 2013 at 09:42 PM Report #503117 Posted April 13, 2013 at 09:42 PM (edited) boas faz mais uma tentativa com o teu cod, mas altera ("Teste") para variável publica, eu aqui não posso testar mas acredito que dê: My.Forms.Form2.RichTextBox1.Text = VariaveloPublica cumps acao Edited April 13, 2013 at 09:42 PM by acao
User LoL Posted April 14, 2013 at 03:23 AM Author Report #503129 Posted April 14, 2013 at 03:23 AM Eu decidi por deixar os controles no mdi filho,pois estava dando problema com os controles no mdi pai,tem que dar o foco para o mdi filho,e depois para a richtextbox,para ir o texto,é mais conveniente deixar no mdi filho. Agora so queria saber como e´que faço para "bloquear" as bordas do mdi pai
User LoL Posted April 17, 2013 at 05:20 AM Author Report #503508 Posted April 17, 2013 at 05:20 AM nenhuma sugestão? não teria alguma propriedade para atribuir ao mdi pai,para que os mdi filho não sumissem da tela,e ficassem sempre dentro do mdi pai?
Nelson Sousa Posted April 18, 2013 at 12:24 PM Report #503789 Posted April 18, 2013 at 12:24 PM Sim, No evento load do form mdi coloque: MdiParent = NomeDoSeuFormPai Um Abraço, Nelson Sousa
ribeiro55 Posted April 18, 2013 at 06:24 PM Report #503877 Posted April 18, 2013 at 06:24 PM (edited) Bem, há muitas formas de fazer isto. A mais simples é quando se trata de algo rígido, que é o caso. O que tu queres (ou querias, mas ficas a saber) é causar determinado efeito na janela activa. Logo aqui, é certinho que tens de trabalhar com a propriedade ActiveMdiChild, que te vai dar acesso directo à Form que estiver activa, se alguma. Pois bem, quando desenhas a form2 e estás a adicionar uma caixa de texto, ou lá o que seja, estás na verdade a oferecer mais membros ao tipo Form2. Se os membros forem públicos, sempre que faças referência à Form2, terás acesso a eles. O primeiro passo é criar uma forma controlada de afectar o que pretendes no Form2. Com o mais básico, enviar uma string para uma caixa de texto, basta definir o seguinte membro na form2: Public Sub InjectarTexto(Texto As String) TextBox1.Text = Texto End Sub Na MDI parent, a única coisa que tens de fazer é indicar que a referência à ActiveMdiForm é na verdade do tipo Form2. Ao fazê-lo, passas a ter acesso ao método que acabaste de definir. Algo tão simples como: If ActiveMdiChild IsNot Nothing Then Dim Alvo As Form2 = ActiveMdiChild Alvo.InjectarTexto("yey") End If Já fazia o que tu querias. Fosse lá enviar "yey", despoletar uma acção ou lá o que queiras. A segunda parte que referes também não é complicada, e passa um bocadinho por o que a lógica anterior obriga a passar, mas ao contrário. A MDIParent não quer saber dos filhos. Melhor, não se preocupa com os eventos que são disparados nem tem consciência de onde andam nem o que fazem. Logo aqui, só há duas coisas que podes fazer: ou iteras activamente a coleção MDIChildren e verificas se andam para além dos limites do pai, ou fazes com que os próprios filhos verifiquem isso, deixando o pai sossegadinho. Vou-te mostrar a opção não-activa, que compreende passar a lógica de verificação para os filhos. No teu Form2 colocas o seguinte: Private Sub Form2_DragLeave(sender As Object, e As EventArgs) Handles Me.DragLeave Adaptar() End Sub Private Sub Form2_Locationchanged(sender As Object, e As EventArgs) Handles Me.Locationchanged 'Adaptar() 'Podes activar este, mas a verificação básica abaixo fica um pouco "choppy" End Sub Private Sub Form2_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd Adaptar() End Sub Private Sub Adaptar() Dim MDI As Form = Me.MdiParent If Me.Left > MDI.Width - Me.Width - 5 Then Me.Left = MDI.Width - Me.Width - 5 End If If Me.Top > MDI.Height - Me.Height - 5 Then Me.Top = MDI.Height - Me.Height - 5 End If If Me.Top < 5 Then Me.Top = 5 If Me.Left < 5 Then Me.Left = 5 End Sub Resumidamente, cada filho verifica se está fora dos limites do pai sempre que termina um resize, um drag e até se quiseres, activamente com a troca de localização (fica um pouco choppy com essas verificações) Edited April 18, 2013 at 06:32 PM by ribeiro55 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
User LoL Posted April 18, 2013 at 07:33 PM Author Report #503887 Posted April 18, 2013 at 07:33 PM Funcionou certinho o código de manter os Mdi filhos dentro do Mdi pai, oque ocorreu é que, quando eu pressiono o botão de abrir um novo form2,cujo botão tem esse código: Dim frm = New Form2 frm = frm frm.Show() frm.MdiParent = Me Ocorre tal erro: Referência de objeto não definida para uma instância de um objeto. Na seguinte linha: If Me.Left > MDI.Width - Me.Width - 5 Then
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now