Ново

Како прилагодити ДБНавигатор

Како прилагодити ДБНавигатор


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.

"У реду, ДБНавигатор ради свој посао навигације података и управљања записима. Нажалост, моји купци желе више корисничко искуство, попут графике и натписа прилагођених тастера, ..."

Ово је питање стигло од развојног програмера у Делпхију који је тражио начин да побољша снагу ДБНавигатор компоненте.

ДБНавигатор је одлична компонента - пружа сучеље слично ВЦР-у за навигацију података и управљање записима у апликацијама базе података. Навигација за снимање омогућена је типкама Први, Следећи, Претходни и Последњи. Управљање снимцима омогућавају тастери Едит, Пост, Цанцел, Делете, Убаци и Рефресх. У једној компоненти Делпхи пружа све што вам је потребно за рад на вашим подацима.

Међутим, како је и аутор упита за е-пошту такође изјавио, ДБНавигатор нема неке функције попут прилагођених глифова, натписа дугмета и других.

Снажнији ДБНавигатор

Многе Делпхи компоненте имају корисна својства и методе које су за Делф програмере означене невидљивим („заштићеним“). Надамо се да се за приступ таквим заштићеним члановима компоненте може користити једноставна техника која се зове „заштићени хацк“.

Прво ћете додати натпис на свако дугме ДБНавигатор, затим ћете додати прилагођену графику и на крају, свако дугме омогућите ОнМоусеУп.

Од "досадног" ДБНавигатора до било којег од:

  • Стандардна графика и натписи по мери
  • Само натписи
  • Прилагођена графика и натписи

Хајде да се роцк 'н' ролл

ДБНавигатор има својство заштићених гумба. Овај члан је низ ТНавБуттон-а, потомка ТСпеедБуттона.

Будући да свако дугме у овом заштићеном својству наслеђује од ТСпеедБуттон-а, ако га примимо, моћи ћете да радите са "стандардним" својствима ТСпеедБуттон-а као што су: Цаптион (низ који кориснику идентификује контролу), Глипх ( битмап који се појављује на тастеру), Изглед (одређује где се слика или текст појављује на дугмету)…

Из јединице ДБЦтрлс (гдје је дефиниран ДБНавигатор) "читате" да је својство заштићених гумба декларирано као:

Тастери: низТНавигатеБтн од ТНавБуттон;

Тамо где ТНавБуттон наслеђује од ТСпеедБуттон, а ТНавигатеБтн је набрајање, дефинисано као:

ТНавигатеБтн =
(нбФирст, нбПриор, нбНект, нбЛаст, нбИнсерт,
нбДелете, нбЕдит, нбПост, нбЦанцел, нбРефресх);

Имајте на уму да ТНавигатеБтн садржи 10 вредности, а свака идентификује различито дугме на ТДБНавигатор објекту. Сада, да видимо како хаковати ДБНавигатор:

Побољшани ДБНавигатор

Прво поставите једноставан Делпхи образац за уређивање података тако што ћете ставити најмање ДБНавигатор, ДБГрид, ДатаСоуре и објект скупа података по вашем избору (АДО, БДЕ, дбЕкпрес,…). Проверите да ли су све компоненте "повезане".

Друго, хакирајте ДБНавигатор дефинисањем наслеђене класе „лутке“, изнад декларације обрасца, као:

тип ТХацкДБНавигатор = класа(ТДБНавигатор);
тип
ТФорм1 = класа(ТФорм)

Затим, да бисте могли да прикажете прилагођене наслове и графике на сваком тастеру ДБНавигатор, морат ћете поставити неколико глифова. Можете користити компоненту ТИмагеЛист и доделити 10 слика (.бмп или .ицо), од којих свака представља радњу одређеног дугмета ДБНавигатор.

Треће, у догађај ОнЦреате за Форм1 додајте позив попут:

поступак ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
СетупХацкедНавигатор (ДБНавигатор1, ИмагеЛист1);
крај;

Обавезно додајте изјаву овог поступка у приватни део декларације на обрасцу, као што је:

