Nauja

Kaip pritaikyti DBNavigator

Kaip pritaikyti DBNavigator


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

"Gerai, DBNavigator atlieka savo darbą naršydamas duomenis ir tvarkydamas įrašus. Deja, mano klientai nori patogesnės vartotojui patirties, pavyzdžiui, pasirinktinių mygtukų grafikos ir antraščių ..."

Šį paklausimą pateikė „Delphi“ kūrėjas, ieškodamas būdo, kaip padidinti DBNavigator komponento galią.

„DBNavigator“ yra puikus komponentas - jame yra į vaizdajuostį panaši sąsaja, skirta naršyti duomenis ir tvarkyti įrašus duomenų bazės programose. Įrašų naršymą suteikia mygtukai „Pirmas“, „Kitas“, „Prieš“ ir „Paskutinis“. Įrašų tvarkymą teikia mygtukai Redaguoti, Paskelbti, Atšaukti, Ištrinti, Įterpti ir Atnaujinti. Viename komponente „Delphi“ teikia viską, ko reikia jūsų duomenims valdyti.

Tačiau, kaip teigė ir el. Pašto užklausos autorius, „DBNavigator“ trūksta kai kurių funkcijų, pavyzdžiui, pasirinktinių brėžinių, mygtukų antraščių ir kitų.

Galingesnis DBNavigatorius

Daugelis „Delphi“ komponentų turi naudingų savybių ir metodų, kurie „Delphi“ kūrėjui yra pažymėti nematomais („apsaugotais“). Tikimės, kad norint pasiekti tokius apsaugotus komponento narius, galima naudoti paprastą metodą, vadinamą „apsaugotu įsilaužimu“.

Pirmiausia pridėsite antraštę prie kiekvieno „DBNavigator“ mygtuko, tada pridėsite tinkintos grafikos ir galiausiai „OnMouseUp“ įgalinsite kiekvieną mygtuką.

Iš „nuobodaus“ DBNavigatoriaus į bet kurį iš šių:

  • Standartinė grafika ir pasirinktinės antraštės
  • Tik antraštės
  • Individualizuota grafika ir pasirinktos antraštės

Paleiskime '' ritinį

„DBNavigator“ turi apsaugotą mygtuką „Buttons“. Šis narys yra „TNavButton“, „TSpeedButton“ palikuonių, masyvas.

Kadangi kiekvienas šios saugomos nuosavybės mygtukas paveldimas iš „TSpeedButton“, jei suvoksite ranką, galėsite dirbti su „standartinėmis“ „TSpeedButton“ savybėmis, tokiomis kaip: Antraštė (eilutė, identifikuojanti vartotojo valdymą), Glyph ( mygtuko rodomas bitkoinas), išdėstymas (nustato, kur mygtuke rodomas vaizdas ar tekstas) ...

Iš „DBCtrls“ vieneto (kuriame apibrėžtas „DBNavigator“) jūs „perskaitėte“, kad saugomų mygtukų savybė yra deklaruojama kaip:

Mygtukai: masyvas„TNavigateBtn“ apie TNavButton;

Kai „TNavButton“ paveldi iš „TSpeedButton“, o „TNavigateBtn“ yra sąrašas, apibrėžtas kaip:

TNavigateBtn =
(„nbFirst“, „nbPrior“, „nbNext“, „nbLast“, „nbInsert“, „
nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);

Atminkite, kad „TNavigateBtn“ turi 10 verčių, kiekviena identifikuojanti skirtingą mygtuką TDBNavigator objekte. Dabar pažiūrėkime, kaip nulaužti DBNavigatorių:

Patobulintas DBNavigatorius

Pirmiausia nustatykite paprastą duomenų redagavimo „Delphi“ formą, įdėdami bent jau pasirinktą DBNavigator, DBGrid, DataSoure ir Dataset objektą (ADO, BDE, dbExpres ir tt). Įsitikinkite, kad visi komponentai yra „prijungti“.

Antra, nulaužkite DBNavigatorių, virš formos deklaracijos apibrėždami paveldėtą „manekeno“ klasę, kaip:

tipo THackDBNavigator = klasė(TDBNavigator);
tipo
TForm1 = klasė(TForm)

Toliau, kad galėtumėte rodyti tinkintas antraštes ir grafiką kiekviename „DBNavigator“ mygtuke, turėsite nustatyti keletą brėžinių. Galite naudoti „TImageList“ komponentą ir priskirti 10 paveikslėlių (.bmp arba .ico), kurių kiekvienas vaizduoja tam tikro DBNavigator mygtuko veiksmus.

Trečia, 1 formos „OnCreate“ renginyje pridėkite tokį skambutį:

