Kako prikazati i urediti MEMO polja u Delfijinom TDBGridu

Ako razvijate aplikacije baze podataka s tablicama koje sadrže MEMO polja, primijetit ćete da TDBGrid komponenta prema zadanim postavkama ne prikazuje sadržaj MEMO polja unutar DBGrid ćelije.

Ovaj članak daje ideju kako riješiti problem ovog TMemoFielda (s još nekoliko trikova) ...

TMemoField

Bilješke se koriste za predstavljanje dugog teksta ili kombinacije teksta i brojeva. Prilikom izrade aplikacija baze podataka pomoću Delphija, TMemoField objekt koristi se za predstavljanje podsjetničkog polja u skupu podataka. TMemoField kapsulira osnovno ponašanje uobičajeno za polja koja sadrže tekstualne podatke ili proizvoljne duljine. U većini baza podataka veličina polja Memo je ograničena veličinom baze podataka.

Dok možete prikazati sadržaj polja MEMO u komponenti TDBMemo, dizajniranjem TDBGrid prikazat će samo ((Memo) "sadržaj takvih polja.

Kako biste zapravo prikazali neki tekst (iz polja MEMO) u odgovarajućoj DBGrid ćeliji, trebat ćete samo dodati jednostavnu liniju koda ...

U svrhu sljedeće rasprave, recimo da imate tablicu baze podataka pod nazivom "TestTable" s najmanje jednim poljem MEMO pod nazivom "Podaci".

instagram viewer

OnGetText

Da biste pokazali sadržaj polja MEMO u DBGridu, morate dodati jednostavnu liniju koda u polje OnGetText događaj. Najlakši način za izradu alata za obradu događaja OnGetText je korištenje uređivača polja u vrijeme dizajniranja za stvaranje uporne komponente polja za memorijsko polje:

  1. Spojite svoju TDataset potomku komponentu (TTable, TQuery, TADOTable, TADOQuery ...) u tablicu baze podataka "TestTable".
  2. Dvaput kliknite komponentu skupa podataka da biste otvorili uređivač polja
  3. Na polje upornih polja dodajte polje MEMO
  4. Odaberite polje MEMO u uređivaču polja
  5. Aktivirajte karticu Događaji u Inspektoru objekata
  6. Dvaput kliknite OnGetText događaj da biste stvorili alat za obradu događaja

Dodajte sljedeći redak koda (napisan kurzivom u nastavku):

postupak TForm1.DBTableDataGetText (
Pošiljatelj: TField;
var Tekst: string;
DisplayText: Boolean);
početi
Tekst: = Kopiraj (DBTableData. AsString, 1, 50);

Napomena: objekt skupa podataka zove se "DBTable", MEMO polje se naziva "DATA", i stoga se prema zadanim postavkama TMemoField povezan u polje baze podataka MEMO naziva "DBTableData". Dodjeljivanjem DBTableData. AsString prema Tekst parametrom događaja OnGetText, kažemo Delphiju da prikaže SVE tekst iz polja MEMO u DBGrid ćeliji.
Također možete prilagodite širinu zaslona polja napomena na prikladniju vrijednost.

Napomena: budući da polja MEMO mogu biti prilično VELIKA, dobra je ideja pokazati samo dio nje. U gornjem kodu prikazano je samo prvih 50 znakova.

Uređivanje na zasebnom obrascu

TDBGrid prema zadanim postavkama ne dopušta uređivanje MEMO polja. Ako želite omogućiti uređivanje "na mjestu", možete dodati neki kôd za reakciju na korisničku radnju koja prikazuje zaseban prozor koji omogućuje uređivanje pomoću TMemo komponente.
Radi jednostavnosti otvorit ćemo prozor za uređivanje kad ENTER bude pritisnut "na" MEMO polju u DBGridu.
Koristimo KeyDown događaj DBGrid komponente:

postupak TForm1.DBGrid1KeyDown (
Pošiljalac: TObject;
var Ključ: Riječ;
Shift: TShiftState);
početi
ako je Key = VK_RETURN onda
početi
ako je DBGrid1.SelectedField = DBTableData tada
s TMemoEditorForm. Stvoriti (nula) učiniti
probati
DBMemoEditor. Tekst: = DBTableData. AsString;
ShowModal;
DBTable. Uredi;
DBTableData. AsString: = DBMemoEditor. Tekst;
konačno
Besplatno;
kraj;
kraj;
kraj;

Napomena 1: "TMemoEditorForm" je sekundarni oblik koji sadrži samo jednu komponentu: "DBMemoEditor" (TMemo).
Napomena 2: "TMemoEditorForm" uklonjen je s popisa "Automatsko stvaranje obrazaca" u dijaloškom prozoru Mogućnosti projekta.

Pogledajmo što se događa u DBGrid1-ovom alatu za upravljanje KeyDown događajima:

  1. Kad korisnik pritisne tipku ENTER (parametar Key uspoređujemo s VK_RETURN kod virtualnog ključa) [Ključ = VK_RETURN],
  2. Ako je trenutno odabrano polje u DBGridu naše MEMO polje (DBGrid1.SelectedField = DBTableData),
  3. Stvaramo TMemoEditorForm [TMemoEditorForm. Stvori (nula)],
  4. Vrijednost polja MEMO pošaljite TMemo komponenti [DBMemoEditor. Tekst: = DBTableData. AsString],
  5. Modalno prikaži oblik [ShowModal],
  6. Kad korisnik završi s uređivanjem i zatvori obrazac, moramo staviti datastest u način uređivanja [DBTable. Uredi],
  7. Kako biste mogli dodijeliti uređenu vrijednost natrag u naše polje MEMO [DBTableData. AsString: = DBMemoEditor. Tekst].

Napomena: Ako tražite više članaka i savjeta za upotrebu koji se odnose na TDBGrid, obavezno posjetite: "TDBGrid do MAX-a"zbirka savjeta.

instagram story viewer