USERCONTROL - ALGUEM AJUDA?

MICROSCHEME 20/07/2010 19:58:49
#347979

Seguinte:

Tô apanhando porque não sei ( não tenho vergonha de dizer que não sei ), mas como não consigo abrir um
terceiro form e fecha-lo sem fechar o programa inteiro ( abrir, abre, o 1º, o 2º e o 3º ) mas quando fecho o 3º
fecha tudo.

Então resolvi criar um usercontrol pois ocx precisa de registro e não é em qualquer máquina ( principalmente
no trampo ) que se consegue registrar algo, mas um usercontrol dentro do aplicativo blz . . .

Primeira imagem:
http://img818.imageshack.us/img818/120/printerpreview000.jpg

Segunda imagem:
http://img805.imageshack.us/img805/2459/printerpreview001.jpg

O que ocorre:

o programa abre a primeira tela, quando clico no button visualizar ele torna visivel o userform da 2ª imagem
só que os controles do usercontrol estão todos programados mas não consigo usa-los, toda vêz que clico
em algo do usercontrol ele desaparece e volta a imagem da 1ª tela

Será que alguém manja e pode ajudar ? ? ?

. . .
ASHKATCHUP 20/07/2010 20:01:12
#347980
Qual o código que você usa para fechar o terceiro form?
Tenta


Unload Form3
MICROSCHEME 20/07/2010 20:07:05
#347981

Mano:

no form principal (form1) clico no menu abrir form2 - abre o form2 (se fecho form2 voltra pro form1) blz . . .

no form 2 tenho um button abre o form3 - blz - abre o form3

mas no form3 qualquer comando que dou pra fechar e voltar pro form2 fecha tudo ( ide - executável)

no form3 tá unload form3

. . .

ASHKATCHUP 20/07/2010 20:17:16
#347982
Cara, deve ter alguma coisa que ta fazendo isso... posta o código que vc puder pra ajudar.
MICROSCHEME 20/07/2010 20:33:59
#347983
Este é todo o código do form:

Option Explicit
Dim intActualPicture As Integer
Dim intHorizontal As Integer
Dim intVertical As Integer
Dim intLinesLandScape As Integer
Dim intLinesPortrait As Integer
Dim intNewPicture As Integer
Dim intPrinterLinhas As Integer
Dim intPrinterPictures As Integer
Dim intTotalLines As Integer
Dim intTotalPictures As Integer
Dim strConfiguration As String

Private Sub Command001_Click()
If intActualPicture >= 1 Then
PicPreview(intActualPicture).Visible = False
intActualPicture = 1
If intActualPicture = 0 Then intActualPicture = 1
PicPreview(intActualPicture).Visible = True
VScroll001.Value = 0
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
PicPreview(intActualPicture).Top = 0
PicPreview(intActualPicture).Left = 0
VScroll001.Value = 0
End If
End Sub

Private Sub Command002_Click()
If intActualPicture >= 1 Then
PicPreview(intActualPicture).Visible = False
intActualPicture = intActualPicture - 1
If intActualPicture = 0 Then intActualPicture = 1
PicPreview(intActualPicture).Visible = True
VScroll001.Value = 0
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
PicPreview(intActualPicture).Top = 0
PicPreview(intActualPicture).Left = 0
VScroll001.Value = 0
End If
End Sub

Private Sub Command004_Click()
If intActualPicture >= 1 Then
PicPreview(intActualPicture).Visible = False
intActualPicture = intActualPicture + 1
If intActualPicture > intTotalPictures Then intActualPicture = intTotalPictures
PicPreview(intActualPicture).Visible = True
VScroll001.Value = 0
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
PicPreview(intActualPicture).Top = 0
PicPreview(intActualPicture).Left = 0
VScroll001.Value = 0
End If
End Sub

