Ik heb het nogal eens nodig en verbaas me steeds dat het niet werkt: Een aantal componenten op het form moeten elk 25 pixels opschuiven om er nog één tussen te kunnen voegen. Hoe doe je dat? Slepen? Komt niet uit met het grid. Ctrl+Down? Kan ook, maar dan moet je 25 keer op dat knopje drukken...
Baldo, de OTA-koning spoorde me aan om er dan maar eens wat aan te doen, hetgeen na iets meer dan een uurtje puzzelen heeft geleid tot deze simpele, maar doeltreffende property editor. De code is in ieder geval een stuk korter dan deze aankondiging.
Met deze property-editor is het schuiven van componenten een stuk eenvoudiger. Als TIntegerPropertyEx is geïnstalleerd, kun je relatieve waarden opgeven voor integer properties, zodat je gewoon 25 kunt optellen bij de top van alle geselecteerde components!
Eisen
De code is getest op Delphi 5 en Delphi 2006, en zou ook moeten werken voor alle tussenliggende versies. Met een slim geplaatste define werkt het waarschijnlijk ook wel op eerdere versies.
Installatie
Installeer de unit in een design-time package. Voor wie niet weet hoe dat werkt; onderstaande stappen tonen een manier om dit te doen:
~ Maak een nieuwe package (File->New->Package)
~ Voeg de unit uIntPropEditorEx toe
~ Wijzig in Options de usage option naar 'Designtime package'
~ 'Install' de package.
That's it.
Gebruik
Integer properties, zoals Top en Left, maar natuurlijk ook andere, accepteren waarden in de volgende notaties (N is een integer, F accepteert een Integer of Floating point waarde):
N : De property krijgt de waarde N (standaard werking)
+N : N wordt opgeteld bij de huidige waarde. N mag een negatief getal zijn (bijv +-10)
*F of /F : De huidige waarde wordt vermenigvuldigd met of gedeeld door F
+F% : Er wordt F% van de waarde opgeteld bij de huidige waarde. F mag negatief zijn.
*F% : De waarde wordt ingesteld op F% van de huidige waarde.
De optellingen spreken voor zich. Een groep componenten in een keer opschuiven is iets wat ik zelf nogal eens nodig heb, en ik ben vast niet de enige.
De vermenigvuldigingen en percentages zullen misschien niet veel gebruikt worden, maar kunnen bijvoorbeeld handig zijn wanneer je je labels 25% groter wilt maken om genoeg ruimte te bieden in een internationale versie van je applicatie. En heb je het niet nodig? Gewoon geen % tikken en je zult er geen last van hebben.
Bugs, wensen, todo
~ Uitbreiden naar andere types, m.n. Int64 en Floats.
~ Andersom aftrekken: Als je N- opgeeft moet de huidige waarde van N worden afgetrokken. Waarschijnlijk volledig zinloos, en daarom nog geskipt. (Versie 2)
~ Variabelen of constanten of properties ondersteunen en echte berekeningen uitvoeren, bijvoorbeeld: 'Parent.Height-Height' om het object onderaan het form te zetten, of 'Parent.Height - Height - 10' om 'm 10 pixels boven de onderrand te zetten. (Leuk voor versie 3 of 4... of 5)
Bookmarks