Avatar billede puppetmaster Nybegynder
25. januar 2005 - 08:35 Der er 17 kommentarer og
2 løsninger

Indbygge scroll (ActiveX)

Jeg tænkte på om der findes en ActiveX som kan scrolle mellem nogle knapper i min menu.
Programmet er opbygget med en menu i venstre side, som består af en hel del kommandoknapper og et "resultat-vindue" i midten som viser en underformular, som modsvarer den knap der er trykket på.
Nu er sagen at jeg efterhånden er oppe på så mange knapper, at i en opløsning på 800*600 (og lille skrifttype), er det svært at se alle knapper og nu skal jeg sørme også tilføje en NY knap! :(
Jeg har selv prøvet at lave menuen om, så den er på en separat formular, som bliver indsat på hovedformularen. Det ser godt ud, men der er FOR meget bundet op på knapperne (oversættelse af knappernes Caption osv.), så det går ikke.
Det ser heller ikke godt ud at sætte scroll på hovedformularen.
Any ideas?
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 08:41 #1
Der er 23 knapper (nå ja, plus den nye!), i skriftstørrelse 8
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 08:42 #2
Hvis skriftstørrelsen bliver meget mindre, går det ud over dem der kører 1024*768 og nej, det er IKKE en option at sætte 800*600 skærmene op i opløsning. :(
Avatar billede -anders- Juniormester
25. januar 2005 - 09:20 #3
Hej, blot et forslag, man kunne i stedet for knapper indsætte en liste, denne liste for så data fra en tabel tblmenu, man kunne så ved klik på på en tekst på listen få udført sin handling, når man feks. skal tilføje en ny handling er det blot at tilføje denne i tabellen og efterfølgende opdatere sin select case ved klik på listen, men blot et forslag :o)
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 09:28 #4
Ja, men det kræver mere udvikling end at indsætte menuen som underformular (oversættelsen af Caption på knapperne/listeelementerne til Dansk, Polsk og Engelsk)
Men jeg tænkte på....hvad med om jeg lagde et check ind, som undersøger brugerens skærmopløsning og hvis det er 1024*768, skal der ikke gøres noget, ellers skal knapperne og teksten herpå gøres mindre og knapperne skal flyttet x milimeter opad?
(en "knap" består af en "bund", en etiket og en kommandoknap øverst, don't ask, ved ikke hvorfor min foregænger har lavet det sådan!)
Avatar billede -anders- Juniormester
25. januar 2005 - 09:37 #5
Ja måske det var løsningen, på www.makeiteasy.dk er det et eks. man kan downloade som demonstrere simpel skalering af en formular med tekstboks og 2 knapper, måske du skulle prøve at kikke på den, jeg bruger den selv og det virker fantaisk godt i alle opløsninger, eks. hedder Brugerdefineret Zoomboks: http://www.nyholm.dk/makeiteasy/Home.asp?ContentID=30&MenuItemID=25
25. januar 2005 - 10:45 #6
som jeg ser det, er der disse realistiske muligheder:

1) redesign formular, så knapperne måske kan stå ved siden af hinanden i 2 rækker eller ved at bruge en anden eller mindre type knapper eller ved at bruge faneblade
2) flyt knapperne til underformular
3) skift skærmopløsning til 1024*768 (enten ved aftale med alle brugere eller gennemtving opløsningen for denne applikation vha VBA kode)
4) Skaller formularen, som Anders er inde på.

Rækkefølgen er prioriteret efter hvad jeg selv ville gøre.
Dog vil jeg altid gøre hvad jeg kan for at overtale en virksomhed til at lade alle skifte til 1024*768, da det efterhånden er mindste standard i dagens Danmark. Det er få arbejdsstationer, som ikke kan køre denne opløsning.
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 10:50 #7
1) Puha, faneblade......suk...
2) ALT for meget kode som skal omskrives til at referere til knapperne på underformularen
3) Ja, rigtig god ide, men der er vist brugere som er "oppe i årene"! :)
4) Denne løsning er nok den der kommer tættest på.

Har fundet denne stump kode på nettet:

