Avatar billede puppetmaster Nybegynder
19. marts 2002 - 08:39 Der er 18 kommentarer og
1 løsning

Skærmopløsning

Er det i VBA muligt at aflæse skærmensopløsning?
Skal bruge den til at bestemme om en formular skal maksimeres eller ej.
Avatar billede onlinepc Nybegynder
19. marts 2002 - 08:57 #1
Hej Puppet

Prøv at tilføje en SysInfoControl til dit projekt

Private Sub Command1_Click()
If SysInfo.WorkAreaWidth > 12000 Then
    MsgBox "Opløsningen er større end 800*600"
Else
    MsgBox "Opløsningen er mindre end 800*600"
End If
End Sub
Avatar billede puppetmaster Nybegynder
19. marts 2002 - 09:26 #2
Prøver det lige engang, hvis det virker, er pointene dine.
Avatar billede puppetmaster Nybegynder
19. marts 2002 - 09:33 #3
Hvordan er det nu lige dimensioneringen/initialiseringen af et SysInfoObject ser ud?
Avatar billede puppetmaster Nybegynder
19. marts 2002 - 09:43 #4
SysInfo Control, er det ikke kun et Visual Basic objekt? Er det også et VBA objekt???
Avatar billede onlinepc Nybegynder
19. marts 2002 - 10:14 #5
Jo, undskyld.
Jeg var ikke lige opmærksom på, at du havde skrevet VBA.
Jeg ved desværre ikke hvordan det virker i VBA

vh. Søren
Avatar billede puppetmaster Nybegynder
19. marts 2002 - 10:37 #6
Ok, jeg afventer og ser om der er andre derude der kan svare på spørgsmålet.
Avatar billede martin_moth Mester
19. marts 2002 - 13:14 #7
Her er hvad du kan gøre (og det virker også i VBA).

Du kan kalde API-funktionen GetSystemMetrics der findes i dit user32.dll i sit windows system-bibliotek.

Optag en macro, og indsæt nedenstående:

Declare Function GetSystemMetrics Lib "user32" _
                (ByVal nIndex As Long) As Long

Sub VisOpløsning()
  MsgBox "Opløsning er lodret" & Chr(13) & _
        "Lodret : " & GetSystemMetrics(1) & Chr(13) & _
        "Vandret : " & GetSystemMetrics(0)
End Sub

Kør macroen VisOpløsning - det virker...

/Martin
Avatar billede martin_moth Mester
19. marts 2002 - 13:16 #8
Øhh - MsgBos'en skulle nok hedde

  MsgBox "Opløsning er som følger..." & Chr(13) & _
        "Lodret : " & GetSystemMetrics(1) & Chr(13) & _
        "Vandret : " & GetSystemMetrics(0)

En lille skønhedsfejl - der stod "lodret" 2 gange i den tidligere MsgBox.
Avatar billede joern Nybegynder
19. marts 2002 - 14:29 #9
Hej.

Hvis screen.width findes i VBA, så giver den svaret i twips.

M.v.h.  Jørn
Avatar billede tubber Juniormester
19. marts 2002 - 14:58 #10
Man kunne jo lave en usynlig form der er åben når progget loader, hvor der er en SysInfo og så lader den være maximeret, uanset opløsningen og så hente infoen ind i den form hvor man skal arbejde med det....noget ala......

frmOploesning.SysInfo1.WorkAreaHeight
frmOploesning.SysInfo1.WorkAreaWidth

Hvis den form er maximeret må det jo give skærmopløsningen......

Jaja ved godt det er en lidt dummymetode.....
Tubber
Avatar billede martin_moth Mester
19. marts 2002 - 15:43 #11
Ang. joern's svar, så findes screen.width IKKE i VBA (jeg kan ikke få kommandoen til at virke, i hvert fald)

Og ang. det meget kreative svar :o) fra tubber, så vil den give forkert "skærm"-højde hvis procenlinien altid er synlig, da procesliniens højde bliver fraregnet den usynlige forms højde (eller bredde hvis man har proceslinien til at stå lodret). Det samme gælder hvis der er andre bjælker, der er permanent synlige, f.eks. en lotus office-bjælke.

Jeg synes selv at "min" løsning er meget enkel - erklær en funktion (blot een linie), og find skærmhøjde ved at kalde GetSystemMetrics(nr), hvor nr=0 er bredde og nr=1 er højde. Svaret kommer i pixels.

/Martin
Avatar billede tubber Juniormester
19. marts 2002 - 18:23 #12
Hov SysInfo1.WorkAreaWidth tager breden af skærmen
og SysInfo1.WorkAreaHeight teger højden.....
Har nemlig brugt det til at finde midten, så min applikation altid står i midten......

koden ser ud som følger :
'variables for window position

Dim varX1 As Integer
Dim varX2 As Integer
Dim varY1 As Integer
Dim varY2 As Integer
Dim varX3 As Integer
Dim varX4 As Integer
Dim varY3 As Integer
Dim varY4 As Integer

'Function declaretion for set window position

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

'Constants for window position

Const conHwndTopmost = -1
Const conHwndNoTopmost = -2
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40

'Sets variables for windowposition on screen
'Using SysInfo to get resolution and screen size

varX1 = ((SysInfo1.WorkAreaWidth / 15) / 2) - 200
varY1 = ((SysInfo1.WorkAreaHeight / 15) / 2) - 150
varX2 = 400
varY2 = 300

'Sets window position

SetWindowPos hwnd, conHwndTopmost, varX1, varY1, varX2, varY2, _
        conSwpNoActivate Or conSwpShowWindow

'Topmost er Alwayes on top, den kan bare ændres til NoTopmost

Tubber
Avatar billede onlinepc Nybegynder
19. marts 2002 - 23:11 #13
>> Tubber
Du, Tubber. Det var jo det jeg foreslog som det første svar til dette indlæg. Hvordan får du SysInfo lagt ind i VBA.
Det kan nemlig hverken Pubbetmaster eller jeg

vh. Søren
Avatar billede tubber Juniormester
19. marts 2002 - 23:48 #14
Højreklikke ude i venstre side der hvor de forskellige kontroller er, der skal du vælge components og under det faneblad der hedder "Controls" der skal du hakke et flueben af i "Microsoft SysInfo Control 6.0" og der kommer en fin lille kontrol du kan tilføje din aplikation.....

Tubber
Avatar billede tubber Juniormester
19. marts 2002 - 23:51 #15
Har lige læst det hele igennem igen, og jeg havde heller ikke lige set det der vbA, så jeg er ikke sikker på det virker.....

>> Martin Moth:
Dit API kald ser ret fornuftigt ud :O)) Tror også din løsning er den bedste....
Avatar billede puppetmaster Nybegynder
20. marts 2002 - 09:15 #16
Takker for de mange gode svar, det blev dog Martin der løb af med pointene
Avatar billede tubber Juniormester
22. marts 2002 - 08:49 #17
Hov lige en ting.....hvad er VBA ?
Avatar billede onlinepc Nybegynder
22. marts 2002 - 09:07 #18
>>Tubber
VBA er Visual Basic for Application. ALtså det scriptsprog, der bruges sammen med Word, Excel, PowerPoint osv., i Officepakken

vh. Søren
Avatar billede tubber Juniormester
22. marts 2002 - 09:37 #19
Takker onlinepc :O)
Så ved jeg godt hvad det er hehe....
kendte bare ikke lige VBA.....
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
Kurser inden for grundlæggende programmering

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