procedūra TForm1.FormCreate (Siuntėjas: TObject);
„SetupHackedNavigator“ („DBNavigator1“, „ImageList1“);
pabaiga;

Nepamirškite pridėti šios procedūros deklaracijos į privačią formos deklaracijos dalį, pavyzdžiui:

tipo
TForm1 = klasė(TForm)

privatus procesas „SetupHackedNavigator“ (const Navigatorius: TDBNavigator;
const Glyphs: TImageList);

Ketvirta, pridėkite „SetupHackedNavigator“ procedūrą. Procedūra „SetupHackedNavigator“ prideda pasirinktinę grafiką prie kiekvieno mygtuko ir kiekvienam mygtukui priskiria pasirinktinę antraštę.

naudoja Sagos; // !!! nepamiršk
procedūra „TForm1.SetupHackedNavigator“
(const Navigatorius: TDBNavigator;
const Glyphs: TImageList);
const
Antraštės: masyvas„TNavigateBtn“ stygų =
(„Pradinis“, „Ankstesnis“, „Vėliau“, „Galutinis“, „Pridėti“,
'Ištrinti', 'teisingai', 'siųsti', 'atsiimti', 'atgaivinti');
(*
Antraštės: arrayTNavigateBtn iš string =
(„Pirmasis“, „Ankstesnis“, „Kitas“, „Paskutinis“, „Įterpti“,
'Ištrinti', 'Redaguoti', 'Skelbti', 'Atšaukti', 'Atnaujinti');

Kroatijoje (lokalizuota):
Antraštės: arrayTNavigateBtn iš string =
('Prvi', 'Prethodni', 'Slijedeci', 'Zadnji', 'Dodaj',
‘Obrisi’, ‘Promjeni’, ‘Spremi’, ‘Odustani’, ‘Osvjezi’);
*)
var
btn: TNavigateBtn;
pradėti btn: = žemas („TNavigateBtn“) į Aukštas („TNavigateBtn“) daryti su „THackDBNavigator“ („Navigator“) .Buttonsbtn dobeginas// iš „Captions“ const masyvo
Antraštė: = Captionsbtn;
// paveikslėlių skaičius nuosavybėje „Glyph“
„NumGlyphs“: = 1;
// Pašalinkite seną glifą.
Glifas: = nulis;
// Paskirkite pasirinktinį
„Glyphs.GetBitmap“ (sveikasis skaičius (btn), „Glyph“);
// gylph virš teksto
Išdėstymas: = blGlyphTop;
// paaiškinta vėliau
„OnMouseUp“: = „HackNavMouseUp“;
pabaiga;
pabaiga; (* „SetupHackedNavigator“ *)

Gerai, paaiškinkime. Jūs kartojate visus „DBNavigator“ mygtukus. Prisiminkite, kad kiekvienas mygtukas yra prieinamas iš saugomos mygtukų masyvo savybės, todėl reikia „THackDBNavigator“ klasės. Kadangi mygtukų masyvo tipas yra „TNavigateBtn“, pereikite iš „pirmojo“ (naudodamiesi funkcija „Žemas“) mygtuko į „paskutinį“ (naudodami „Aukšto“ funkciją). Kiekvienam mygtukui paprasčiausiai pašalinsite „seną“ grafiką, priskiriate naują (iš „Glyphs“ parametro), pridėsite antraštę iš „Captions“ masyvo ir pažymėsite glifo išdėstymą.

Atminkite, kad naudodami „VisibleButtons“ ypatybę galite valdyti, kuriuos mygtukus rodo DBNavigator (o ne nulaužtas). Kita nuosavybė, kurios numatytąją vertę galite pakeisti, yra „Užuominos“ - naudokite ją pateikdami pagalbos patarimus, kuriuos pasirinkote pasirinkdami individualų naršyklės mygtuką. Galite valdyti patarimų rodymą redaguodami nuosavybę „ShowHints“.

Viskas. Štai kodėl jūs pasirinkote Delphi!

Duok daugiau!

Kodėl čia reikia sustoti? Jūs žinote, kad kai paspausite mygtuką „nbNext“, dabartinė duomenų rinkinio padėtis bus perkelta į kitą įrašą. Ką daryti, jei norite perkelti, tarkime, 5 įrašus į priekį, jei vartotojas paspaudžia mygtuką CTRL, o paspaudžia mygtuką? O kaip su tuo?

„Standartiniame“ DBNavigatoryje nėra „OnMouseUp“ įvykio - tokio, kuriame yra „TShiftState“ „Shift“ parametras - tai leidžia išbandyti „Alt“, „Ctrl“ ir „Shift“ būsenas. „DBNavigator“ teikia „OnClick“ įvykį tik jums.

Tačiau „THackDBNavigator“ gali tiesiog atskleisti „OnMouseUp“ įvykį ir įgalindamas „pamatyti“ valdymo klavišų būseną ir net žymeklio padėtį virš konkretaus mygtuko spustelėjus!

„Ctrl“ + paspaudimas: = 5 eilutės į priekį

Norėdami parodyti „OnMouseUp“, tiesiog priskirkite pasirinktinę įvykių tvarkymo procedūrą prie „OnMouseUp“ įvykio, skirto nulaužto „DBNavigator“ mygtukui. Tiksliai tai jau padaryta naudojant „SetupHackedNavigator“ procedūrą:
„OnMouseUp“: = „HackNavMouseUp“;

Dabar „HackNavMouseUp“ procedūra gali atrodyti taip:

procedūra „TForm1.HackNavMouseUp“
(Siuntėjas: „TObject“; mygtukas: „TMouseButton“;
„Shift“: „TShiftState“; X, Y: sveikasis skaičius);
const „MoveBy“: sveikasis skaičius = 5;
pradžia NE (Siuntėjas yra „TNavButton“) tada Išeiti;
atvejis TNavButton (Siuntėjas) .Index apie
nbPrior:
jei („ssCtrl“ „Shift“) tada
TDBNavigator (TNavButton (Siuntėjas). Tėvas).
„DataSource.DataSet.MoveBy“ (-MoveBy);
nbNext:
jei („ssCtrl“ „Shift“) tada
TDBNavigator (TNavButton (Siuntėjas). Tėvas).
„DataSource.DataSet.MoveBy“ („MoveBy“);
pabaiga;
pabaiga; (* „HackNavMouseUp“ *)

Atminkite, kad privačią formos deklaracijos dalį (šalia „SetupHackedNavigator“ procedūros deklaracijos) turite pridėti „HackNavMouseUp“ procedūros parašą:

tipo
TForm1 = klasė(TForm)

privatus procesas „SetupHackedNavigator“ (const Navigatorius: TDBNavigator;
const Glyphs: TImageList);
procedūra „HackNavMouseUp“ (Siuntėjas: „TObject“; mygtukas: „TMouseButton“;
„Shift“: „TShiftState“; X, Y: sveikasis skaičius);

Gerai, paaiškinkime, dar kartą. Procedūra „HackNavMouseUp“ tvarko „OnMouseUp“ įvykį kiekvienam „DBNavigator“ mygtukui. Jei vartotojas laiko CTRL klavišą, o paspaudžia mygtuką „nbNext“, dabartinis susieto duomenų rinkinio įrašas yra perkeltas į „MoveBy“ (apibrėžtas kaip pastovus, kurio vertė yra 5) įrašus į priekį.

Ką? Per daug sudėtinga?

Taip. Nereikia jaustis dėl viso to, jei reikia tik patikrinti valdymo klavišų būseną, kai buvo spustelėtas mygtukas. Štai kaip tą patį padaryti „paprasto“ DBNavigatoriaus „eiliniame“ „OnClick“ įvykyje:

procedūra TForm1.DBNavigator1Click
(Siuntėjas: „TObject“; Mygtukas: „TNavigateBtn“);
funkcija „CtrlDown“: Boolean;
var
Valstybė: „TKeyboardState“;
prasideda
„GetKeyboardState“ (valstija);
Rezultatas: = ((„Statevk_Control Ir 128) 0);
pabaiga;
const „MoveBy“: sveikasis skaičius = 5;
pradinis pavyzdys Mygtukas apie
nbPrior:
jei „CtrlDown“ tada
DBNavigator1.DataSource.DataSet.MoveBy (-MoveBy);
nbNext:
jei „CtrlDown“ tada
DBNavigator1.DataSource.DataSet.MoveBy (MoveBy);
pabaiga; // atvejis
pabaiga; (* DBNavigator2Click *)

Viskas draugužiai

Ir galiausiai projektas yra padarytas. Arba galite tęsti toliau. Štai jums scenarijus / užduotis / idėja:

Tarkime, kad norite „nbFirst“, „nbPrevable“, „nbNext“ ir „nbLast“ mygtukus pakeisti tik vienu mygtuku. Norėdami rasti žymeklio vietą, kai mygtukas buvo paleistas, „HackNavMouseUp“ procedūros viduje galite naudoti parametrus X ir Y. Dabar prie šio vieno mygtuko („valdyti juos visus“) galite pridėti paveikslėlį, kuriame yra 4 sritys. Kiekviena sritis, tarkime, imituoja vieną iš jūsų keičiamų mygtukų ... ar turite tašką?


Žiūrėti video įrašą: Kaip pritaikyti, kad tiktų kuprinė - How to fit - Mystery Ranch (Lapkritis 2022).

Video, Sitemap-Video, Sitemap-Videos