тип
ТФорм1 = класа(ТФорм)

приватни поступак СетупХацкедНавигатор (цонст Навигатор: ТДБНавигатор;
цонст Глифи: ТИмагеЛист);

Четврто, додајте поступак СетупХацкедНавигатор. Поступак СетупХацкедНавигатор додаје прилагођену графику сваком тастеру и додељује прилагођени наслов сваком тастеру.

користи Дугмад; // !!! не заборави
поступак ТФорм1.СетупХацкедНавигатор
(цонст Навигатор: ТДБНавигатор;
цонст Глифи: ТИмагеЛист);
цонст
Наслови: низТНавигатеБтн оф стринг =
("Почетно", "Претходно", "Касније", "Завршно", "Додај",
'Обриши', 'Исправно', 'Пошаљи', 'Повуци', 'Оживи');
(*
Натписи: арраиТНавигатеБтн оф стринг =
(„Прво“, „Претходно“, „Следеће“, „Последње“, „Убаци“,
'Делете', 'Едит', 'Пост', 'Цанцел', 'Рефресх');

у Хрватској (локализовано):
Натписи: арраиТНавигатеБтн оф стринг =
('Први', 'Претходни', 'Слиједеци', 'Задњи', 'Додај',
'Обриси', 'Промјени', 'Спреми', 'Одустани', 'Освјези');
*)
вар
бтн: ТНавигатеБтн;
бегинфор бтн: = ниска (ТНавигатеБтн) до Висока (ТНавигатеБтн) радим са ТХацкДБНавигатор (Навигатор) .Буттонсбтн добегин// из низа Цаптионс цонст
Натпис: = Цаптионсбтн;
// број слика у својству Глипх
НумГлипхс: = 1;
// Уклоните стари глиф.
Глипх: = нула;
// Доделите прилагођени
Глипхс.ГетБитмап (Интегер (бтн), Глипх);
// гилпх изнад текста
Изглед: = блГлипхТоп;
// објашњено касније
ОнМоусеУп: = ХацкНавМоусеУп;
крај;
крај; (* СетупХацкедНавигатор *)

Ок, објаснимо. Поновите све гумбе у ДБНавигатору. Подсјетимо да је свако дугме доступно из својства заштићеног низа Буттонс-а, стога је потреба за класом ТХацкДБНавигатор. Пошто је тип матрице типа ТНавигатеБтн, прелазите са "првог" (помоћу функције Лов) на "последњег" (користећи функцију Хигх). За свако дугме једноставно уклоните "стари" глиф, доделите му нови (из параметра Глипхс), додате натпис из архиве Цаптионс и обележите распоред глифа.

Имајте на уму да можете контролисати које тастере приказује ДБНавигатор (а не хакирани) преко свог својства ВисиблеБуттонс. Још једна особина чију ћете задану вредност можда желети да промените је Савјети - користите је да дате савете за помоћ по избору за појединачно дугме навигатора. Приказ савета можете контролисати уређивањем својства СховХинтс.

То је то. Због тога сте одабрали Делфи!

Дај ми још!

Зашто се зауставити овде? Знате да када кликнете на дугме 'нбНект' тренутни положај скупа података прелази на следећи запис. Шта ако желите да пређемо, рецимо, 5 записа унапред ако корисник држи тастер ЦТРЛ док притисне дугме? Како би било да?

"Стандардни" ДБНавигатор нема догађај ОнМоусеУп - онај који носи Схифт параметар ТСхифтСтате - омогућава вам тестирање стања тастера Алт, Цтрл и Схифт. ДБНавигатор пружа само ОнЦлицк догађај који можете руковати.

Међутим, ТХацкДБНавигатор може једноставно изложити догађај ОнМоусеУп и омогућити вам да „видите“ стање контролних тастера и чак положај курсора изнад одређеног дугмета када се кликне!

Цтрл + клик: = 5 редова унапред

