Avatar billede nolle_k Nybegynder
29. december 2000 - 09:34 Der er 28 kommentarer og
2 løsninger

Altid Øverst!!

Hej Alle!

Jeg er i denne situation, at jeg er ved at lave min egen ComboBox, der kan forskelligt!! Såsom blandt andet at indholde flere kolonner.

Mit problem er så, at hvis jeg benytter denne nye ComboBox i en ramme så bliver ComboBoxen afskåret når jeg trykker på knappen, der får listen til at falde ned! Det jeg er interesseret i er en funktionalitet, der ligner den for en ganske almindelig ComboBox. Denne er altid øverst når listen vises!

Håber det er til at fatte!!
Avatar billede nolle_k Nybegynder
29. december 2000 - 09:36 #1
En ganske almindlig combobox gå tilmed ud over formen, hvis den er placeret på en sådan!
Avatar billede krismort Nybegynder
29. december 2000 - 11:52 #2
Hej nolle_k

Jeg har godt nok aldrig selv prøvet et lave en ny type combobox. Hvad er fordelen ved din denne?

Kristian
Avatar billede nolle_k Nybegynder
29. december 2000 - 11:54 #3
Flere kollonner!!!!!
Avatar billede krismort Nybegynder
29. december 2000 - 12:02 #4
Har du prøvet at markere rammen hvori comboboxen er placeret og bringe højreklik menuen frem. I denne er der noget der hedder \"bring to front\" og \"bring to back\" med denne indstilling kan man rykke sin ramme/objekt frem og tilbage i 3 lag(så vidt jeg husker).
Men hvis man starter med at oprette en ramme og derefter opretter sine opjekter inde i rammen bliver de automatisk forbundet med rammen. I denne process bliver kommer de til at ligge øverst og rammen kommer samtidig til at fungere som en grænse for objekterne således at de ikke kan flyttes udenfor denne.

Kristian Out
Avatar billede krismort Nybegynder
29. december 2000 - 12:03 #5
Hvordan har du lavet din nye combobox?
Avatar billede nolle_k Nybegynder
29. december 2000 - 12:05 #6
Det har jeg prøvet og det løser kun mit problem nogenlunde!!

Jeg kunne bare godt tænke mig at det med rammen var muligt! For eksempel hvis du tager en almindelig ComboBox! Det er fint nok at selve comboboksen ikke kan flyttes uden for rammen men det er muligt at se DropDown listen for en almindelig ComboBox uden for rammen og endda uden for en evt form! Prøv Det!! Det er denne funktionalitet jeg gerne vil have så brugeren, i dette tilfælde mig selv ikke skal bekymre sig om hvor ComboBoxEx som jeg har kaldt den er placeret henne!
Avatar billede nolle_k Nybegynder
29. december 2000 - 12:06 #7
Jeg har lavet comboBoksen ved hjælp af en UserControl, der indeholder En tekst box, en knap og et ListView!!!

Dette gør at jeg kan vise flere kollonner og Billeder!
Avatar billede scb Praktikant
29. december 2000 - 12:13 #8
Hvad med at placerer det hele på en ny form, hvor rammen ikke vises, formen kan så placeres og ændre størrelse som du ønsker det.
-SCB
Avatar billede nolle_k Nybegynder
29. december 2000 - 12:16 #9
Så skal denne form gøre usynlig og det er noget være bøvl er det!! Men det kunne være en løsning bare ikke en jeg har lyst til at benytte!

Det må sgu da kunne lade sig gøre at lave et API kald, der sørger for at den pågældende usercontrol skal skide, undskyld sproget, højt og flot på, hvad der hedder ramme og form grænser!
Avatar billede krismort Nybegynder
29. december 2000 - 12:27 #10
Jeg mener bare ikke at API opkald og visual basic værktæjer arbejder så godt sammen. Men det er et forsøg værd så er det bare at få fyret op for API viewer.

Kristian out
Avatar billede nolle_k Nybegynder
29. december 2000 - 12:28 #11
Jeg har skam fyret! Jeg mangler bare at finde START knappen!!! Jeg har prøvet med SendMessage (left, Top, Width..... WM_TOPMOST...) Det hjælper ikke!
Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:31 #12
krismort:> API kald og VB arbejder helt fint sammen!

nolle_k:> vedr. API så kan jeg anbefale www.vbapi.com som API reference hvis du skal bruge eksempler. Desuden kan du få en form til at være Always On Top vha. flg. kode som du kan smide i et modul, og kalde i din Form_Load med SetOnTop Me, True

Declare Function SetWindowPos Lib \"User32\" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_NOACTIVATE = &H10
Public Const SW_SHOWNORMAL = 1

Public Sub SetOnTop(frmForm As Form, bolOnTop As Boolean)
    Select Case bolOnTop
        Case True:  lngFlag = HWND_TOPMOST
        Case False: lngFlag = HWND_NOTOPMOST
    End Select
   
    SetWindowPos frmForm.hwnd, lngFlag, frmForm.Left / Screen.TwipsPerPixelX, frmForm.Top / Screen.TwipsPerPixelY, frmForm.Width / Screen.TwipsPerPixelX, frmForm.Height / Screen.TwipsPerPixelY, SWP_NOACTIVATE Or SWP_SHOWWINDOW
