Setochki (tstringgrid, tdrawgrid) Delphi, Delphi, Delphi komponensek Delphi forrás
Setochki (TStringGrid, TDrawGrid) Delphi
- Borderstyle - stílusú keretet. Íme lehetőségeit bssingie vagy bsNone. Kiválaszthatja, viszont telepíteni mindkét típusú és milyen vannak.
- coiumncount - az oszlopok számát a rács. Hagyja úgy, ahogy van - 5 db.
- Defauitcoiwidth - szélessége az alapértelmezett oszlopokat.
- DefauitDrawing - alapértelmezett rajz. Ha ez be van állítva igaz, akkor a komponens megjeleníti a bevitt adatok is. Ha hamis, az kell tennie, hogy a saját, válaszul a szóban forgó eseményeket.
- DefauitcoiHeight - alapértelmezett magasságát sorok. Az itt beállított érték elég nagy, úgyhogy be egy 16. Tehát a rács jobban néznek ki, elegáns, legalábbis az én ízlésemnek.
- Fixedcoior - a színe a rögzített sorok és oszlopok. A fixált sejteket nem tud belépni a szöveget, használják őket, mint egy fejlécet. Ábra. 11.9 Az első oszlop és az első sor rögzített, és ezért jelenik színvezérlőkkel (az alapértelmezett szín).
- Fixedcois - száma rögzített oszlopok. Ezek mindig az első, nem lehet létrehozni egy fix oszlop a rács közepén. Bár talán ez csak idő kérdése, de meg kell írni a kódot magad.
- FixedRows - a vezetékes vonalak száma. Ezek mindig az első, akkor nem hoz létre egy vezetékes a rács közepén. Ez csak úgy valósítható meg magad.
- GridLinewidth - vastagsága a választóvonalak a rácsok.
- Options - mesh beállításokat. Ha duplán kattint a bal egérgombbal az ingatlan, vagy egyszer egy négyzet balra a tulajdonság nevét, majd kiderült, egy nagy lista további tulajdonságait.
Nézzük meg mindegyiket külön:
- goFixedVertLine - rajz függőleges rácsvonalak a rögzített sejtek;
- goFixedHorzLine - felhívni a rácsvonalaknál rögzített sejtek;
- govertLine - rajz függőleges rácsvonalak a nem rögzített sejtek;
- goHorzLine - felhívni a vízszintes rácsvonalak a nem rögzített sejtek;
- goRangeSeiect - lehetővé teszi, hogy válasszon ki több sejtek;
- goDrawFocuSeiected - hogy felhívja a figyelmet a kiválasztott cella;
- goRowSizing - hogy lehet-e változtatni a méretét a sorok az egérrel;
- goCoisizing - akár átméretezhető oszlopok az egérrel;
- goRowMoving - hogy lehet-e mozgatni a vonalon (ha igaz, akkor kattintson az egér gombját, helyezze azt egy mutató a vezetékes sejt, és húzza az új helyére);
- goCoiMoving - függetlenül attól, hogy lehet mozgatni az oszlop (ha igaz, akkor kattintson az egér gombját, helyezze azt a mutatót, hogy egy állandó sejt oszlopban, és húzza az új helyére);
- goEditing - vajon lehetséges-e, hogy adja meg az adatokat a billentyűzet egy rács (a mi példánkban létre true);
- goTabs - ha igaz, akkor lehet utazni a sejtek közötti gombokkal <ТаЬ> ;
- goRowseiect - ha van hamis, a kijelölt cella osztják csak (ha igaz, akkor a teljes szöveg);
- goAlwaysshowEditor - ha hamis, akkor, ha egy sejtben alkalmazva a szerkesztéshez meg kell nyomni
vagy . ha igaz, akkor amint a sejt elengedi, közvetlenül szerkeszthető; - goThumbTracking -, hogy vegye ki az adatokat, amíg a felhasználó mozgatja a görgetősáv.
- Rowcount - a sorok számát. Az első példa van elég öt.
- scrollBars- hogy megjelenjenek-e gördítősáv szükséges.
- ssNone - no show;
- ssHorizontal -csak vízszintes csík;
- ssVertical - csak a függőleges vonal.
Úgyhogy levelet első példa. Készítsen egy kezelőt az esemény Onshow alakja és írd oda a tartalomjegyzéket
eljárás TMainForm.FormShow (Sender: TObject);
Egy tárgy TStringGrid van egy másik tulajdonsága, amely nem szerepel az objektum ellenőr-sejteket. Ez a tulajdonság-dimenziós tömb sorainak tárolt adatok jelennek meg a rács. Ahhoz, hogy hozzáférjen a cella íródik StringGridl.Cells [oszlop száma, sejt szám].
VIGYÁZAT. A számozás a sorok és oszlopok nulla-alapú.
Például, ha azt szeretnénk, hogy jegyezze be a második oszlop, és a negyedik sorban a „Helló”, meg kell írni:
Ugyanígy lehet, és olvassa el a tartalmát a cella:
ha StringGridl.Cells [1,3] = 'Hello' majd csinálni [azokat az intézkedéseket].
Ábra. 11.10 akkor megjelenik egy ablak, amely egy példát mutat formájában elhanyagolás.
Nézzük erősíteni ezt a példát, és ugyanakkor mélyebben megismerjék a rács. Mint látható a példában az a terület, Born. Ebben a mezőben meg kell adni a dátumok és akkor meg kell
van egy bizonyos formátumban. Ez nagyon kényelmes, ha ezen a területen lehet állítani beviteli maszkot, de a rács nem támogatott. Itt használja hitrost-, amikor a felhasználó rákattint a kívánt mezőt, helyettesítő alkatrész TMaskEdit, és hagyja, hogy a felhasználó belép információt, hogy egy nagyon különleges formában.
Nézzük végrehajtja a fenti a gyakorlatban. Ehhez tegyük a forma TMaskEdit komponens (hely nem számít) és hívja meg DateEdit. Állítsa be a maszkot a dátum 99/99/9999. Most állítsd látható tulajdonság hamis, akkor a komponens nem látható.
Hozz létre egy eseményt, és onDrawCeii írni a tartalmát a lista:
eljárás TMainForm.StringGridlDrawCell (Sender: TObj ect; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
DateEdit.Visible: = false; // Do láthatatlan DateEdit alkatrész
if (gdFocused állami), akkor // ha az aktuális cella van a középpontban, akkor.
ha AcOI = L, akkor // ha húzott sejt az első oszlop, majd.
// Írjon DateEdit szöveg DateEdit.Text cellában: = StringGridl.Cells [AcOI, Arow]; // állítsa a bal oldali pozícióban
DateEdit.Left: = Rect.Left + StringGridl.Left + 2; // állítsa a felső helyzetbe
DateEdit.Top: = Rect.Top + StringGridl.top + 2; // A szélességet
DateEdit.Width: = Rect.Right - Rect.Left; // állítsa a magasságot
DateEdit.Height: = Rect.Bottom - Rect.Top; // Do DateEdit komponens látható
Ez a kezelő hívják, ha ez szükséges felhívni a néhány sejtben. Ha a teljes nettó készült, ez az úgynevezett külön-külön cellában. Delphi számunkra, hogy hozzon létre egy eljárás felvezető StringGridlDrawCell események a következő paraméterekkel:
feladó - egy mutató az objektum, amely generált az esemény;
- Arow és AcOI - sorszám és oszlop száma (koordináták) a cella, amely szükséges, hogy felhívja a;
- Rect- szerkezet, amely jelzi a relatív méretét és helyzetét a sejt.
Mit jelent a „relatív” szó? Téglalap szerkezete így néz ki:
írja TRect = rekord
Bal, Fel, Jobb, Bottom: integer; végén;
Mint látható, ez egy szerkezet négy parametrov- bal, felső, jobb és alsó pozícióban. Ábra. 11.11 nyíl mutatja azt a méretet, amely paraméterek balra és jobbra téglalap szerkezetét. A méreteket jelzett pixel. A paraméter jobb jelzi a távolságot a pixeleket a bal szélén a rács
a jobb szélén a sejt, és a bal és felső pozícióban a sejt
Alsó a távolság a felső széle a rács, hogy az alsó széle a cella. Azaz, megkapjuk a méretét kapcsolatban a háló is, és nem az egész űrlapot.
Nos, az utolsó paraméter lett átadva nekünk az eseménykezelő eljárás - állapot. Információkat tartalmaz az állam a sejt, amelyet meg kell levonni. Feltételek a következők lehetnek:
- gdseiected - cellát választunk;
- gdFocused - cella bemenet fókusza;
- gdFixed - sejt van rögzítve.
Ha az állam paraméter sem ezeket az értékeket, ez egy egyszerű sejt. Állami paraméter nyilvánították egy értékrend. Ez azt jelenti, hogy ezek közül valamelyiket szedi értékek, vagy ezek kombinációja. Annak ellenőrzésére, hogy valamit az állam székhelye, meg kell írni:
ha (az állami érték), akkor futtassa a cselekvés
Ez az, amit vizsgálnak, a második sorban a kód jelenléte értékek gdFocused. És csak akkor, ha a sejt, hogy kell készíteni, a hangsúly, a következő műveleteket végezzük.
De előtte Titkolod maszkos beviteli mezőbe, hogy ő lehetett látni egy másik cellába, és hogy nincsenek problémák, akkor jobb, hogy elrejtse.Ha a rajz egy sejt a középpontban, akkor ellenőrizze, hogy mit rajzol oszlop egy cellában. Ha ez az első oszlopban (ahol van, hogy adja meg a dátumot), megmutatjuk DateEdit helyett a cellát levonni. Ehhez először hozzá a szöveget DateEdit, ami kell egy adott cellában. Ezután állítsa be a helyzetét és méretét DateEdit komponens majd mutatni.
Mint látható, a folyamat nagyon egyszerű és elegáns. Most már csak meg kell hozzon létre egy eseménykezelő # 111; nA számára DateEdit komponens. Ez az esemény akkor történik, amikor az adat változik a beviteli sorban, és ez azt jelenti, hogy mi kell a jogot, hogy regisztrálja szerkeszthető rácscellában, különben elvész. Ez azért van, mert minden adat bekerül DateEdit, és nem a rács, és mozgassa őket, hogy kézzel kell:
eljárás TMainForm.DateEdi tChange (küldő: TObj ECT);
Ahhoz, hogy tovább erősíti a anyaga fejezet része, vessünk az utolsó oszlop megjelenése TSheskvoh összetevő, amely lehetővé teszi, hogy módosítsa az értéket a cella között „házas” és a „Single”. Ehhez az űrlap telepíteni kell a CheckBox komponenst és hogy láthatatlan. Ezután meg kell változtatni onDrawCeii esemény, amint a lista:
eljárás TMainForm.StringGridlDrawCell (Sender: TObj ECT; AcOI,
Arow: integer; Téglalap: TRect; Állam: TGridDrawState); kezdődik
if (gdFocused állami), akkor kezdődik, ha AcOI = l, akkor kezdődik
DateEdit.Left: = Rect.Left + StringGridl.Left + 2;
DateEdit.Top: = Rect.Top + StringGridl.top + 2;
DateEdit.Width: = Rect.Right - Rect.Left;
DateEdit.Height: = Rect.Bottom - Rect.Top;
ha AcOI = 4 akkor kezdődik
I f CheckBoxl.Caption = 'AO' majd CheckBoxl.Checked: = True
CheckBoxl.Left: = Rect.Left + StringGridl.Left + 2;
CheckBoxl.Top: = Rect.Top + StringGridl.top + 2;
CheckBoxl.Width: = Rect.Right - Rect.Left;
CheckBoxl.Height: = Rect.Bottom - Rect.Top;
És, persze, meg kell „elkapni” esemény # 111; nKattints CheckBox1 komponens írni a megváltoztatott érték vissza a hálózatba. Ebben a felvezető, írjon kódot hirdetések:
eljárás TMainForm.CheckBoxlClick (Sender: TObject);
ha CheckBoxl.Checked = true akkor CheckBoxl.Caption: = 'Married' else