Желите направити најбољу мрежу за уређивање података икад? Испод су упуте за изградњу корисничког интерфејса за уређивање поља за претрагу Унутра ДБГрид. Конкретно, гледаћемо како смјестити ДБЛоокупЦомбоБок у ћелију ДБГрид-а.
Ово ће учинити позивање на информације из извора података који ће се користити за попуњавање падајућег оквира.
Да бисте приказали ДБЛоокупЦомбоБок унутар ћелије ДБГрид, прво морате да направите једну доступну у време извођења ...
Креирајте претрагу помоћу ДБЛоокупЦомбоБок-а
Изаберите страницу „Контроле података“ на палети компонената и одаберите ДБЛоокупЦомбоБок. Избаците га било где на обрасцу и оставите подразумевано име „ДБЛоокупЦомбоБок1.“ Није важно где га стављате јер већину времена биће невидљиво или ће лебдети изнад решетке.
Додајте још једну компоненту ДатаСоурце и ДатаСет да бисте „испунили“ комбинирани оквир вредностима. Избаците ТДатаСоурце (са именом ДатаСоурце2) и ТАдоКуери (дајте му име АдоКуери1) било где на обрасцу.
Да би ДБЛоокупЦомбоБок исправно радио, мора бити постављено још неколико својстава; они су кључ везе за проналажење:
- Извор података и ДатаФиелд одредити главну везу. ДатаФиелд је поље у које смо уметнули прегледане вредности.
- ЛистСоурце је извор података за претраживање.
- КеиФиелд идентификује поље у ЛистСоурце која мора да одговара вредности ДатаФиелд поље.
-
ЛистФиелдс је поље (а) скупа података претраживања која су заправо приказана у комбинацији. ЛистФиелд може приказати више поља, али вишеструки треба раздвојити зарезима.
Морате да поставите довољно велику вредност за ДропДовнВидтх (од ЦомбоБок-а) да бисте заиста видели више ступаца података.
Ево како да поставите сва важна својства из кода (у обрасцима ОнЦреате догађај руковатељ):
процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
Почни са ДБЛоокупЦомбоБок1 добегин
ДатаСоурце: = ДатаСоурце1; // -> АдоТабле1 -> ДБГрид1
ЛистСоурце: = ДатаСоурце2;
ДатаФиелд: = 'АуторЕмаил'; // фром АдоТабле1 - приказано у ДБГрид
КеиФиелд: = 'Емаил';
ЛистФиелдс: = 'Име; Емаил ';
Видљиво: = Лажно;
крај;
ДатаСоурце2.ДатаСет: = АдоКуери1;
АдоКуери1.Цоннецтион: = АдоЦоннецтион1;
АдоКуери1.СКЛ.Тект: = 'ОДАБИР Име, е-пошта од аутора';
АдоКуери1.Опен;
крај;
Белешка: Када желите да прикажете више од једног поља у ДБЛоокупЦомбоБок-у, као у горњем примеру, морате бити сигурни да су сви ступци видљиви. То се ради постављањем својства ДропДовнВидтх.
Међутим, видјет ћете да ћете у почетку морати ово поставити на врло велику вриједност што резултира тиме да је одбачена листа превише широка (у већини случајева). Једно решење је постављање ширине приказа одређеног поља приказаног у падајуће листе.
Овај код, смјештен у догађај ОнЦреате за образац, осигурава да се и име аутора и адреса е-поште приказују на падајућој листи:
АдоКуери1.ФиелдБиНаме ('Емаил'). Ширина екрана: = 10;
АдоКуери1.ФиелдБиНаме ('Име'). Ширина екрана: = 10;
АдоКуери1.ДропДовнВидтх: = 150;
Оно што нам преостаје је да стварно направимо комбиновани оквир да лебдите изнад ћелије (када сте у режиму за уређивање), приказујемо поље АуторЕмаил. Прво морамо бити сигурни да је ДБЛоокупЦомбоБок1 премјештен и величине преко ћелије у којој је приказано поље АутхорЕмаил.
процедура ТФорм1.ДБГрид1ДравЦолумнЦелл
(Пошиљалац: ТОбјецт;
цонст Рецт: ТРецт;
ДатаЦол: Интегер;
Колона: ТЦолумн;
Стање: ТГридДравСтате);
бегиниф (гдФоцусед ин Држава) затимбегиниф (Ступац. Поље. ФиелдНаме = ДБЛоокупЦомбоБок1.ДатаФиелд) тада ДБЛоокупЦомбоБок1 урадити
започети
Лево: = Рецт. Лево + ДБГрид1.Лефт + 2;
Врх: = Рект. Топ + ДБГрид1.Топ + 2;
Ширина: = Рект. Тачно - Рецт. Лево;
Ширина: = Рект. Тачно - Рецт. Лево;
Висина: = Рецт. Дно - Рект. Топ;
Видљиво: = Тачно;
крај;
крај
крај;
Затим, кад напустимо ћелију, морамо сакрити комбиновани оквир:
процедура ТФорм1.ДБГрид1ЦолЕкит (Пошиљалац: ТОбјецт);
бегиниф ДБГрид1.СелецтедФиелд. ФиелдНаме = ДБЛоокупЦомбоБок1.ДатаФиелд онда
ДБЛоокупЦомбоБок1.Висибле: = Нетачно
крај;
Имајте на уму да у режиму уређивања сви притисци на типку иду у ДБГрид ћелију, али морамо бити сигурни да су послати у ДБЛоокупЦомбоБок. У случају ДБЛоокупЦомбоБок-а, прије свега нас занима кључ [Таб]; требало би да помакне улазни фокус у следећу ћелију.
процедура ТФорм1.ДБГрид1КеиПресс (Пошиљалац: ТОбјецт; вар тастер: Цхар);
бегиниф (тастер = Цхр (9)) онда Излаз;
ако (ДБГрид1.СелецтедФиелд. ФиелдНаме = ДБЛоокупЦомбоБок1.ДатаФиелд) тхенбегин
ДБЛоокупЦомбоБок1.СетФоцус;
СендМессаге (ДБЛоокупЦомбоБок1.Хандле, ВМ_Цхар, реч (тастер), 0);
крај
крај;
Када изаберете ставку ("ред") из ДБЛоокупЦомбоБок-а, вредности или одговарајуће КеиФиелд поље се чува као вредност ДатаФиелд поље.