Да бисте открили ОнМоусеУп, једноставно доделите свој прилагођени поступак руковања догађајем ОнМоусеУп догађајем за дугме хакованог ДБНавигатора. Тачно је то већ урађено у процедури СетупХацкедНавигатор:
ОнМоусеУп: = ХацкНавМоусеУп;

Сада би поступак ХацкНавМоусеУп могао да изгледа:

поступак ТФорм1.ХацкНавМоусеУп
(Пошиљалац: ТОбјецт; Дугме: ТМоусеБуттон;
Схифт: ТСхифтСтате; Кс, И: Интегер);
цонст МовеБи: интегер = 5;
бегиниф НЕ (Пошиљалац је ТНавБуттон) онда Излаз;
случај ТНавБуттон (пошиљалац) .Индек од
нбПриор:
ако (ссЦтрл у Схифт) онда
ТДБНавигатор (ТНавБуттон (пошиљалац) .Парент).
ДатаСоурце.ДатаСет.МовеБи (-МовеБи);
нбНект:
ако (ссЦтрл у Схифт) онда
ТДБНавигатор (ТНавБуттон (пошиљалац) .Парент).
ДатаСоурце.ДатаСет.МовеБи (МовеБи);
крај;
крај; (* ХацкНавМоусеУп *)

Имајте на уму да морате да додате потпис ХацкНавМоусеУп процедуре унутар приватног дела декларације обрасца (близу декларације поступка СетупХацкедНавигатор):

тип
ТФорм1 = класа(ТФорм)

приватни поступак СетупХацкедНавигатор (цонст Навигатор: ТДБНавигатор;
цонст Глифи: ТИмагеЛист);
поступак ХацкНавМоусеУп (Пошиљалац: ТОбјецт; Дугме: ТМоусеБуттон;
Схифт: ТСхифтСтате; Кс, И: Интегер);

Ок, да објаснимо, још једном. Процедура ХацкНавМоусеУп руководи догађајем ОнМоусеУп за свако дугме ДБНавигатор. Ако корисник држи ЦТРЛ тастер док кликне дугме нбНект, тренутни запис за повезани скуп података премешта се "МовеБи" (дефинисан као константа са вриједношћу од 5) испред.

Шта? Прекомпликовано?

Да. Не морате се забрљати са свим тим ако требате само да проверите стање контролних тастера када сте кликнули на дугме. Ево како то учинити у „обичном“ ОнЦлицк догађају „обичног“ ДБНавигатор:

поступак ТФорм1.ДБНавигатор1Цлицк
(Пошиљалац: ТОбјецт; Дугме: ТНавигатеБтн);
функција ЦтрлДовн: Боолеан;
вар
Држава: ТКеибоардСтате;
започети
ГетКеибоардСтате (Стате);
Резултат: = ((Статевк_Цонтрол Анд 128) 0);
крај;
цонст МовеБи: интегер = 5;
почетна Дугме од
нбПриор:
ако ЦтрлДовн онда
ДБНавигатор1.ДатаСоурце.ДатаСет.МовеБи (-МовеБи);
нбНект:
ако ЦтрлДовн онда
ДБНавигатор1.ДатаСоурце.ДатаСет.МовеБи (МовеБи);
крај; // случај
крај; (* ДБНавигатор2Цлицк *)

То је све народе

И на крају, пројекат је завршен. Или можете наставити даље. Ево сценарија / задатка / идеје за вас:

Рецимо да желите да само једно дугме замени тастере нбФирст, нбПревиоус, нбНект и нбЛаст. Можете користити Кс и И параметре унутар ХацкНавМоусеУп поступка да бисте пронашли положај курсора када се дугме отпусти. На ово једно дугме („да им свима управљам“) можете приложити слику која има 4 подручја, а свако подручје треба да опонаша један од тастера које замењујете… имате смисла?


Погледајте видео: Kako napisati CV i prilagoditi ga poziciji na koju konkurišemo - Saveti za pronalaženje posla 2019 (Децембар 2022).

Video, Sitemap-Video, Sitemap-Videos