Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Private Sub Form_Load() AddText "Saltsyre", "Gift" AddText "Mælk", "Drikkevare" AddText "Brød", "Madvare" End Sub
Public Sub AddText(strText1 As String, strText2 As String) Dim intIndex As Integer With List1 '<- ListBox (Sorted = True) .AddItem strText1 intIndex = .NewIndex End With With List2 '<- ListBox (Sorted = False) .AddItem strText2, intIndex End With End Sub '---------------------- Form1 ----------------------
joern: Kan du give et eksempel på, hvordan det vil se ud, hvis det er lavet med arrays. Så kan jeg vel bare slette list1 når jeg sorterer og lægge værdierne fra det array med navnene ind igen når det er sorteret?
Hvor kommer data fra? Opbevares de i en fil (ascii) eller i en database, eller indtastes de af brugeren? Du er nødt til at fremstille spørgsmålet mere klart, før jeg kan foreslå et svar.
Programmet skal have at sted at 'slå op', når du indtaster "Ole" at kunne se at det er et drengenavn og ikke et pigenavn, - ikke sandt. Sådan en tabel har du i hjernen når det gælder danske navne.
Brugeren indtaster i en inputbox, men kan også gemme listen i en txt fil som skal kunne åbnes igen. Ren tekst det hele.
Det skal være sådan at brugeren indtaster et eller andet navn, og et ID hvor den gemmer navnet i den ene liste/array og id'et i den anden, og når navnet skifter placering, skal ID'et skifte placering, så de hele tiden er sammenkædet.
Det er stadig uklart. Der må nødvendigvis eksistere en fil på forhånd, hvor alle tænkelige madvarer, giftstoffer og drikkevarer er registreret, sammen oplysning om hvilken kategori de tilhører. Hvor skal den forbindelse ellers komme fra?
Anvendelsen af array kan jeg godt beskrive, men det løser jo ikke dit spørgsmåls grundlæggende problem.
Oplysninger gemmer jeg i en txt fil, jeg ved ik hvordan det er smartes at gemme oplysninger, men jeg kunne forestille mig, at det var smart med fx: ID|navn Altså 1|Brød 2|Mælk 3|Computer Osv.
Den måde der så bliver tilføjet nyt på er, at brugeren trykker "tilføj", skriver først i et input felt, hvad ID er og bagefter - i en anden input - hvad navnet er.
Bagefter skal man have muligheder for at sortere, så navnene ligger alfabetisk, uden ID'erne bliver blandet med andre navne, hvis du forstår?
Når du gemmer data med flere felter pr. post i en ascii-fil, skal programmet på en eller anden måde kunne afgøre, hvor et felt slutter og næste felt begynder. Enten skal du have én linie pr. post med fast længde på felterne:
Ole Olsen Søndergade 22 4780 Stege Katrine Haslund Sørensen Prags Boulevard 21, 1. Tv 2200 København N
Eller også skal du have et felt pr. linie (altså adskilt af vbcrlf) og så et fast antal linier pr. post:
Ole Olsen Søndergade 22 4780 Stege Katrine Haslund Sørensen Prags Boulevard 21, 1. Tv 2200 København N
At anvende skilletegn i form af semikolon eller andet er også muligt, men ret besværligt.
Men du forholder dig ikke til min gentagne indvending, at programmet skal have en opslagstabel for sammenhæng mellem input og kategori.
Jeg kan ikke komme med kode-forslag før du har forstået dette punkt.
"Men du forholder dig ikke til min gentagne indvending, at programmet skal have en opslagstabel for sammenhæng mellem input og kategori." Så har jeg muligvis misforstået dig der, hvis det svar du søger ikke er, at der eet navn med eet id og de skal, ligegyldige hvordan det hele rodes rundt, stadig sammenkædes, ID'et nødvendigvis ikke kun bestående af tal.
"At anvende skilletegn i form af semikolon eller andet er også muligt, men ret besværligt." Så ville en løsning med ini filer altså være bedst?
Jeg har forstået ideen med programmet sådan, at når en bruger indtaster 'rødbede', så får han at vide, at det er en madvare. Hvis han indtaster pudsekræm, skal han have at vide at det er giftigt. Eller er det bare et eksempel? En skam at ikke andre er på banen, jeg er nok for dum til at forstå, hvad det er du mener og hvad du vil opnå med dine to synkrone lister.
Du indtaster samhørende data i List1 og List2 i runtime, og det går der ged i, da list1 har sorted=true.
Jeg villg gøre følgende:
Oprette en type:
Type tpListItem List1item as string List2item as string End Type
Når en bruger taster data ind i dit program, gemmer du de to indtastninger på samme plads i et array
Dim MitArray() as tpListitem ... bla bla MitArray(i).List1item = strID MitArray(i).List2item = strNavn
Så har du ALTID samhørende værdier mellem de parvis indtastede strID og strNavn. Så kan gøre følgende to ting:
ENTEN: Ved hver indtastning ryddes List1 og List2, du sorterer arrayet efter .List1item, og fylder derefter List1 og List2 med det sorterede array. List1 og List2 skal begge have .sorted=false
ELLER
Du bruger List1.additem til at smide MitArray(i).List1tem i listen Du rydder List2, og laver en løkke, hvor du for hver post i List1 finder den tilsvarende værdi i arrayet, og når den er fundet, indlæser du MitArray(i).List2tem i List2.
egge er forholdsvis lette at leve.
Erklær arrayet som dynamsik, og HUSK at prube redim PRESERVE når du forøger størrelsen med 1
Men jeg har, en lidt billig, løsning. At jeg smider navnet ind i begge Listboxe, men den med ID'et bliver efterfulgt af |ID altså navn|ID, for så sorterer de vidst ens. Når jeg så skal bruge ID'et, bruger jeg Right(lstID.List(lstNavn's Index), InStr(lstID.List(lstNavn's Index), "|"))
hvis ID er ID fra en access database så kan du gøre sådan.
Option Explicit
Private Sub Form_Load() Dim i As Integer For i = 1 To 10 With List1 '<- ListBox (Sorted = True) .AddItem "Tekst " & i '<- Tekst .ItemData(.NewIndex) = i '<- ID (long) End With Next End Sub
Private Sub List1_Click() Dim intID As Integer With List1 '<- ListBox (Sorted = True) intID = .ItemData(.ListIndex) End With MsgBox intID End Sub
Nej, jeg kender åbenbart ikke så meget til FlexGrid
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.