Avatar billede friiiiis Novice
27. december 2011 - 13:19 Der er 7 kommentarer og
1 løsning

Combobox og ADOQuery

Hej,

Jeg fylder en combobox på følgende måde:

for i:=0 to ADOQuery1.RecordCount-1 do
  begin
  combobox1.Items.AddObject('ProduktionsOrdreNummer ' + 
    ADOQuery1.FieldByName('SalesProj').AsString,
    TOBject(ADOQuery1.FieldByName('SalesProj').AsString));
  ADOQuery1.next;
  end;

combobox1.ItemIndex := 0;


dernæst bruger jeg comboboxchange til at finde ProduktionsOrdreNummeret:



procedure TForm10.ComboBox1Change(Sender: TObject);
begin

showmessage(
String(combobox1.Items.Objects[combobox1.ItemIndex]));

end;


Ovenstående giver en EAccessViolation efter et eller 2 klik på comboboxen...

Hvorfor det??

Jeg har prøvet at sætte tal ind i comboxen manuelt og det fungerer fint??? Det er som om at problemet er knyttet til ADOQuery
Avatar billede spil2vind Nybegynder
27. december 2011 - 13:27 #1
Hvad er det du gerne vil have svar på via combobox change?
Avatar billede kroning Nybegynder
27. december 2011 - 13:37 #2
Jeg har prøvet det samme og får ingen fejl, men bortset fra det så forstår jeg ikke at du bruger AddObject på den måde du gør ?
Avatar billede friiiiis Novice
27. december 2011 - 14:36 #3
OK - jeg skylder en nærmere forklaring:

Når jeg vælger et emne fra combobox'en så vil jeg gerne have et unikt tal. Altså, lige som TstringList - der er altså tilknyttet en value til hvert name og index.

Altså; hvordan jeg ellers tilføje en række records bestående af "Names/Values" til et combobox object?

Og hvordan får jeg efterfølgende hente "Value" ud fra combobox.itemindex ?
Avatar billede spil2vind Nybegynder
27. december 2011 - 15:13 #4
Den værdi der er i den valgte værdi kan jo fåes ved ComboBox1.Items.Strings[ComboBox1.ItemIndex], men jeg forstår ikke hvorfor du har foranstillet 'ProduktionsOrdreNummer '
Avatar billede friiiiis Novice
27. december 2011 - 15:56 #5
I dette specifikke tilfælde ja!

Men hvad nu hvis du har en combobox der indeholder følgende tekst

gulerødder
æbler
pærer
radiser

Når jeg så vælger f.eks. "Gulerødder" så vil jeg gerne have et varenummer unikt for "Gulerødder" men som ikke er vidst i teksten i "gulerødder".

Ved at benytte ovenstående metode med "TObject" kan jeg hente et unikt nummer ud fra en given tekst der er valgt i comboboxen?

ComboBox1.Items.Strings[ComboBox1.ItemIndex] giver mig ikke det tilknyttede tal...
Avatar billede kroning Nybegynder
27. december 2011 - 16:14 #6
Du skal nok oprette et TObject for hver string i din ComboBox og i denne kan du så f.eks. definere en Recnr : integer eller en anden unik ID for din data post.
Husk at du selv skal slette alle dine TObject, fra hjælpen:
The TStringList object does not own the objects you add this way. Objects added to the TStringList object still exist even if the TStringList instance is destroyed. They must be explicitly destroyed by the application.
Avatar billede spil2vind Nybegynder
27. december 2011 - 16:23 #7
Jeg ville simpelhen oprette en stringlist som kunne indeholde dit varenummer, da det jo ikke nødvendigvis skal vises når man vælger varen i combobox'en men mere skal bruges til at arbejde videre med dit valg
Avatar billede friiiiis Novice
27. december 2011 - 17:41 #8
jeg fandt en løsning her og den virker helt perfekt og er samtidg mere fleksibel end den jeg selv før har benyttet

http://www.delphipages.com/forum/showthread.php?t=113505

ellers tak for løsningen
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