Avatar billede Tony Juniormester
18. november 2002 - 09:29 Der er 21 kommentarer og
2 løsninger

Autojuster til skærmstørrelse ?

Jeg har en Access DB jeg med sikkerhed ved vil komme til at køre på 17, 19 og 21 tommer skærme samt på div. Notebooks.

Findes der en metode, der kan tilpasse div. formularer efter den pågældende brugers skærmstørrelse således, at  der kun er f.eks. lodret scroll ?
Avatar billede sjap Praktikant
18. november 2002 - 10:34 #1
Avatar billede Tony Juniormester
18. november 2002 - 10:51 #2
Jeg har kikket på det. Det er desværre alt for komplekst for mig ...
Avatar billede sjap Praktikant
18. november 2002 - 11:22 #3
Det ER meget komplekst.

Hvis du kigger i det vedlagte eksempel, kan man i formularen frmScaleTest se at den reelt kun anvender nedenstående kode - alt det andet er bare noget pral, for at vise hvad funktionerne kan. Jeg har ikke prøvet det men prøv at lægge nedenstående ind i den formular der skal kunne resizes.

Option Compare Database
Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long
Private frmResize As ADHResize2K.FormResize

Private Sub Form_Open(Cancel As Integer)
    Dim lngTimer As Long
    lngTimer = GetTickCount()
   
    Set frmResize = ADHResize2K.CreateFormResize()
    Set frmResize.Form = Me
    Call frmResize.SetDesignCoords(1280, 1024, 96, 96)
    frmResize.ScaleFonts = True
    frmResize.ScaleForm = True
    frmResize.ScaleColumns = True
    frmResize.ScaleControls = scYes
    frmResize.MinWidth = 0.1
    'frmResize.MaxWidth = 0.9
    frmResize.MinHeight = 0.1
    'frmResize.MaxHeight = 0.9
    ' ================================
    frmResize.CenterOnOpen = True
    Debug.Print GetTickCount - lngTimer
End Sub
Avatar billede Tony Juniormester
18. november 2002 - 11:46 #4
Hmm, tror du ikke den kun skal ligge i én formular f.eks. i min 'main_F' som samtidig er min 'AUTOEXEC' ?

Det ser ud til i ovenstående at der 'kun' forholdes til to skærmstørrelser (1280, 1024). Den skulle gerne kunne håndterer alle ?
Avatar billede sjap Praktikant
18. november 2002 - 11:56 #5
Det skal ligge i alle de formularer, hvor det skal bruges.

"1280, 1024" referer - så vidt jeg har forstået - til den skærmopløsning som formularen oprindeligt er designet til. Det vil sige der ligger ikke nogen begrænsning her.
Avatar billede Tony Juniormester
18. november 2002 - 12:01 #6
OK - jeg prøver at rode med det senere i dag og vender tilbage her ...
Avatar billede Tony Juniormester
18. november 2002 - 15:06 #7
Jeg giver op. Jeg kan ikke finde ud af det ... men det er nok fordi jeg ikke ved hvad bare halvdelen af udtrykkene betyder ... :)
Avatar billede sjap Praktikant
18. november 2002 - 18:06 #8
Tony

Hvor er det, det går galt? Jeg har prøvet at lægge ovenstående ind i en formular og det virker faktisk fint. Husk at det virker først når du har oprettet en reference til filen ADHResize funktionerne.
Avatar billede hekla Nybegynder
18. november 2002 - 22:22 #9
Peters Software har en funktion, som kan gøre det, men den koster 36$. Jeg bruger den, og den virker OK for det meste, men der kan være problemer med løbende formularer.
Den hedder ShrinkerStretcher og du kan finde den på www.peterssoftware.com
Avatar billede Tony Juniormester
19. november 2002 - 13:00 #10
superjab >>

Uha, det 'går galt' flere steder. D.v.s. det går ikke 'galt'. Det der er 'galt' er en 'malfunction' ca. 40 cm. fra skærmen. Der sidder der nemlig en kode-umulius, der får ’tichs’ af udtryk så som:

”1. To the form module’s Declaration area bla bla …” Hvad pokker er ‘form module’s Declaration area’ ???

“2. In the form’s Open event procedure bla bla …” Hvad pokker er ‘form’s Open event procedure’ ???

Hvorfor skal alt det kode-pjat da også være så besværlig, det er mig en evig gåde. Hvorfor kan det ikke bare være en form der kopieres til den pågældende DB og så automatisk bliver sat som AUTOEXEC og dermed aflæser den pågældende skærm og så går til den formular jeg har sat / sætter til at være startside … Nå det var et ’Øf’ fra ’fejl 40’ … :)

Jeg har registreret ’ADHResize2k.mde’ ét sted (skal de registres på hver formular ???) … men aner ikke hvordan jeg kommer videre …

hekla >> Fint ! - Den kikker jeg nok på, når jeg (helt) har overgivet mig ... :)
Avatar billede sjap Praktikant
20. november 2002 - 16:55 #11
Der skal kun oprettes en reference til ADHResize2k.mde ét sted. Alle andre steder hvor du har muligheden, vil den stå med denne reference (i denne database - ikke i andre).

