- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 



 FuzzyDizzie » Delphi » Artiklar » Använd LookUp Controls
Operativsystem: Windows 95/98/ME/2000/XP
Delphiversion: Delphi 6 Professional eller senare
Komponenter: TDatasource, TAdoQuery, TDBGrid
  Publicerad: 2002-02-01
Läst: 4268
Röster: 10
Skribent: Staffan Berg

Rösta på artikeln


Förord


Om du har en lista från ett annat dataset kan du, istället för DBListBox och DBComboBox, använda komponenterna DBLookUpComboBox och/eller TDBLookUpListBox. Dessa komponenter är användbara vid tillfällen då du vill välja ett element i ett fält i en datauppsättning för att lagra denna i en annan tabell.

Använda komponenterna
Om du till exempel har ett formulär för att hantera order från en kund har den underliggande tabellen vanligen ett ID för att identifiera kunden som har skickat beställningen. Att arbeta med kundens ID-nummer är inte det mest naturliga sättet. De flesta användare vill säkert referera till kundens egentliga namn. Hur-som-helst så är kundernas namn lagrade i en annan tabell i din databas. Detta för att undvika duplikat för olika order av samma kund. För att göra en sådan situation så smidig som möjligt för slutanvändaren kan du med fördel använda en DBLookUpComboBox-komponent. Du hittar denna under fliken Data Controls i komponentpaletten.

Det fina i kråksången är att komponenten DBLookUpComboBox kan kopplas till två datakällor samtidigt, en datakälla för lagrade data och en för data som skall visas för användaren.

Om vi ponerar att du har ett formulär som hanterar order och en tabell för dina kunder kan du koppla en DBLookUpComboBox till datakällan för dina order och till fältet kundnr. För att kunna visa information från en annan tabell (i detta fall tabellen kunder) måste vi knyta en annan tabellkomponent som refererar till vår komponent. För att programmet skall kunna fungera måste ett flertal egenskaper för DBLookUpComboBox1 ställas in.

object DBLookUpComboBox1: TDBLookupComboBox
DataSource = DataSource1
DataField = 'KundNr'
ListSource = DataSource2
KeyField = 'KundNamn'
ListField = 'KundNamn;Adress'
end


Dessa egenskaper etablerar en koppling till databasen och är de viktigaste i uppslagskomponenten.

 DataSource - Definierar huvudkopplingen (i detta fall tabellen Order)

 DataField - Fältet i vilket vi lagrar det uppslagna värdet.

 ListSource - Datakällan som innehåller datasetet med uppslagsvärdena.

 KeyField - Identifierar värdet i ListSource som ska matcha fältet DataField.

 ListSource - Ett (eller flera) fält i uppslagsdatasetet som ska visas i kontrollen för användaren. Om du har flera fältnamn skall dessa separeras med semikolon. Här blir du då tvungen att ställa in värdet i egenskapen DropDownWidth så att alla kolumner blir synliga i uppslagskontrollen.

DBLookUpComboBox är alltså användbar när du snabbt vill hämta (slå upp) värden i en annan dataupssättning för att sedan lagra dessa i din huvudtabell. Det finns tre tillfällen då denna komponent kan vara särskilt användbar.

1. När du har ett formulär där alla redigeringar sker i en DBGrid. Du kan då skapa ett uppslagsfält direkt i DBGrid-kontrollen. Detta går dock till på ett lite annorlunda vis än vad som beskrivits ovan.

2. Om ditt formulär innehåller en rad andra kontroller såsom DBEdit, DBComboBox etc. Du kan då använda en DBLookUpComboBox istället för att skapa ett nytt fält.

3. Du kan också använda komponenten för att använda kolumner i en DBGrid med hjälp av dess PickList-egenskap. Detta blir ingen riktig uppslagsmetod i ordets rätta bemärkelse med den kommer ändå att uppföra sig som en sådan. I PickList-listan kan användaren välja ett värde från ett fält - precis som i en vanlig DBComboBox - men inuti en DBGrid.

Sammanfattningsvis
En DBLookUpComboBox (eller en DBLookUpListBox) är inte helt lätt att konfigurera. Det kräver att flera komponenters egenskaper är rätt inställda. Det är också viktigt att dina databastabeller är normaliserade på ett riktigt sätt. Jag själv hade mycket huvudbry innan jag fick komponenten att fungera som jag ville, men när man överstigit dessa svårigheter är det en mycket bra och användbar komponent. Inte minst sparar det både tid och arbete för slutanvändaren.


Vid tangentbordet
/Staffan Berg



 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -