Avatar billede whitehawk Nybegynder
22. januar 2007 - 12:07 Der 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.
Avatar billede martinlind Nybegynder
22. januar 2007 - 13:01 #1
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;

Noget i den her stil :)

/Martin
Avatar billede vint Nybegynder
22. januar 2007 - 14:24 #2
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
Avatar billede kroning Nybegynder
22. januar 2007 - 15:59 #3
http://www.torry.net/vcl/lbcb/fontlistandcomboboxes/TscFontCombobox1.0.zip

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.

Fully functional
Source: Included
Avatar billede kroning Nybegynder
22. januar 2007 - 16:03 #4
Du kan se et billede af komponenten her og hente nyeste version:
http://www.scip.be/index.php?Page=ComponentsFontCombobox&Lang=EN
Avatar billede martinlind Nybegynder
22. januar 2007 - 17:07 #5
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 :(
Avatar billede vint Nybegynder
22. januar 2007 - 19:18 #6
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)
Avatar billede martinlind Nybegynder
22. januar 2007 - 19:37 #7
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 :(
Avatar billede whitehawk Nybegynder
23. januar 2007 - 09:26 #8
Tak for svarene
Avatar billede hrc Mester
23. januar 2007 - 10:30 #9
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.
Avatar billede martinlind Nybegynder
23. januar 2007 - 12:54 #10
whitehawk >> du skal lige acceptere vores svar, så spm. bliver lukket :)
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