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
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.
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.
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
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 ... :)
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.
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.
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 ... :-)
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 ... :)
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.
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.
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 ... :)
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 ...
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 ?
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".
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 ...
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.