22. januar 2007 - 12:07Der er
8 kommentarer og 2 løsninger
Sortering i comboboks
Jeg har 1 combobokse med ca. 20 elementer i. Den funktionalitet jeg er ude efter, er den som findes i MS Word hvor comboboksen "Font" husker 3-4 seneste fonte man har valgt og lægger dem øverst i comboboksen.
Det ville være utrolig dejligt, hvis nogen kunne komme med et godt eksempel til løsningen.
det skal du jo selv kode, kunne du ikke bare i combo'ens clickevent, flytte den valgte op på øverste plads, så vil dem du sidst har vaægt jo ligge øverst
procedure TForm.ComboBox1.OnClick() begin ComboBox1.Items.Exchange(ComboBox1.Items[ComboBox1.ItemIndex],ComboBox1.Items[0]); end;
Jeg har desværre ikke en løsning, men har en kommentar til MartinLind's indlæg.
Denne metode er vel OK, hvis man blot ønsker de nyeste items øverst, men... Jeg ser væsentlige ulemper i det.
Hvis man ønsker, at listen i combobox'en skal være sorteret alfabetisk (det er vel ønskværdigt, hvis man har et større antal items), men at de øverste 4-5 pladser er reserveret til de sidst anvendte items (vel en kopi af de pågældende items) adskilt af en skillestreg, så skal der nok noget speciel kode til, evt. en selvkonstrueret komponent
This Delphi component is an advanced combobox which shows the available Windows fonts. A lot of features for preview, used fonts, show font types (truetype, printer, symbol), ... are provided. This component provides all features of the Microsoft and Corel font combobox.
vint >> du kan ikke både sortere og vælge de sidst valgte øverst :), det var også kun ca 20 items der var i, så det er nok den løsning jeg ville vælge.
Kroning >> Det var ikke en font-combo han søgte :(
martinlind >> Som jeg skriver, skal der nok et helt nyt component til, for så vil det vel være muligt eller tager jeg fejl? (Jeg er ikke erfaren nok til det).
Men en komponent som den kroning har fundet, bare med den forskel, at det ikke er fonte, men selvdefinerede items, det burde kunne laves. Og så kan der jo både sorteres og vælge de sidst anvendte øverst ;o)
du sorterer dine items, og gør som jeg foreslår, hvor svært kan det være, du vil jo skulle gøre noget der "ødelægger" din sortering hvis du skal huske at de 2 sidste du valgte var "Ole" og "Peter", kan det jo ikke stå sorteret :(
Det er da ikke så svært med den history-combo. Som Martin skriver: brug dens OnChange eller OnClick til at snuppe teksten.
Hvis tekst allerede er øverst, så exit eventen Hvis fundet i liste, slet den fundne. Indsæt tekst øverst. Hvis listen > maxantal, slet den ældste linje.
Hvad vint' indlæg angår, kan man vel strikke noget sortering sammen vha. comboens CustomSort funktionalitet
Der skal ikke ret meget kode til.
Hvis man vil gemme historikken i en tabel så den følger brugerens login, er det lidt mere kompliceret. Sådan en Stored Procedure løsning har jeg, hvis du skulle være interesseret.
whitehawk >> du skal lige acceptere vores svar, så spm. bliver lukket :)
Synes godt om
Ny brugerNybegynder
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.