DIFERENTES RESOLUCOES DE VIDEO

EDMARMUNHOZ22 25/03/2010 09:10:13
#337851
Olá pessoal, alguem tem ou sabe como eu posso fazr para ajustar os form para diferentes resolucoes de video?
MARCIO.TEIXEIRA 25/03/2010 10:56:44
#337857
Vê se isso ajuda:

Primeiramente deverá criar uma classe chamada clsRedimensionar e inserir o código abaixo:
Option Explicit

Public Sub AjustaTela(frmAtual As Form)
Dim llngTop As Long
Dim llngPercTop As Double
Dim llngLeft As Long
Dim llngPercLeft As Double
Dim llngHeight As Long
Dim llngPerHeight As Double
Dim llngWidth As Long
Dim llngPercWidth As Double
Dim c As Control

On Error Resume Next
llngPercTop = Screen.Height / 9000
llngPercLeft = Screen.Width / 12000
frmAtual.Height = frmAtual.Height * llngPercTop
frmAtual.Width = frmAtual.Width * llngPercLeft
For Each c In frmAtual.Controls
c.Top = c.Top * llngPercTop
c.Left = c.Left * llngPercLeft
c.Height = c.Height * llngPercTop
c.Width = c.Width * llngPercLeft
c.Font.Size = c.Font.Size * llngPercTop
Next
End Sub


==========================================================================

Depois em todo form terá que incluir o código abaixo:

Private Sub Form_Activate()
Dim Ajustar As Object
Set Ajustar = New clsRedimensionar
Ajustar.AjustaTela Me

[ô]Seu código aqui

Set Ajustar = Nothing
End Sub


é bem provavel que terá depois que efetuar algum ajustar por conta de algum controle específico, mas já dá pra ter uma idéia de como fazer agora.
MARCIO.TEIXEIRA 25/03/2010 11:27:20
#337860
Esqueci de dizer uma coisa...

Esse exemplo que eu mandei foi em feito em 800x600, caso você programe em uma resolução diferente você precisar modificar os números 9000 e 12000 de acordo com a resolução que você trabalha...
RICATOM 29/03/2010 15:11:29
#338133
Interessante sua solução MARCIO_TEIXEIRA, mas não funciona com o TabStrip (só redimensiona a primeria tab)
MICROSCHEME 29/03/2010 15:41:06
#338137

Mano véio.

O anexo que mandei para o Abdon redimensiona o form e todo o conteúdo.

se tu cria em 800 x 600 e quer mostrar em 1024 x 768 é alterar para 1024 x 768 no evento load do form ou vice e versa. Sempre no load do form

Talvêz te ajude a resolver o problema

. . .
MARCIO.TEIXEIRA 29/03/2010 17:54:46
#338156
Quando utiliza sstab por exemplo percisa efetuar um pequeno ajuste, pois o VB esconde os componentes das abas que não estão selecionadas:

Option Explicit

Public Sub AjustaTela(frmAtual As Form)
Dim llngTop As Long
Dim llngPercTop As Double
Dim llngLeft As Long
Dim llngPercLeft As Double
Dim llngHeight As Long
Dim llngPerHeight As Double
Dim llngWidth As Long
Dim llngPercWidth As Double
Dim c As Control
Dim x As Control

On Error Resume Next
llngPercTop = Screen.Height / 9000
llngPercLeft = Screen.Width / 12000
frmAtual.Height = frmAtual.Height * llngPercTop
frmAtual.Width = frmAtual.Width * llngPercLeft
For Each c In frmAtual.Controls
c.Top = c.Top * llngPercTop
[txt-color=#e80000] If c.Left < 0 Then
c.Left = (75000 - ((75000 + c.Left) * llngPercLeft)) * -1
Else
c.Left = c.Left * llngPercLeft
End If[/txt-color]
c.Height = c.Height * llngPercTop
c.Width = c.Width * llngPercLeft
c.Font.Size = c.Font.Size * llngPercTop
Next
End Sub
MARCELO.TREZE 29/03/2010 18:40:02
#338159
eu sinceramente cansei de procurar um código para redimensionar os controles , até consegui, mas a aparência não ficou como o planejado, então tive uma idéia que tem funcionado muito bem para mim que é a seguinte.

desenvolvo meus sistemas todos em uma resolução padrão 1024x768, e faço o seguinte ao se executar oi meu programa é verificado a resolução atual do video, e se esta for diferente de 1024x768, então altero a resolução para 1024x768, e gravo a resolução padrão do video em variaveis, pra finalizar quando saio do meu programa a resolção do monitor retorna a sua opriginal.

veja o código

[ô]No form principal cole

Private Sub Form_Load()
Dim intX As Integer
Dim intY As Integer
Dim strResolucao As String

intX = Screen.Width / Screen.TwipsPerPixelX
intY = Screen.Height / Screen.TwipsPerPixelY
strResolucao = intX & [Ô]x[Ô] & intY
If strResolucao <> [Ô]1024x768[Ô] Then
Res = Split(strResolucao, [Ô]x[Ô]) [ô]Armazena a resolução em uma array
Call ChangeRes(1024, 768) [ô]altera a resolução para 1024x768
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
[ô]quando você encerrar o programa
Call ChangeRes(CInt(Res(0)), CInt(Res(1))) [ô]Retorna para resolução padrão do PC
End Sub



[ô]e em um módulo cole

Private Declare Function EnumDisplaySettings Lib _
[Ô]user32[Ô] Alias [Ô]EnumDisplaySettingsA[Ô] _
(ByVal lpszDeviceName As Long, ByVal _
iModeNum As Long, lpDevMode As Any) As _
Boolean
Private Declare Function ChangeDisplaySettings Lib _
[Ô]user32[Ô] Alias [Ô]ChangeDisplaySettingsA[Ô] _
(lpDevMode As Any, ByVal dwflags As Long) _
As Long
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Global Res() As String
Public Sub ChangeRes(iWidth As Single, iHeight _
As Single)
Dim DevM As DEVMODE
Dim a As Boolean
Dim i As Long
Dim b As Long
i = 0
Do
a = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
Loop Until (a = False)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevM.dmPelsWidth = iWidth
DevM.dmPelsHeight = iHeight
b = ChangeDisplaySettings(DevM, 0)
End Sub



pronto faça o teste e veja o resultado

diga se isso vai te servir

RICATOM 30/03/2010 11:51:11
#338210
MARCIO_TEIXEIRA se o topico fosse meu, ja pontuava voce .

Não gosto desse negocio de alterar a resolução de video, pq pode prejudicar o uso de outros sistemas do usuario.
MARCIO.TEIXEIRA 30/03/2010 15:19:38
#338252
hehe ^^

valeu a torcida !!!
Tópico encerrado , respostas não são mais permitidas