Option Explicit

Type RECT
  x1 As Long
  y1 As Long
  x2 As Long
  y2 As Long
End Type

Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
      (ByVal hWnd As Long, rectangle As RECT) As Long

Function GetScreenResolution() As String

  Dim R As RECT
  Dim hWnd As Long
  Dim RetVal As Long

  hWnd = GetDesktopWindow()
  RetVal = GetWindowRect(hWnd, R)
  GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)

End Function

Så må jeg se hvor "nemt" det er at resize kontrollerne og fonttyperne.
25. januar 2005 - 10:56 #8
Jeg vil umiddelbart sige, at hvis du ikke har leget med det før og hvis du ikke har flair for den slags matematiske beregninger, så vil jeg tro, at der er mindre kode i løsning 2 (uden dog at have set din formular).
Men én ting er at skifte størrelse på en enkelt tekstboks. Men noget helt andet er at skifte størrelse, skrifttype og placering på en hel række objekter.

Se evt den demo, som jeg har liggende her: http://www.nyholm.dk/makeiteasy/Home.asp?ContentID=38&MenuItemID=29

Den skallerer en hel formular - og der er bare MEGET kode i!!!
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 11:00 #9
Ja, det eksempel har jeg også set i Access 2000 Developers handbook, ser KANON godt ud, men jeg vil ikke have "flydende" resize, bare resize mellem 2 opløsninger...
25. januar 2005 - 11:05 #10
ja, det gør det en smule lettere - men desværre ikke meget. At det er "flydende" betyder bare, at koden kaldes lidt oftere.

Men det er sjovt at 'lege' med, så; Go For It!! :o)
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 11:16 #11
Hmmm...det ser dog ud til at give lidt problemer, har forsøgt med en enkelt kontrol i første omgang og skriftstørrelsen kommer ikke under det som der fra start står på kontrollens egenskab (8 punkt) :(
25. januar 2005 - 11:18 #12
det kan skyldes, at du bruger en skrifttype, som ikke findes mindre end 8 (det gælder jo faktik de fleste).

Arial plejer dog at kunne klare en 7'er. Ellers er der jo smallfont
Avatar billede -anders- Juniormester
25. januar 2005 - 11:51 #13
Hvorfor ikke prøve med en liste, jeg har et meget simpelt eks, hvis lægger din mail vil gerne sende den til dig.
Avatar billede puppetmaster Nybegynder
25. januar 2005 - 14:49 #14
Jeg har forsøgt med den resize som følger med bogen Access 2000 Developers handbook, volume 1, men jeg synes ikke at eksemplet virker som det skal:
Man kan kalde en metode, som fortæller hvilken skærmopløsning der var anvendt i udviklingen af programmet og så vil formularen automatisk resize i henhold hertil.
Call frmResize.SetDesignCoords(800, 600, 0, 0)
Men min menu til venstre har bl.a. etiketer til genvejstaster, fra a til w og når jeg ikke bruger resize, kan jeg se alle etiketterne på en gang, men med resize, forsvinder dem efter n!!! :( Jeg har forsøgt med andre parametre i metodekaldet, men det ændrer INTET ved formularen!!! :( :( :(

Eksemplet som jeg bruger:
http://www.developershandbook.com/Downloads/ADHResize.zip
Avatar billede puppetmaster Nybegynder
28. januar 2005 - 10:22 #15
Jeg laver en formular i formular, så må det tage den tid det tager.
Smid et svar en eller anden...
Avatar billede puppetmaster Nybegynder
01. februar 2005 - 14:33 #16
Løsningen BLEV at lave en subform!
Smid et svar thomas eller andersen.
Avatar billede -anders- Juniormester
01. februar 2005 - 14:44 #17
hej puppetmaster, okay her et svar, men jeg syntes at thomasjepsen skal have halvdelen altså vi deler :o)og husk at du er altid velkommen til at få en demo af et menusystem der styres af en eller flere lister
01. februar 2005 - 14:46 #18
takker :)
01. februar 2005 - 14:47 #19
det skulle vel have været et svar, tsk, tsk ;)
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