End Sub

det er ikke sikkert du kan bruge det, men det hjælper da lidt på vej.
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:34 #13
Det er netop det jeg har prøvet! Og jeg kan ikke få det til at virke for en UserControl!

Hvis I vil vide helt præcist hvad mit problem er så prøv at lave en Frame og indsæt en listboks i rammen så den er uden for rammen. Det vil sige at den nederste del er uden fo rammen (Det vil sige at den ikke kan ses i designtime fordi rammen skærer af)

Det jeg gerne vil er at jeg kan se rammem i Runtime!!! Et API kald, der kan dette!!
Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:37 #14
nolle_k:> nej, det virker ikke på en UserControl, men hvordan laver du da denne liste der skal vises ? Jeg har selv lavet en dropdown OCX hvor jeg bruger en form til at vist listen på. DER kan man bruge den kode jeg kom med.
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:39 #15
OK en form! Jeg har bare brugt et ListView!! Det kunne da godt være at jeg skulle prøve at putte denne ind i en form! Det ville bare være rart hvis jeg slap for dette!!

Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:42 #16
nolle_k:> problemer med en UserControl ER nemlig at du ikke selv kan bestemme om den skal være synlig ligemeget hvad. En normal Windoze combo virker internt i kode nok også ved at den viser en form eller noget andet sjov der gør at listen kan vises uafhængigt af hvor kontrollen er placeret.
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:43 #17
Takker!  Jeg er i fuldt sving! Det er det eneste jeg mangler for at få min Combo til at virke tilfredsstillende!
Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:45 #18
nolle_k:> har du et screenshot af din combo ?
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:46 #19
Ikke i øjeblikket!!

Den kan ikke så meget andet end vise flere kollonner og Iconer!!
Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:49 #20
nolle_k:> jamen det er da også store ting .. virker den sårn eller er det kun designet du er nået til ?
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:50 #21
Den virker skam! Jeg mangler bare lige det sidste her!!!!

Jeg mangler også lige det med Iconerne! Men det tager ikke så lang tid! TROR jeg!! Det sagde jeg jo også om det andet! *GGG*
Avatar billede tdaugaard Nybegynder
29. december 2000 - 13:54 #22
*G* .. heey .. er det en kontrol du vil \"dele\" med andre eller er det til privat brug ?
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:57 #23
Indtil videre til privat brug!

Men du kan jo give mig et forslag til hvordan man indsætter tekststrenge i ComboBoksen hvis der er flere kollonner!!

Jeg gør følgende ComboBoxEx.AddItem Array(\"1.Col\", \"2.Col\", \"3.Col\")

Forudsat at den selvfølgelig er sat op til tre kollonner!!


Jeg ved ikke om det er en smart måde at gøre det på!!
Avatar billede nolle_k Nybegynder
29. december 2000 - 13:57 #24
Så kan det jo være at det bliver en dele ting!
Avatar billede tdaugaard Nybegynder
29. december 2000 - 14:00 #25
Det aner jeg godtnok ikke .. det er svært at give forslag til når ikke man selv sidder med hele projektet..
Avatar billede nolle_k Nybegynder
29. december 2000 - 14:10 #26
Det ikke så meget hvordan man gør det! Men hvordan det ville være genialt at jeg laver AddItem funktionen!!

I mit tilfælde bruger jeg Array Funktionen!! men måske skulle man have et index med i AddItem funktionen, der fortæller i hvilken kollonne teksten skal indsættes! Det viil sige at ovenstående eksempel vil se ud som følger

\'First Col
ComboBoxEx.AddItem Array(\"1.Col\", 1)
\'Second Col
ComboBoxEx.AddItem Array(\"1.Col\", 2)
\'Third Col
ComboBoxEx.AddItem Array(\"1.Col\", 3)

Bare for at tage endnu et eksempel!


Avatar billede tdaugaard Nybegynder
29. december 2000 - 14:14 #27
Nåå .. på den måde ..
Hmm .. så du har en række med X antal kolonner ? Så tror jeg det vil være bedst at bruge Array()

ComboBoxEx.AddItem Array(\"1.Col\", \"2.Col\", \"3.Col\")

vil være bedst.
Avatar billede nolle_k Nybegynder
29. december 2000 - 14:15 #28
OK!!
Avatar billede nolle_k Nybegynder
29. december 2000 - 17:30 #29
Nu virker det næsten!!

Men hvordan fanden fanger jeg at fokus mistes fra formen det vil sige den liste jeg bruger på formen!! Det er SGU da til at få lange nosser af!!!
Avatar billede nolle_k Nybegynder
02. januar 2001 - 11:19 #30
tdaugaard -> Almost there!!

Men kan det ikke lade sig gøre at fange at der trykket med musen uden for den form jeg viser som liste??? Jeg viser formen Modal og vil gerne vide når der klikkes uden for denne!! Kan dette gøres????
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
Kurser inden for grundlæggende programmering

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