Private Sub Command005_Click()
If intActualPicture >= 1 Then
PicPreview(intActualPicture).Visible = False
intActualPicture = intTotalPictures
If intActualPicture = 0 Then intActualPicture = 1
PicPreview(intActualPicture).Visible = True
VScroll001.Value = 0
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
PicPreview(intActualPicture).Top = 0
PicPreview(intActualPicture).Left = 0
VScroll001.Value = 0
End If
End Sub

Private Sub Command006_Click()
DoEvents
If intActualPicture > 0 Then PicPreview(intActualPicture).Visible = False
If Command007.Enabled = False Then Command007.Enabled = True
If VScroll001.Enabled = False Then VScroll001.Enabled = True
If Option002.Value = True Then HScroll001.Enabled = True
intTotalPictures = intTotalPictures + 1
intNewPicture = intTotalPictures
Load PicPreview(intNewPicture)
With PicPreview(intNewPicture)
.AutoRedraw = True
.Appearance = 0
.BackColor = &H80000005
.Font = [Ô]Arial[Ô]
.FontSize = 10
.Height = intVertical
.Width = intHorizontal
.Visible = True
End With
intTotalPictures = intNewPicture
intActualPicture = intNewPicture
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
[ô] Centraliza Imagem na página:
[ô] PicPreview(intActualPicture).CurrentX = (PicPreview(intActualPicture).ScaleWidth - Picture002.ScaleWidth) / 2
[ô] PicPreview(intActualPicture).CurrentY = (PicPreview(intActualPicture).ScaleHeight - Picture002.ScaleHeight) / 2
[ô] PicPreview(intActualPicture).PaintPicture Picture002, PicPreview(intActualPicture).CurrentX, PicPreview(intActualPicture).CurrentY
PicPreview(intActualPicture).CurrentX = 0
PicPreview(intActualPicture).CurrentY = 0
For intPrinterLinhas = 1 To intTotalLines
[ô] Centraliza Texto na horizontal:
[ô] PicPreview(intActualPicture).CurrentX = ((PicPreview(intActualPicture).ScaleWidth - PicPreview(intActualPicture).TextWidth([Ô]Imprimindo na Picture: [Ô] & [Ô]PicPreview([Ô] & Format(intNewPicture, [Ô]000[Ô]) & [Ô])[Ô])) / 2)
[ô] Centraliza Texto na Vertical:
[ô] PicPreview(intActualPicture).CurrentY = ((PicPreview(intActualPicture).ScaleHeight - PicPreview(intActualPicture).TextHeight([Ô]Imprimindo na Picture: [Ô] & [Ô]PicPreview([Ô] & Format(intNewPicture, [Ô]000[Ô]) & [Ô])[Ô])) / 2)
PicPreview(intActualPicture).CurrentX = 300
PicPreview(intActualPicture).CurrentY = PicPreview(intActualPicture).CurrentY + 200
PicPreview(intActualPicture).Print [Ô]Imprimindo na Picture: [Ô] & [Ô]PicPreview([Ô] & Format(intActualPicture, [Ô]000[Ô]) & [Ô])[Ô] & [Ô] Imprimindo na Linha: [Ô] & Format(intPrinterLinhas, [Ô]000[Ô]) & [Ô] Imprimindo na configuração: [Ô] & strConfiguration;
Next intPrinterLinhas
PicPreview(intActualPicture).Top = 0
PicPreview(intActualPicture).Left = 0
VScroll001.Value = 0
End Sub

Private Sub Command007_Click()
For intPrinterPictures = 1 To intTotalPictures
PicPreview(intPrinterPictures).Picture = PicPreview(intPrinterPictures).Image
Printer.PaintPicture PicPreview(Format(intPrinterPictures, [Ô]000[Ô])), 0, 0
Printer.NewPage
Next intPrinterPictures
Printer.EndDoc
End Sub




Private Sub Command008_Click()
Unload FrmPrinterPreview [txt-color=#e80000]<<---- Aqui tá fechando tudo, acho que deveria fechar o frmprinterpreview e voltar pro form que chamou[/txt-color]
End Sub




Private Sub Form_Click()
If Option001.Value = 0 And Option002.Value = 0 Then
MsgBox [Ô] é preciso escolher Portrait ou LandScape para visualizar a impressão [Ô] & vbNewLine & vbNewLine & [Ô] Tecle Enter[Ô], vbOKOnly + vbInformation + vbApplicationModal, [Ô] Mensagem do sistema[Ô]
End If
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF12 Then
FrmBolaoMegaSena.PicCopy001.AutoSize = True
keybd_event vbKeySnapshot, 0, 0, 0
DoEvents
FrmBolaoMegaSena.PicCopy001.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture FrmBolaoMegaSena.PicCopy001.Image, App.Path & [Ô]\[Ô] & Me.Name & [Ô].Jpg[Ô]
End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = vbKeyReturn Then
If Option001.Value = 0 And Option002.Value = 0 Then
MsgBox [Ô] é preciso escolher Portrait ou LandScape para visualizar a impressão [Ô] & vbNewLine & vbNewLine & [Ô] Tecle Enter[Ô], vbOKOnly + vbInformation + vbApplicationModal, [Ô] Mensagem do sistema[Ô]
KeyAscii = 0
End If
End If
If KeyAscii = vbKeyEscape Then
Unload FrmPrinterPreview
KeyAscii = 0
End If
End Sub

Private Sub Form_Load()

[ô] Definição e Chamada Para a Transparência do Formulário

Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, 0, Transparencia, LWA_ALPHA

intActualPicture = 0
intLinesLandScape = 57
intLinesPortrait = 82
intNewPicture = 0
intPrinterPictures = 0
intTotalPictures = 0
Text001.Text = Format(intActualPicture, [Ô]000[Ô]) & [Ô] de [Ô] & Format(intTotalPictures, [Ô]000[Ô])
End Sub

Private Sub Form_Unload(Cancel As Integer)
FrmBolaoMegaSena.StatusBar001.Panels(3).Text = [Ô] FrmApostasConsultaMsFlexgrid[Ô]
End Sub

Private Sub Option001_Click()
Option001.Value = True
intHorizontal = 11900
intVertical = 16830
intTotalLines = intLinesPortrait
strConfiguration = [Ô]Portrait[Ô]
Command006.Enabled = True
Frame004.Enabled = False
End Sub

Private Sub Option002_Click()
Option002.Value = True
intHorizontal = 16830
intVertical = 11900
intTotalLines = intLinesLandScape
strConfiguration = [Ô]LandScape[Ô]
Command006.Enabled = True
Frame004.Enabled = False
End Sub

Private Sub Picture001_Click()
If Option001.Value = 0 And Option002.Value = 0 Then
MsgBox [Ô] é preciso escolher Portrait ou LandScape para visualizar a impressão [Ô] & vbNewLine & vbNewLine & [Ô] Tecle Enter[Ô], vbOKOnly + vbInformation + vbApplicationModal, [Ô] Mensagem do sistema[Ô]
End If
End Sub

Private Sub Timer001_Timer()
If intTotalPictures = 0 Or intTotalPictures = 1 Then
Command001.Enabled = False
Command002.Enabled = False
Command004.Enabled = False
Command005.Enabled = False
Else
If intTotalPictures > 1 Then
If intActualPicture = 1 Then
Command001.Enabled = False
Command002.Enabled = False
Command004.Enabled = True
Command005.Enabled = True
End If
If intActualPicture > 1 And intActualPicture < intTotalPictures Then
Command001.Enabled = True
Command002.Enabled = True
Command004.Enabled = True
Command005.Enabled = True
End If
If intActualPicture = intTotalPictures Then
Command001.Enabled = True
Command002.Enabled = True
Command004.Enabled = False
Command005.Enabled = False
End If
End If
End If
End Sub

Private Sub VScroll001_Scroll()
VScroll001_Change
End Sub

Private Sub VScroll001_Change()
If intTotalPictures > 0 Then
PicPreview(intActualPicture).Top = -(VScroll001.Value / 100) * (PicPreview(intActualPicture).Height - VScroll001.Height)
End If
End Sub

Private Sub HScroll001_Scroll()
HScroll001_Change
End Sub

Private Sub HScroll001_Change()
If intTotalPictures > 0 Then
PicPreview(intActualPicture).Left = -(HScroll001.Value / 100) * (PicPreview(intActualPicture).Width - HScroll001.Width)
End If
End Sub

. . .
ASHKATCHUP 20/07/2010 21:59:53
#347989
Opção1:

Tenta comentar as linhas que definem a transparência do form


Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, 0, Transparencia, LWA_ALPHA


Opcão2:

Use


Unload Me
MICROSCHEME 20/07/2010 22:25:25
#347990
mesmo comentando as linhas de transparência fecha tudo

Unload Me também fecha tudo

Tem algo a ver talvêz om a quantidade de forms abertos, pois se colocar direto no menu do form principal
funciona blz . . . quando chamado por um segundo form aberto dá esse pau.

O intuito é justamente abri-lo por qualquer segundo form que esteja aberto pra visualizar e voltar

Vou tentar fechando o segundo form e chamando ele, o prblema é que quando fechar esse form de visualização
vai ter que carregar o form que o chamou, independente de qual seja, e ai ainda não sei fazer essa chamada
via talvêz uma variável

vou tentar.

MICROSCHEME 20/07/2010 22:41:15
#347992

Fechando o segundo form e abrindo o terceiro deu certo, apenas é que fechando o mesmo
volta pro form principal, e gostaria que voltasse pro segundo form que o chamou.

vou ver se consigo uma maneira de fechando o mesmo, carregar o form que o chamou, visto ter
pelo menos 6 forms que chamarão esse form PrintPreview.

. . .

ROBIU 21/07/2010 06:02:28
#347993
Você não está fechando o form2 ao abrir o form3? Ou ocultando-o?

Private Sub Command008_Click()
NomeDoForm2.Show
Unload FrmPrinterPreview
End Sub


Se isso não funcionar é porque ele está executando invisível
MARCELO.TREZE 21/07/2010 08:15:48
#348000
posso fazer uma pergunta? os tres forms fazem a mesma coisa, ou seja possuem o mesmo código?
MICROSCHEME 21/07/2010 11:42:39
#348025

Gente.

Muito obrigado pela manifestação de todos, mas a luz tá no fim do tunel.

Ocorre o seguinte:

Como manjo pouco de VB e sou autodidata, quando comecei a fazer este projeto nem imaginava o que era tipo MDI e Child, então
comecei pelo form principal que basicamente é um form com uma imagem central e o menu que chama os outros forms, ficando
dois forms abertos ( o principal e o segundo na chamada do menu ) ; todos os meus forms são modais.

O segundo form não tem nada de mais, apenas código pra carregar uma grid no load e comandos pra imprimir pelo printer
num button; quando a grid está carregada eu descarrego todo o recordset e conexão não ficando nada aberto, não permanecendo
nem o rcordset e nem a conexão abertos, é sómente pra visualização da grid, então nada fica sendo processado ou executando
enquanto o mesmo está aberto.

Procurei ontem antes de sair pro trampo a respeito de carregar um form através de uma variável e achei algo, agora vou tentar
implementar poucas linhas pra quando um form chamar o [Ô]PrinterPreview[Ô] ficar guardado o nome do segundo form e fecha-lo e
ao fechar o PrinterPreview, através da variável pública voltar a carregar o form que chamou o dito cujo.

Tô achando as pedras, mas de qualquer forma agradeço muito mesmo a quem souber uma forma de fazer isso e me passar e
que tiver outras idéias que poderão vir a contribuir, mesmo porque, ainda não tá nem no meio da idéia, faltando
ainda publicamente receber os dados dos forms que chamarem o mardito pra poder visualizar qualquer relatório do aplicativo.

Brigadão Gente . . .

Continuo na Briga . . .

. . .
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas