HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DBGrid tartalmának exportálása ListView-ba


Példaprogram letöltése

4286 bájt

Létrehozunk egy olyan eljárást, mely bármilyen tartalmú DBGrid adatait képes átmásolni egy ListView komponensbe, létrehozva annak oszlopait automatikusan. A másolás elvégzéséhez az eljárásnak csak a másolandó DBGrid komponenst és másolás helyét, a ListView komponenst kell megadni.

Ez az eljárás lesz a DBGridToListView, melynél első lépésünk az, hogy letiltjuk a tartalmának újrarajzolását a BeginUpdate eljárás hívásával. Így tetszőleges számú elemet hozzáadhatunk anélkül, hogy az megjelenne. Ezáltal a feltöltés gyorsabb lesz és ráérünk majd csak ennek végeztével újrarajzoltatni a komponens területét.
Beállítjuk a ListView-et vsReport nézetre, hogy több oszlop is megadható legyen, mint ami a DBGrid-ben van, majd töröljük az esetleges tartalmat és meglévő oszlopokat.
procedure DBGridToListView(DBGrid: TDBGrid; ListView: TListView);
begin
  ListView.Items.BeginUpdate;
  ListView.ViewStyle:=vsReport;
  ListView.Items.Clear;
  ListView.Columns.Clear;
Egy ciklus segítségével létrehozzuk a ListView új oszlopait, melyeknek száma, felirata és igazítása egyezni fog a DBGrid-ben lévő oszlopokkal.
  for i:=0 to DBGrid.Columns.Count-1 do begin
    with ListView.Columns.Add do begin
      Caption:=DBGrid.Columns[i].Title.Caption;
      Width:=DBGrid.Columns[i].Width+10;
      Alignment:=DBGrid.Columns[i].Alignment;
    end;
  end;
Amint adottak az oszlopok, következhetnek a sorok. Ehhez el kell érnünk a DBGrid-hez kötött TTable komponenst. Fontos tudnivaló, hogy jelen megoldásunk csak TTable-val működik, mivel csak erre lett felkészítve az eljárásunk, így ne használjunk olyan DBGrid-et, melyhez egy TQuery kapcsolódik.
Mivel végig kell mennünk az adattábla összes során, így letiltjuk a táblához tartozó megjelenítő kontrolokat a DisableControls eljárással. Ekkor, ahogy lépkedünk az egyes sorokon, a DBGrid aktuális sora nem változik, ezáltal gyorsabb lesz az adatátvitel.
Mielőtt ennek nekilátnánk, egy könyvjelzőt is elhelyezünk az aktuális sorra, hogy az adatátvitel után visszaállhassunk az eredeti pontra.
  t:=DBGrid.DataSource.DataSet as TTable;
  t.DisableControls;
  bo:=t.GetBookmark;
Az adatátvitelhez a tábla első sorára ugrunk majd egy while ciklussal végigmegyünk az összes soron.
  t.First;
  while not t.Eof do begin
ListView-hez hozzáadunk egy-egy sort, ahol az első oszlop adatát annak Caption property-jén keresztül állítjuk be, majd a többi oszlop adatát a SubItems property-n keresztül adjuk hozzá egyesével egy for ciklus segítségével.
    with ListView.Items.Add do begin
      Caption:=VarAsType(t.FieldValues[DBGrid.Columns[0].Field.FieldName], varString);
      for i:=1 to DBGrid.Columns.Count-1 do begin
        SubItems.Add(VarAsType(t.FieldValues[DBGrid.Columns[i].Field.FieldName], varString));
      end;
    end;
    t.Next;
  end;
Végül visszaállítunk mindent az eredeti állapotba és engedélyezzük a ListView újrarajzolását, mely most már tartalmazza a DBGrid minden adatát.
  t.GotoBookmark(bo);
  t.FreeBookmark(bo);
  t.EnableControls;
  ListView.Items.EndUpdate;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 564. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |