Page 1 of 1

MyDac components - Runtime Creating

Posted: Sun 20 Jan 2008 23:18
by AlexMik
Could you help me to solve the following problem:

I need to create in RunTime mode the following components:
- TMyDataSource;
- TMyQuery.
They will be used to create several Grids:

Code: Select all

procedure TFRM_Work_Shedule.FormCreate(Sender: TObject);
Var TableClass, SourceClass, QueryClass: TControlClass;
    Work_Shedule_Table, Work_Shedule_DataSource, Work_Shedule_Query: TControl;
  ... 
begin
  ...
        TableClass:=TControlClass(TDBGridEh);
        SourceClass:=TControlClass(TMyDataSource);
        QueryClass:=TControlClass(TMyQuery);

        Work_Shedule_Table:=TableClass.Create(WorkShedule_Doctors_SBox);
        Work_Shedule_Table.Parent:=WorkShedule_Doctors_SBox;

        Work_Shedule_DataSource:=SourceClass.Create(WorkShedule_Doctors_SBox);
        Work_Shedule_Query:=QueryClass.Create(WorkShedule_Doctors_SBox);

        TMyDataSource(Work_Shedule_DataSource).DataSet:=TMyQuery(Work_Shedule_Query);
        TDBGridEh(Work_Shedule_Table).DataSource:=TMyDataSource(Work_Shedule_DataSource);

           TDBGridEh(Work_Shedule_Table).TitleLines:=2;
           TDBGridEh(Work_Shedule_Table).Flat:=true;
           TDBGridEh(Work_Shedule_Table).Height:=WorkShedule_Doctors_SBox.Height;
           TDBGridEh(Work_Shedule_Table).Width:=150;
           TDBGridEh(Work_Shedule_Table).Left:=0;
           TDBGridEh(Work_Shedule_Table).AutoFitColWidths:=true;

           TMyQuery(Work_Shedule_Query).SQL.Clear;
           TMyQuery(Work_Shedule_Query).SQL.Add('SELECT * FROM WorkShedule');
           TMyQuery(Work_Shedule_Query).Open;


           TDBGridEh(Work_Shedule_Table).Name:='Table'+IntToStr(i);
           TMyDataSource(Work_Shedule_DataSource).Name:='DSource'+IntToStr(i);
           TMyQuery(Work_Shedule_Query).Name:='Query'+IntToStr(i);
        end;

end;
There appears an error: 'Connection is not defined'

If I use TMyDataSource and TMyQuery components in DesignTime mode everything works perfectly.

Thank you for your help.

Posted: Mon 21 Jan 2008 08:29
by swierzbicki
Hi,

You should fill the TMyQuery.Connection property with the corresponding TMyConnection component (located at TFRM_Work_Shedule form ?) or create a TMyConnection component at runtime and fill the TMyQuery.Connection property with this created TMyConnection component.

Posted: Tue 22 Jan 2008 10:48
by AlexMik
swierzbicki wrote:Hi,
create a TMyConnection component at runtime and fill the TMyQuery.Connection property with this created TMyConnection component.
A-h-h-h... How I could pass filling of this parameter??? :shock:
Thank you!