Форум: "Основная";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
ВнизTDBCtrlGrid: поведение при загрузке из dll Найти похожие ветки
← →
CAMITHbIK © (2009-09-09 19:24) [0]Дельфи7, Windows XP pro SP2
Для выбора записей из базы данных с последующей возможностью выбора группы записей создаю форму, с компонентом TDBCtrlGrid. Для выбора записей использую TDBCheckBox.
Если нижеприведенный код скомпиллировать в DLL, то флажок отображается только для текущей записи датасета (проверял как с ранним, так и с поздним связыванием).
При компилляции в exe-шник флажок отображается для каждой записи.
Если создавать форму в режиме конструктора - результат такой-же.
Если кто-то сталкивался с подобным поведением компонент, укажите напрвление поиска.
unit uModalf;
interface
uses
Classes,
StdCtrls,
Forms,
ADODB, DB,
DBCGrids, DBCtrls;
type
TDBCtrlGridEx = class(TDBCtrlGrid)
published
property Panel;
end;
TModalf = class(TForm)
protected
c: TADOConnection;
q1: TADOQuery;
ds: TDataSource;
g: TDBCtrlGridEx;
ch: TDBCheckBox;
t1: TDBtext;
procedure FormKeyPreview(Sender: TObject; var Key: Char);
public
constructor CreateNew(AOwner: TComponent);
destructor Destroy;
end;
var
Modalf: TModalf;
function ShowModal__(cn:TADOConnection): Integer; stdcall;
implementation
var
c_:TADOConnection;
{ TModal }
constructor TModalf.CreateNew(AOwner: TComponent);
begin
inherited CreateNew(AOwner);
KeyPreview:=True;
OnKeyPress:=FormKeyPreview;
c:=c_;
q1:=TADOQuery.Create(Self);
q1.Connection:=c;
q1.CursorType:=ctDynamic;
q1.LockType:=ltOptimistic;
q1.ParamCheck:=false;
q1.Prepared:=True;
q1.SQL.Add("select fr2,nn2 from CL2 order by 2");
q1.Open;
ds:=TDataSource.Create(Self);
ds.DataSet:=q1;
g:=TDBCtrlGridEx.Create(Self);
g.Parent:=Self;
g.DataSource:=ds;
g.AllowDelete:=false; g.AllowInsert:=false;
g.SetBounds(1,1,200,200);
g.PanelWidth:=180; g.PanelHeight:=20; g.RowCount:=10;
ch:=TDBCheckBox.Create(Self);
ch.Parent:=g.Panel; ch.SetBounds(2,2,17,17);
ch.ValueChecked:="1"; ch.ValueUnchecked:="0";
ch.DataField:="fr2";
t1:=TDBText.Create(Self);
t1.Parent:=g.Panel; t1.SetBounds(20,2,160,17);
t1.AutoSize:=false; t1.Transparent:=true;
t1.DataField:="nn2";
width:=210; Height:=240; Position:=poScreenCenter;
end;
destructor TModalf.Destroy;
begin
q1.Close;
end;
procedure TModalf.FormKeyPreview(Sender: TObject; var Key: Char);
begin
if (Key = #27) then Close;
end;
function ShowModal__(cn:TADOConnection): Integer; stdcall;
begin
c_:=cn;
Modalf:=TModalf.CreateNew(nil);
c_:=nil;
with Modalf do
try
ShowModal;
finally
Free;
end;
end;
end.
← →
Сергей М. © (2009-09-10 11:18) [1]Формам не место в dll - их законное место в exe и bpl.
← →
имя (2009-09-14 09:52) [2]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c