DargarWhiteFang Skrevet 26. februar 2005 Del Skrevet 26. februar 2005 Bruker Load for å skape nye knapper og labels etc. Problemet blir når jeg vil gjøre dette på objekt som ligger i forskjellige "SSTab" fliker. Skal prøve å forklare litt nærmere: Jeg har et program der jeg har laget den første fliken med innhold manuelt. Bassert på verdien til en konstant (f.eks. 3) så skal jeg lage x nye fliker på SSTab'en og fylle disse flikene med "kopier" av inneholdet i flik 1 i SSTab'en. Resultatet skal bli at flik x inneholder f.eks. btnExample(x) osv osv. Prøvde bare å bruke "load" "rett fram" men oppdaga da att allt jeg loada la seg i samme "flik" som "faderen" til load-objektet (alltså samme flik som objekt(0) ligger i). Hvordan kan jeg spesifisere hvilken "flik" det nye objektet skal "load'es" inn i? MSDN for Load sier ikke noe om dette? Lenke til kommentar
aadnk Skrevet 26. februar 2005 Del Skrevet 26. februar 2005 Dette er så absolutt ikke umulig, men det må imidlertid gjøres på en litt ulogisk og stygg måte, er jeg redd. Benytt følgende kode for å flytte en kontroll til en annen tab: Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Public Sub MoveControlToTab(ByVal SSTab As SSTab, ByVal oControl As Control, ByVal lNewTab As Long, Optional ByVal bAutoActivateTab As Boolean = True) Dim lTab As Long ' Lagre den nåværende posisjonen lTab = SSTab.Tab ' Flytt kontrollen til formen SetParent oControl.hWnd, SSTab.Parent.hWnd ' Aktiviser den nye tabben SSTab.Tab = lNewTab ' Flytt dernest kontrollen til den aktive tabben SetParent oControl.hWnd, SSTab.hWnd If Not bAutoActivateTab Then ' Aktiviser den originale tabben SSTab.Tab = lTab End If End Sub Eksempelvis kan du benytte den som følger: Private Sub Form_Activate() Load optTest(1) optTest(1).Visible = True optTest(1).Top = optTest(0).Top + optTest(0).Height ' Flytt denne kontrollen til tab nummer to MoveControlToTab SSTab1, optTest(1), 2 End Sub Bemerk at koden IKKE vil fungere i verken Form_Initialize eller Form_Load. Du må kjøre koden ifra hendelsen Form_Resize eller en hendelse høyere i aktiveringssekvensen. Lenke til kommentar
DargarWhiteFang Skrevet 27. februar 2005 Forfatter Del Skrevet 27. februar 2005 -Er dette en av de tingene som er smidigere og mer logiske i VB.net? Forresten fikk jeg en liten feil i din kode, testa den ved å legge koden inn i et nytt prosjekt som inneholdt 1 stk SSTab1 som hadde 1 tabb. Du hadde glemt å legge til kode for å sette antall tabber før du forsøkte å aktivere den. 'Skape tabben som vi vil flytte kontroller inn i SSTab.Tabs = lNewTab + 1 ' Aktiviser den nye tabben SSTab.Tab = lNewTab Ville bare si at din hjelp aadnk, og hjelpen jeg har fått fra alle dere andre, er helt ubeskrivelig! -Kanskje er det noen av dere som synest at jeg spørr for mye, men jeg jobber faktisk veldig mye selv med kodene også, men jeg har ikke tid til å lære alt alene, og det er da det er så fantastisk å ha en gjeng som det vi har her på forumet! Jeg har faktisk et dokument (SDK-liknende) som jeg fører opp det jeg har fått hjelp med i, enn så lenge bare med folks alias, men før jeg ferdigstiller rapporten og trykker opp den, så kommer jeg til å poste her og spørre om lov til å inkludere deres virkelige navn også, så æres den som æres bør som det heter! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå