Sem semmi esetre sem tűnik ki egy kibaszott comboboxot a dbgridbe

Sem semmi esetre sem tűnik ki egy kibaszott ComboBoxot a DBGridbe

SEGÍTSÉG kérem, segítsen. Nem annyira lehetetlen a ComboBoxot beilleszteni a DBGridbe.
Megpróbálok beilleszteni a DBLookupcombobox-ot, és folyamatosan problémákba ütköznek, majd görgetéskor # xA0; A DBLookupcombobox nem tűnik el, akkor még akkor is, ha nem nehéz a forráskódot a szappanmintámmal eltávolítani: [email protected], ellenkező esetben le fogok lógni.

Nem könnyebb egy Lookup mezőt létrehozni?

akkor leírta volna, hogy a probléma több lehet, mint amilyennek látszik :)

A DBGrid minden egyes oszlopában van egy PickList. Töltse ki az OnShow programmal. De ne felejtsd el előzetesen tisztítani.

Küldtem neked egy példát a Lookup mezőkben.

Nem PickList nem illik bele
A feladat olyan, hogy a dbgride cellában egy legördülő lista kerül beillesztésre. Ha kiválaszt egy elemet a listából, hozzáadódik az értékhez

sejt.
Ie a cellában "Eng./Fr." válaszd a listából azt. kapunk "angol / francia / német". és karaktereket is be tudunk adni a cellába.
Megpróbáltam a LookUp mezőkkel, de nem értettem őket megfelelően, hogy megnézzük a YurikGl példáját. Köszönöm.

például vannak olyan országok, amelyekben több nyelven beszélnek, és egy cella egy, és három nyelvre van szüksége: "angol / francia / német". és ezeket a nyelveket a legördülő listából kell kiválasztani az angol nyelv elején. akkor Fr. akkor azt.
így a PickList nem pontosan illik

Nem értem. Pontosan ez a PickList pontosan illik. És ha az értékeket egy másik táblázatból kell venni, akkor keresse meg az adatkészlet mezőjét.
Vagy vegye TDBGridEh-et az EhLib könyvtárból - további funkciói vannak.

> Megpróbálom beilleszteni a DBLookupcomboboxot

Ne csináld ezt. Hozzon létre egy keresési mezőt. Bár egyes esetekben ez nem túl jó.

Véleményem szerint sok esetben a nyelvek számának sokféle logikai oszlopot kell létrehoznia. Ha az oszlop (pl. Francia) igaz, akkor ebben az országban franciául beszélnek.
fül országok
# xA0; # xA0; Név: string
# xA0; # xA0; Franz: logikai
# xA0; # xA0; Ő: logikai
# xA0; # xA0; Angol: logikai

A második lehetőség. Ha egy országban nem több, mint néhány (3-4) nyelvet beszél, akkor létrehoz egy nyelvtárat. Az országok táblázatában a szükséges linkek számát adja meg.

fül országok # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; Nyelvek
# xA0; # xA0; Név: string # xA0; # xA0; # xA0; # xA0; # xA0; IdLanguage: Integer
# xA0; # xA0; IdName1: Integer # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; Nyelv neve: string
# xA0; # xA0; IdYasy2: egész szám
# xA0; # xA0; IdYasy3: egész szám
# xA0; # xA0; IdYAzyk4: egész szám

Zacho
> Pontosan ez a PickList pontosan megfelel

de hogyan kell nyomon követni az eseményt, ha kiválasztunk egy értéket a PickList-ből, így nem változtatjuk meg a cellában szereplő értéket, hanem hozzáadjuk?

[9] És az MSSQL-ben ez nem működik

válasszon. ahol (IdЯзк1 = 15 vagy IdЯзк2 = 15 vagy IdЯЯкк3 = 15)
Válassza ki az összes olyan országot, amelyek a nyelvet beszélik. ID = 15

re [10] Ha a nyelvek maximális száma, amelyeken egy országban beszélhetünk, nem nagy, akkor az opció

fül országok # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; Nyelvek
# xA0; # xA0; Cím: karakterlánc # xA0; # xA0; # xA0; # xA0; # xA0; IdLanguage: Integer
# xA0; # xA0; IdName1: Integer # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; Nyelv neve: string
# xA0; # xA0; IdLanguage2: egész szám
# xA0; # xA0; IdLanguage3: egész szám
# xA0; # xA0; IdLanguage4: egész szám

Van egy másik lehetőség. Sok-sok kapcsolatot valósít meg

fül országok # xA0; # xA0; # xA0; # xA0; # xA0, a Nyelvek lapot # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; Csatlakozási táblázat
# xA0; # xA0; IdState: egész szám # xA0; # xA0; # xA0; # xA0; IdLanguage: egész szám # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; IdCommunications: egész szám
# xA0; # xA0; Cím: karakterlánc # xA0; # xA0; # xA0; Nyelv neve: string # xA0; # xA0; # xA0; IdLanguage: Integer
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; idState: egész szám

Ha az 5-ös országban a 6 nyelvet beszélik, akkor a Csatlakozási táblában rekord idLanguage = 6, id = 5.

de nehéz ilyen kérdéseket feltenni.

> de nehéz ilyen kérdéseket feltenni.
# xA0; A "kolbászhoz" hasonlóan [8] végül is nehezebb

> válassza ki. ahol (IdЯзк1 = 15 vagy IdЯзк2 = 15 vagy IdЯЯкк3 = 15)
# xA0; Már szóhasználatos és hosszú ideig fog játszani. És ez a legegyszerűbb kérdés. Ie csak az aranyér kezdete.

sajnálom, a legegyszerűbb a profik számára, persze :)

Sajnálom, [11] költözött.

fül országok
# xA0; IdState: egész szám
# xA0; Cím: karakterlánc
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0;
Nyelvek
# xA0; IdLanguage: egész szám
# xA0; Nyelv neve: string # xA0; # xA0; # xA0;

Táblázat Kapcsolatok
# xA0; IdCommunications: egész szám
# xA0; IdLanguage: egész szám
# xA0; idState: egész szám

újra [15]
Elvben, # xA0; IdLanguage: egész IdState: az egész egyedileg azonosítja a kapcsolatot, de néha célszerű egy "tiszta" rekord azonosítót használni elsődleges kulcsként.

Néha kényelmes. És néha csak eszik a helyet (mint ebben az esetben)

Táblázat Kapcsolatok
IdLanguage: Integer
idStount: egész szám

2Yurik és Peter. És Masha, egyébként gratulálok neki a nyaraláshoz, véleményem szerint nem az alapszerkezetről, hanem arról, hogy miként lehet az interfészt megvalósítani :) És az adatbázis normalizálódásáról Masha valószínűleg hallotta az egyetemi cho-ot)
2Masha. Masha, rendben van, ezek a változatok - nafik, ebben az esetben nem kérdezted.
De valójában minden egyszerű. Ebben az esetben egyszerűen ne használja a fejlesztési környezethez adott szabványt. Delphi száz év robil én nem, de abból, amit emlékszem, Megkockáztatom javasolni (akár elítélik nekem, de három nap gratulálni nők - ochch fáradt). Amennyire emlékszem, a DBGrid a Castom Grid örököse. A legegyszerűbb módja ebben az esetben az, hogy írjon egy kis add-on dbgrid - kifejezetten felülírják a getedittekst és setedittekst. Lásd a mezőt, érdekli, és het szöveg szerkesztése be egy combo box - vagyis meg neki a koordinátákat a sejt, láthatóvá téve, küldje CB_SHOWDROPDOWN (megkönnyítése fellépéseknek egyes elemek combo box, címke hozzárendelve a kapcsolódó nyelvi azonosító) és kiválasztásában sort ebből a combo doboz -))) a rekord nyelvi mezőjéhez hozzárendelheti a "Linkek" táblázat azonosítóját - erről írta a YurikGL :)
Ischo pridetsa smarite esemény a rács újratervezésével - ha ez az Ön többnyelvű mezője, akkor a Linking tábla rekordjának azonosítása helyett a NyelvNo1 / LanguageNo2 / nyelveket író országokkal. Afrikai.
Sobsno mindent, amit mondani akartam.
Bocsáss meg, ha Cavo megsértődik, de már hamarosan ((
Masha, az ünnepekre!

A kiegészítés [21]. Hozzáadhat egy ilyen nyelvet. Ez megjelenik az összes nyelv rácsos (már harmadik) listájában, és ha megnyomja a "hozzáadás" gombot, hozzáadódik a [21] -ben említett második gridhez tartozó adatkészlethez.

ZY Magyarázd el, véleményem szerint nem tudom, hogyan:

> ka3ax # xA0; (08.03.04 16:23) [20]
# xA0; Természetesen összecsukható, csak a csatlakozási azonosító még mindig a fülhöz vonzódik - a csatlakozási táblából mindent egyértelműen kihúzni az ország azonosítója :)
# xA0; Ne igyál sokat :)

# xA0; Masha, boldog ünnep!

Ha azonban az eredeti nyilatkozatban ezt megtenném (bár kezdetben egy listán a lista csúnya, de vannak különböző esetek)
1) A rács oszlopában.ButtonStyle = cbsEllipses
2) Ha megnyomja, egy funkciót hívnak, amely így működik

# xA0; funkció GetLng (). string;
# xA0; kezdődik
# xA0; # xA0; Eredmény: = "";
# xA0; # xA0; a TLngSrchForm.Create (Application) segítségével
# xA0; # xA0; próbáld ki
# xA0; # xA0; # xA0; ha (ShowModal = mrOK), akkor
# xA0; # xA0; # xA0; # xA0; Eredmény: = LangCode; // Ez a keresési forma # xA0;
# xA0; # xA0, végül
# xA0; # xA0; # xA0; Ingyenes ();
# xA0; # xA0; vége;
# xA0; vége;

TLngSrchForm -> Az a formanyomtatvány, amelyben a felhasználó választhatja ki a nyelvet. A kiválasztással kapcsolatban, akkor vtupuyu Grid-t is megírhatsz egy listán

3) Adja hozzá a mező értékéhez egy másik kódot és határolót (például;), vagyis "angol"; lett "angol;

4) Adja meg, hogy ha a felhasználó eltávolít 1 karaktert - a nudalyaet és minden a környező határolók között.

2Petr Abramov
:)
Rendben. Válassza ki az országazonosító bejegyzéseket.
ComboBox - a nyelv hozzáadásával kényelmesen használható, de hogyan törölhető?
Ebben az esetben a YurikGl változata jobb (véleményem szerint). A gomb az oszlopmezőkben történik, amikor rákattintasz - a formanyomtatványt egy rácshoz jelenítjük meg, amely a kiválasztott ország nyelvét tartalmazza.
Bár az oszlop oszlopaiban még egy gombot is hozzáadhat - ha rákattintasz, akkor a nyelvek listája leesik, amikor kiválaszt egy nyelvet, hozzáadjuk a megfelelő nyelvet az országhoz.

Memória: 0,79 MB
Időzítés: 0.102 mp