Создаем новую форму :
File -> New -> Form -> Simple Form ->
На запрос имени файла - вводим "countrieseditform" и подтверждаем -> автоматически создается форма :
"countrieseditfo"
procedure tcountrieseditfo.countrieseditfocreated(
const sender: TObject);
begin
application.createdatamodule(trefsdatamo, refsdatamo);
commonrefseditfo1.dsContents.dataset := grdcountries.datasource.dataset;
end;
procedure tcountrieseditfo.countrieseditfodestroyed(
const sender: TObject);
begin
refsdatamo.free;
end;
Не забудем включить в "uses" секцию "implementation" файла "countrieseditform.pas" модуль "refsdatamodule" :
implementation
uses
countrieseditform_mfm,
// предоставляет тип "trefsdatamo" и объект "refsdatamo"
refsdatamodule
;
Переключаемся на отображение формы "refsdatamo" и выбираем "qryCountries" :
Вновь возращаемся на форму "countrieseditfo" ( выбрав файл "countrieseditform.pas", и далее, если необходимо - нажав "F12" ).
Щелкнув на форме правой кнопкой, открыть меню, и, командой "Insert submodule" - вставить в форму субмодуль "commonrefseditform" . При необходимости - подогнать размер, чтобы исчезли полосы прокрутки.
Уронить на "countrieseditfo" компонент DB -> tdbwidgetgrid, и установить для него место и размер как у "planetseditfo -> grdPlanets" :
name := grdCountries
procedure tcountrieseditfo.grdcountriesupdaterowdata(
const sender: tcustomgrid;
const arow: Integer; const adataset: TDataSet);
begin
case adataset.updatestatus of
usInserted: sender.rowcolorstate[arow]:= 0;
usModified: sender.rowcolorstate[arow]:= 1;
else
sender.rowcolorstate[arow]:= 255;
end;
end;
и не забудьте добавить нужные "unit" -ы в секцию "interface -> uses" :
interface
uses
msegui,mseclasses,mseforms,commonrefseditform,msedbedit,
msegrids,
db
;
Теперь создадим и опишем столбцы "grdCountries", подлежащие просмотру и редактированию.
Уронить на "grdCountries" компонент DB -> tdbstringedit :
name:= seCountry
Настроить появившийся столбец таблицы
grdCountries :
Уронить на "grdCountries" компонент DB -> tdbenumeditlb :
name:= lbneContinent
Примечания :
- здесь также, как и в редакторе континентов, для отображения данных из 2-х таблиц - используется пара "tdblookupbuffer + tdbenumeditlb":
Настроить появившийся столбец таблицы
grdCountries :
Осталось сделать вызов "countrieseditfo" через главное меню программы.
Переключиться на дизайн "mainfo" ( файл "main.pas" ).
Уронить в любом незарисованном месте "mainfo" компонент "GUI -> taction" :
Name:= actCountriesEdit
procedure tmainfo.countrieseditexecute(const sender: TObject);
begin
try
application.createform(tcountrieseditfo, countrieseditfo);
if countrieseditfo.show(true) = mr_windowclosed then begin
qryPersons.active:= true;
end;
finally
countrieseditfo.free;
end;
end;Не забудьте добавить ссылку на файл "countrieseditform" в секцию "interface" файла "main.pas" :
interface
uses
msegui,mseclasses,mseforms,msepqconnection,msesqldb,msedb,
msedbedit,mseactions,msesimplewidgets,msemenus,db,msegrids,
planetseditform,
continentseditform,
countrieseditform
;
Настроить вызов "actCountriesEdit" из основного меню формы приложения ( mainfo ):
mnuMain :
Финальный вид формы редактора списка стран :
в дизайне :
и во время работы программы:
Данный ( страны -> countrieseditform ) справочник - почти полный аналог вышерассмотренного справочника континетов.