Når du åbner en formular i design mode kan du i formularens egenskaber angive en hændelse for hvad der skal ske, når formularen åbnes. Når du aktiverer en hændelse første gang, skal du vælge mellem tre valgmuligheder, og i dette tilfælde skal du vælge den sidste Kodegenerator (Codebuilder). Dette starter programmet til VBA-koden. Det er er her det ovennævnte skal stå (som du måske vil bemærke så står der allerede

Private Sub Form_Open(Cancel As Integer)

End Sub

Det er det, der skal udfyldes med det jeg skrev ovenfor.
Avatar billede sjap Praktikant
20. november 2002 - 16:57 #12
Tony

Beklager men jeg har ikke set andre muligheder. Heklas forslag virker sandsynligvis efter samme princip. Så der er ikke andet for end at klø på - hvis du altså vil have denne funktionalitet.
Avatar billede Tony Juniormester
20. november 2002 - 19:28 #13
superjab >> OK - så langt er jeg kommet :-)

Når jeg så tester på i anden skærmstørrelse / opløsning på en anden computer i mit lille netværk, så virker det ikke. Tror du det betyder, at hver computer / bruger manuelt skal oprette en reference til ADHResize2k.mde ?

I så fald er det desværre ubrugeligt. Det skulle jo gerne være en hjælp og ikke endnu en administrative kodeopgave for nye brugere, men mindre der findes en metode der gør det muligt at 'nedarve' referencen på andre computere når DB'en eksporteres ...

Og nej det er ikke en 'must have' men en 'nice to have'; så det er OK at vælge det fra, men jeg vil jo også gerne lære nyt på denne lille opgave ... :-)
Avatar billede Tony Juniormester
20. november 2002 - 19:33 #14
BTW - DB'en skal (læses: 'må ikke') ikke virke i et (D)HTML miljø, men alene som 'stand alone' på Office 2000 systemer. D.v.s. jeg er bundet til 'problematikken'. Ikke at det ikke kan løses, for jeg kan 'sagtens' lave flere forskellige udgaver af mine formulare, men alligevel ... :)
Avatar billede sjap Praktikant
20. november 2002 - 19:44 #15
Hvis du placerer ADHResize2k.mde i samme mappe som din database skulle der ikke være noget problem - men skal også kopieres sammen med din database ud på de andre PC'er.
Avatar billede sjap Praktikant
20. november 2002 - 19:46 #16
En mulighed er at du placerer ADHResize2k.mde på et netværksdrev og så bagefter opretter referencen. Det kræver at placeringen har præcist den samme adresse set fra alle PC'er for at virke. Det betyder også at funktionen kun virker, når man er logget på nettet.
Avatar billede Tony Juniormester
20. november 2002 - 19:50 #17
Hmmm, jeg har ikke installeret den på andre computere, men alene kørt den fra en 'dele-mappe'. Jeg prøver en 'fuld' installation i morgen og vender tilbage med resultatet ... :)
Avatar billede Tony Juniormester
20. november 2002 - 19:53 #18
OKi ...

DB'en kommer til at køre på isolerede computere. Lige fra 'folk i felten' til administrativt personale, der alene vil få 'kik, men ikke røre' rettigheder ...
Avatar billede Tony Juniormester
21. november 2002 - 08:36 #19
Jeg har nu kopieret DB'en inkl. ADHResize2k.mde til en anden maskine. DB'en 'nedarver' fint referencen til mde-filen, men når jeg køre mine berørte forms, så siger den:

"Compile error. Can't find project or library."

Den highlighter 'Private Sub Form_Open(Cancel As Integer)'. I selve koden highlighter den 'frmResize.ScaleControls = scYes' og markerer specifikt 'scYes'. At skifte til ’scNo’ har ingen effekt. Hvis jeg helt sletter funktionen, får jeg ingen fejlmeldinger, men resize virker ikke.

Begge maskiner er PC’er med w2k og Office 2000.

superjab du har fået det til at virke. Har du testet på forskellige maskiner ?
Avatar billede sjap Praktikant
21. november 2002 - 08:51 #20
Tony

Nej jeg har kun prøvet det på én maskine - og har ikke mulighed for at prøve det på flere før på mandag.

Jeg kan ikke lige huske hvad scalecontrols gør. Evt. kan du på den maskine hvor det virker prøve at finde ud af, hvilken værdi scYes har. Når du har fundet ud af det, kan du skrive værdien i stedet for "scYes".
Avatar billede Tony Juniormester
21. november 2002 - 08:56 #21
OK - Jeg prøver at kikke lidt på 'ScaleControls' og 'scYes' ...
Avatar billede Tony Juniormester
21. november 2002 - 12:04 #22
Tak for hjælpen gutter / gutinder.

Jeg har nu prøvet heklas 'ShrinkerStretcher' på www.peterssoftware.com.

Jeg må sige den virker perfekt ... hvis man altså liiige husker at vælge 'Arial' som default font, ellers kan der være problemer på f.eks. knapper ... :-)

BTW - ShrinkerStretcher kan hentes i Shareware, hvis man vil prøve den først.

OBS - Jvf. dens FAQ virker den ikke for godt på subformulare ...
Avatar billede sjap Praktikant
21. november 2002 - 16:08 #23
Held og lykke med det. :-)
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