Ако развијате апликације базе података са табелама које садрже МЕМО поља, приметићете да, подразумевано, компонента ТДБГрид не приказује садржај поља МЕМО унутар ДБГрид ћелије.
Овај чланак пружа идеју како да се реши проблем ТМемоФиелд (уз још неколико трикова) ...
ТМемоФиелд
Мемо поља се користе за представљање дугог текста или комбинације текста и бројева. Приликом израде апликација базе података помоћу Делпхија, ТМемоФиелд објект се користи за представљање мемо поља у скупу података. ТМемоФиелд капсулира основно понашање уобичајено за поља која садрже текстуалне податке или произвољне дужине. У већини база података величина Мемо поља је ограничена величином базе података.
Иако можете да прикажете садржај поља МЕМО у компоненти ТДБМемо, дизајнирањем ТДБГрид ће приказати само „(Мемо)“ за садржај таквих поља.
Да бисте стварно приказали неки текст (из поља МЕМО) у одговарајућој ћелији ДБГрид, морат ћете само додати једноставну линију кода ...
У сврху наредне расправе, рецимо да имате табелу базе података под називом "ТестТабле" са најмање једним пољем МЕМО под називом "Подаци".
ОнГетТект
Да бисте приказали садржај поља МЕМО у ДБГриду, требате приложити једноставну линију кода у пољу поља ОнГетТект догађај. Најлакши начин за креирање алата за обраду догађаја ОнГетТект је коришћење уређивача поља у време дизајна за креирање упорне компоненте поља за мемо поље:
- Повежите ТДатасет потомку компоненту (ТТабле, ТКуери, ТАДОТабле, ТАДОКуери ...) у табелу базе података "ТестТабле".
- Двапут кликните компоненту скупа података да бисте отворили уређивач поља
- Додајте поље МЕМО на листу упорних поља
- Изаберите поље МЕМО у уређивачу поља
- Активирајте картицу Догађаји у Објецт Инспецтор
- Двапут кликните на догађај ОнГетТект да бисте креирали руководилац догађаја
Додајте следећу линију кода (курзив је наведен у наставку):
процедура ТФорм1.ДБТаблеДатаГетТект (
Пошиљалац: ТФиелд;
вар Текст: Стринг;
ДисплаиТект: Боолеан);
започети
Текст: = Копирај (ДБТаблеДата). АсСтринг, 1, 50);
Напомена: објект скупа података назива се "ДБТабле", поље МЕМО се назива "ДАТА", и према томе се ТМемоФиелд повезано с пољем базе података МЕМО назива "ДБТаблеДата". Додјељивањем ДБТаблеДата. АсСтринг до Текст параметром догађаја ОнГетТект, кажемо Делпхију да прикаже СВЕ текст из поља МЕМО у ДБГрид ћелији.
Можете такође прилагодите ширину екрана поља напомена до одговарајуће вредности.
Напомена: пошто МЕМО поља могу бити прилично ВЕЛИКА, добра је идеја приказати само део ње. У горњем коду приказано је само првих 50 знакова.
Уређивање на засебном обрасцу
Подразумевано, ТДБГрид не дозвољава уређивање МЕМО поља. Ако желите да омогућите уређивање „на месту“, можете додати неки код који ће реаговати на корисничку радњу која приказује засебан прозор који омогућава уређивање помоћу ТМемо компоненте.
Ради једноставности отворићемо прозор за уређивање када се ЕНТЕР притисне "на" МЕМО пољу у ДБГриду.
Користимо КеиДовн догађај ДБГрид компоненте:
процедура ТФорм1.ДБГрид1КеиДовн (
Пошиљалац: ТОбјецт;
вар Кеи: Ворд;
Схифт: ТСхифтСтате);
започети
ако је Кеи = ВК_РЕТУРН онда
започети
ако је ДБГрид1.СелецтедФиелд = ДБТаблеДата
са ТМемоЕдиторФорм. Креирајте (нил) урадите
покушати
ДБМемоЕдитор. Текст: = ДБТаблеДата. АсСтринг;
СховМодал;
ДБТабле. Уредити;
ДБТаблеДата. АсСтринг: = ДБМемоЕдитор. Текст;
напокон
Бесплатно;
крај;
крај;
крај;
Напомена 1: "ТМемоЕдиторФорм" је секундарни облик који садржи само једну компоненту: "ДБМемоЕдитор" (ТМемо).
Напомена 2: „ТМемоЕдиторФорм“ је уклоњен са листе „Ауто-цреате форм“ у дијалошком прозору Оптионс Оптионс.
Погледајмо шта се догађа у ДБГрид1-овом КеиДовн руковатељу догађаја:
- Када корисник притисне тастер ЕНТЕР (упоређујемо параметар Кеи са ВК_РЕТУРН код виртуалног кључа) [Кеи = ВК_РЕТУРН],
- Ако је тренутно изабрано поље у ДБГриду наше МЕМО поље (ДБГрид1.СелецтедФиелд = ДБТаблеДата),
- Стварамо ТМемоЕдиторФорм [ТМемоЕдиторФорм. Креирај (нил)],
- Вриједност поља МЕМО пошаљите ТМемо компоненти [ДБМемоЕдитор. Текст: = ДБТаблеДата. АсСтринг],
- Приказати образац модално [СховМодал],
- Када корисник заврши уређивањем и затвара образац, потребно је да датастест стави у режим уређивања [ДБТабле. Уредити],
- Да бисте могли додијелити уређену вриједност натраг нашем МЕМО пољу [ДБТаблеДата. АсСтринг: = ДБМемоЕдитор. Текст].
Напомена: Ако тражите више чланака и савета за употребу повезаних са ТДБГрид-ом, обавезно посетите: "ТДБГрид на МАКС"колекција савета.