|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Создание TTable во время запуска
Если не трудно подскажите пожалуйста как сделать следующее. Вот кусок кода, мне нужно закоментированные строки как-то прописать, но я не могу перевести из одного формата в другой... procedure TForm1.FormCreate(Sender: TObject); var T: TTabSheet; P: TPageControl; begin Info.Open; P := TPageControl.Create(application); with P do begin Parent := Form1; Name:='PageControl1'; MultiLine:=True; align:=alClient; OnChange:=PageControl1Change; end; While not Info.Eof do begin T := TTabSheet.Create(P); with T do begin Visible := True; Caption := '№ '+Info.FieldByName('NLine').AsString; PageControl := P; end; with TTable.Create(Self) do begin Name:='Table'+Info.FieldByName('Line').AsString; DatabaseName:='\\server\Common\COMNET\asorm'; TableName:='Line'+Info.FieldByName('Line').AsStrin g+'.dbf'; Parent :=Self; end; with TDataSource.Create(Self) do begin Name:='DataSource'+Info.FieldByName('Line').AsStri ng; //DataSet:='Table'+Info.FieldByName('Line').AsString ; Parent :=Self; end; with TDBGrid.Create(Self) do begin Name:='DBGrid'+Info.FieldByName('Line').AsString; //DataSource:='DataSource'+Info.FieldByName('Line'). AsString; align:=alClient; Parent :=T; end; Info.Next; end; P.ActivePage := P.Pages[1]; P.ActivePage := P.Pages[0]; end; Per aspera ad mortis |
#2
|
||||
|
||||
//DataSet:='Table'+Info.FieldByName('Line').AsString ;
//DataSource:='DataSource'+Info.FieldByName('Line'). AsString; DataSet и DataSource - это поля типа TDataSet и TDataSource соответственно. А ты пытаешься в эти поля строки записать… Последний раз редактировалось Decoding, 19.06.2007 в 11:57. |
#3
|
||||
|
||||
Это я показал для примера что мне нужно получить. Вопрос в том как это получить???? Per aspera ad mortis |
#4
|
||||
|
||||
тебе нужен объект, без этого никак. не создавай объект в конструкции with, т.е. он понадобится тебе в дальнейшем, а ссылки на созденный объект у тебя нет. Вместо этого делай по обычному, примерно так
Код:
procedure TForm1.Button1Click(Sender: TObject); var t: TTable; begin t := TTable.Create( self ); DataSource1.DataSet := t; end; это же относится и к DataSource |
#5
|
||||
|
||||
Decoding, если не трудно, можешь мой пример перевести на свой дал, а то я чего-то не догоняю немного просто первый раз сталкиваюсь с созданием компонента ( Per aspera ad mortis |
#6
|
||||
|
||||
Чтото типа этого
procedure TForm1.FormCreate(Sender: TObject); var T: TTabSheet; P: TPageControl; table: TTable; ds: TDataSource; grid: TDBGrid; begin Info.Open; P := TPageControl.Create(application); with P do begin Parent := Form1; Name:='PageControl1'; MultiLine:=True; align:=alClient; OnChange:=PageControl1Change; end; While not Info.Eof do begin T := TTabSheet.Create(P); with T do begin Visible := True; Caption := '¹ '+Info.FieldByName('NLine').AsString; PageControl := P; end; table := TTable.Create(Self); Name:='Table'+Info.FieldByName('Line').AsString; table.DatabaseName:='\\server\Common\COMNET\asorm' ; table.TableName:='Line'+Info.FieldByName('Line').A sString+'.dbf'; ds := TDataSource.Create(Self); ds.Name:='DataSource'+Info.FieldByName('Line').AsS tring; ds.DataSet:=table; grid := TDBGrid.Create(Self); grid.Name:='DBGrid'+Info.FieldByName('Line').AsStr ing; grid.DataSource:=ds; grid.align:=alClient; grid.Parent :=T; end; Info.Next; end; P.ActivePage := P.Pages[1]; P.ActivePage := P.Pages[0]; end; |