Avatar billede ds-zim Nybegynder
15. juni 2000 - 10:15 Der er 23 kommentarer og
1 løsning

Udformning af Skærmstørrelse ?!?

Her i virksomheden har vi flere clienter med forskellige størrelser på skrivebordet :( Det har givet mig en del hovedbrud når jeg har udformet formularer. Så var det jeg tænkte .. Jeg ved det er muligt i HTML at undersøge størrelsen før filen vises, er det også muligt i Visual Basic 6.0 ?`
Ydermere, kan man få den til at tilpasse formularen til skærmstørrelsen ?

Sound off ppl
Avatar billede ds-zim Nybegynder
15. juni 2000 - 10:19 #1
Platformen er Access 9.0 & Visual Basic 6.0
Avatar billede privaten Nybegynder
15. juni 2000 - 10:36 #2
Du skal kalde GetSystemMetrics() med parameter:

SM_CXFULLSCREEN

Og parameter

SM_CYFULLSCREEN
Avatar billede brian Nybegynder
15. juni 2000 - 10:37 #3
I et modul :

Public Const BITSPIXEL = 12
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public SX, SY As Long


I din form_load

SX = Screen.Width /Screen.TwipsPerPixelX
SY = Screen.Height / Screen.TwipsPerPixelY

du kan jo så fortsætte med f.eks. :

if SX=800 then
blabla
else
blabla
end if
Avatar billede jper Nybegynder
15. juni 2000 - 10:41 #4
Add en control til din Toolbox der hedder Microsoft Sysinfo Control 6.0 den kan give dig størrelsen på desktoppen. Den har også en event der hedder OnDisplayChanged her kan du lægge koden ind så formen bliver resized, hvis brugeren skifter opløsning, men ellers læg den i form_load eventen.

Dim wh As Long
Dim ww As Long
Dim wt As Long
Dim wl As Long
wh = SysInfo1.WorkAreaHeight
ww = SysInfo1.WorkAreaWidth
wt = SysInfo1.WorkAreaTop
wl = SysInfo1.WorkAreaLeft

MsgBox "Workarea Height " & wh & vbNewLine & "Workarea width " & ww & vbNewLine & "Workarea top " & wt & vbNewLine & "Workarea left " & wl
Avatar billede privaten Nybegynder
15. juni 2000 - 10:46 #5
btw:

det er en ekstern metode og kan erklæres som følger:

Private Declare Function GetSystemMetrics% Lib "user32" (ByVal nIndex%)

Og du kan fx. anvende flg. parametre:

    Const SM_CXSCREEN = 0        ' Width of screen
    Const SM_CYSCREEN = 1        ' Height of screen
    Const SM_CXFULLSCREEN = 16  ' Width of window client area
    Const SM_CYFULLSCREEN = 17  ' Height of window client area
   


Avatar billede admin Novice
15. juni 2000 - 18:27 #6
ds-zim >> Jeg har slettet dit andet spm. i VB, der må kun oprettes eet spm. med samme indhold
Avatar billede ds-zim Nybegynder
16. juni 2000 - 09:16 #7
Modtaget, Slut
Avatar billede ds-zim Nybegynder
19. juni 2000 - 11:15 #8
-> JPer : Jeg går ud fra at du vil have mig til at indkøbe SysInfo.ocx fra www.mabry.com ?
Avatar billede ds-zim Nybegynder
19. juni 2000 - 13:13 #9
-> Brian
  Jeg får fejl når jeg prøver at angive SX = Screen.Width / Screen.TwipsPerPixelX !
  (Method or data member not found)

Mangler jeg en add'on eller ?
Avatar billede ds-zim Nybegynder
19. juni 2000 - 13:24 #10
Hmm, jeg har mine problemer med at finde disse add'ons :(

http://www.vbxtras.com/ProductDemos.asp er umiddelbart mit bedste bud
Avatar billede privaten Nybegynder
19. juni 2000 - 15:38 #11
>> ds-zim, er det ikke "bare" skærm størrelse i pixels du skal bruge?
Avatar billede privaten Nybegynder
19. juni 2000 - 16:25 #12
Kunne du ikke bruge:

Private Declare Function GetSystemMetrics% Lib "user32" (ByVal nIndex%)

Dim ScreenXSize as Integer
Dim ScreenYSize as Integer

ScreenXSize= GetSystemMetrics(SM_CXSCREEN)
ScreenYSize= GetSystemMetrics(SM_CYSCREEN)
   
Avatar billede brian Nybegynder
19. juni 2000 - 19:02 #13
Du skal i ET MODUL indsætte følgende kode :

Public Const BITSPIXEL = 12
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public SX, SY As Long


Indsæt en label på din form og skriv følgende i Private Sub Form_Load()

SX = Screen.Width /Screen.TwipsPerPixelX
SY = Screen.Height / Screen.TwipsPerPixelY
Label1.Caption = " Din skærmopløsning er : " & SX & "x" & SY

Avatar billede ds-zim Nybegynder
20. juni 2000 - 09:14 #14
-> Brian
  Hmm, jeg har oprettet et modul for sig der indeholder den kode du har skrevet .. Jeg får dog stadig 'Method or data member not found' når jeg prøver at åben den pågældende formular, compileren melder fejl ved screen.width !?!
Avatar billede ds-zim Nybegynder
20. juni 2000 - 09:22 #15
-> Privaten
  Melder 'invalid outside procedure' ?!? Mangel på et library eller ?
Avatar billede brian Nybegynder
20. juni 2000 - 09:28 #16
Der må være noget galt med din installation. har du prøvet at geninstallere ?

Avatar billede brian Nybegynder
20. juni 2000 - 09:36 #17
Hvad hvis du bare bruger Label1.Caption = Screen.Width - hvad sker der så.

Det skulle gerne returnere 9600, 12000, 15360 ved h.h.v. 640x480, 800x600 og 1024x768

Avatar billede privaten Nybegynder
20. juni 2000 - 12:16 #18
Hvis den melder 'invalid outside procedure' er der noget rivende galt med din installation, har du user32.dll liggende i din \windows\system32 ?

Avatar billede ds-zim Nybegynder
20. juni 2000 - 12:33 #19
Yep, jeg har user32.dll liggende i \System32 , men prøver jeg at 'aktivere' den (VB editor/Tools/References), siger den 'cant add a reference to the specified file'
Avatar billede ds-zim Nybegynder
20. juni 2000 - 12:34 #20
Hmm, har ikke prøvet at geninstallere. Måske en god idé ...
Avatar billede ds-zim Nybegynder
20. juni 2000 - 12:39 #21
->Brian

  Den siger det samme, 'Method or data member not found'
Avatar billede privaten Nybegynder
21. juni 2000 - 09:04 #22
Prøv at "paste" nedenstående metode ind i et module i en access database (opret en ny tom base), hvis du ikke kan køre test metoden uden problemer, så prøv at flytte basen til en anden pc...

Private Declare Function GetSystemMetrics% Lib "user32" (ByVal nIndex%)
Const SM_CXSCREEN = 0        ' Width of screen
Const SM_CYSCREEN = 1        ' Height of screen
   



Sub test()
    Dim ScreenXSize As Integer
    Dim ScreenYSize As Integer

    ScreenXSize = GetSystemMetrics(SM_CXSCREEN)
    ScreenYSize = GetSystemMetrics(SM_CYSCREEN)
    MsgBox ScreenXSize & "*" & ScreenYSize
End Sub
Avatar billede ds-zim Nybegynder
21. juni 2000 - 09:59 #23
Ja sgu' ! Så var den der *BoUnCe* !!
Tak for indsatsen 'Privaten' :)
Avatar billede privaten Nybegynder
21. juni 2000 - 10:37 #24
Anytime :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester