![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здрасте. У меня такая беда: не знаю, как сделать так, что бы при добавлении строки из таблицы 1 строке присваился номер 1, добавляю из другой таблицы значение 1.1, из второй же таблицы 1.2, из третьей таблицы 1.1.1, 1.2.1...т.е. пунты и подпункты нужно формировать. как это сделать можно? вставляю в дбгрид, значения другого дб грида
|
#2
|
||||
|
||||
![]() Я из этой абракадабры ничего не понял.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() есть 3 таблицы: а,б и ц.
вставляем одно значение из таблицы а. получаем пункт а. вставляем одно значение из таблицы б. получаем подпункт б. т.е. а.б. из третьей таблицы вставляется 2 значения, имеем: а.б.ц.ц. |
#4
|
||||
|
||||
![]() Вместо DBGrid используйте для наполнения StringGrid, тогда в завершении забивки можно будет пробежаться по полям и произвести автонумерацию на ваших условиях и без последствий для содержимого таблиц
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
![]() Цитата:
таблица в итоге может быть очень большой и нужно автоматически и при помощи именно дб грида |
#6
|
||||
|
||||
![]() DBGrid является средством визуализации содержимого полей таблицы\результата SQL-запроса, при изменении содержимого ячеек меняется и значение в источнике, что не всегда айс
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
![]() получается, что я эту таблицу потом вывожу в ворд, как отчет, здесь это как-то задать можно?
процедура вывода: Код:
procedure TForm1.N2Click(Sender: TObject); const//зазадается рапределение данных на листе wdAlignParagraphCenter = 1; wdAlignParagraphLeft = 0; wdAlignParagraphRight = 2; wdLineStyleSingle = 1; var sd: TSaveDialog; wdApp, wdDoc, wdRng, wdTable : OLEVariant; i, j, Res : Integer; D : TDateTime; Bm : TBookMark; begin Sd := SaveDialog1; {Сохранение таблицы в документ, запрос разрешения для сохранения} if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) ); if not Sd.Execute then Exit; if FileExists(Sd.FileName) then begin Res := MessageBox(0, Файл с данным именем уже существует. Перазаписать?' , Внимание! ', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL); if Res <> IDYES then Exit; end; // запуск MS Word. try wdApp:=CreateOleObject('word.Application') ; except MessageBox(0, ' Не удалось запустить MS Word. Действие отменено..' ,’внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL); Exit; end; //окно MS Word. видимо. wdApp.Visible := True; //создание нового документа. wdDoc := wdApp.Documents.Add; wdApp.ScreenUpdating := False; try wdRng := wdDoc.Content; // Диапазон, охватывающий всё содержимое документа. //Заголовок отчета wdRng.InsertAfter(План финансово-хозяйственной деятльености' '#13#10); //выравнивание по центру wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter; //параметры шрифта. wdRng.Font.Name := 'Times New Roman'; wdRng.Font.Bold := True; wdRng.Font.Size := 12; //диапазон нового параграфа непосредственно за текущим диапазоном. wdRng.Start := wdRng.End; wdRng.InsertAfter(#13#10); D := Now; wdRng.InsertAfter('дата: ' + FormatDateTime('dd.mm.yyyy', D) + #13#10); wdRng.InsertAfter('время: ' + FormatDateTime('hh:nn:ss', D) + #13#10); // Сброс параметров параграфа. wdRng.ParagraphFormat.Reset; wdRng.InsertAfter('утверждаю '+ #13#10 ); wdRng.InsertAfter('главный бухгалтер' + #13#10); wdRng.InsertAfter('Начальник преприятия + #13#10); wdRng.ParagraphFormat.Alignment := wdAlignParagraphRight; wdRng.ParagraphFormat.Reset; //выравнивание по левому краю. wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft; // Параметры шрифта. wdRng.Font.Reset; wdRng.Font.Size := 12; wdRng.Font.Bold := True; // Заголовок таблицы. wdRng.Start := wdRng.End; wdRng.InsertAfter(('Таблица '#13#10); wdRng.ParagraphFormat.Reset; wdRng.Font.Reset; wdRng.Font.Size := 12; wdRng.Font.Bold := False; // Таблица. if not ADOTable1.Active then ADOTable1.Open; wdRng.Start := wdRng.End; // Добавляем таблицу MS Word. создаём таблицу с двумя строками. wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, ADOTable1.Fields.Count); // Параметры линий таблицы wdTable.Borders.InsideLineStyle := wdLineStyleSingle; wdTable.Borders.OutsideLineStyle := wdLineStyleSingle; // Сброс параметров параграфа. wdRng.ParagraphFormat.Reset; // Выравнивание всей таблицы - по левому краю wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft; // Оформление шапки wdRng := wdTable.Rows.Item(1).Range; // Диапазон первой строки. wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter; wdRng.Font.Size := 10; wdRng.Font.Bold := True; // Оформление первой строки данных - вторая строка в таблице // При добавлении следующих строк, их оформление будет копироваться с этой строки. wdRng := wdTable.Rows.Item(2).Range; //Äèàïàçîí âòîðîé ñòðîêè. wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft; wdRng.Font.Size := 10; wdRng.Font.Bold := False; //шапка таблицы. for i := 0 to ADOTable1.Fields.Count - 1 do wdTable.Cell(1, i + 1).Range.Text := ADOTable1.Fields[i].DisplayName; //данные таблиц. ADOTable1.DisableControls; Bm := ADOTable1.GetBookMark; ADOTable1.First; i := 1; //текущая строка в MS Word. while not ADOTable1.Eof do begin Inc(i); // Если требуется, добавляем новую строку в конец таблицы. if i > 2 then wdTable.Rows.Add; // Записываем данные в строку таблицы MS Word. for j := 0 to ADOTable1.Fields.Count - 1 do wdTable.Cell(i, j + 1).Range.Text := ADOTable1.Fields[j].AsString; ADOTable1.Next; end; ADOTable1.GotoBookMark(Bm); ADOTable1.EnableControls; finally // Включение перерисовки окна MS Word. wdApp.ScreenUpdating := True; Последний раз редактировалось pochemuch, 22.06.2015 в 00:26. |
#8
|
||||
|
||||
![]() Вам необходимо формировать вордовский документ на основе данных из таблиц, а не данные подгонять под шаблон, нумерацию пунктов\подпунктов лучше производить там
З.Ы. Вот пример автонумерации ячеек вордовской таблички нарисовался из drkb Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 22.06.2015 в 01:10. |