Основы COM-технологий. Артемов М.А. и др. - 41 стр.

UptoLike

Составители: 

81
if DataSet.Fields[I].Visible then
Document.Range.InsertAfter(' '+#9);
Selection.EndKey(Vr1,EmptyParam);
Selection.TypeBackspace;
end;
//ɧɚɱɚɥɨ ɛɭɞɭɳɟɣ ɬɚɛɥɢɰɵ
Vr1 := TableBeg;
//ɤɨɧɟɰ ɛɭɞɭɳɟɣ ɬɚɛɥɢɰɵ
Vr2 := Selection.End;
//ɜɵɛɢɪɚɟɬɫɹ ɞɢɚɩɚɡɨɧ
Document.Range(Vr1,Vr2).Select;
//ɩɪɟɨɛɪɚɡɨɜɚɧɢɟ ɜ ɬɚɛɥɢɰɭ
Selection.ConvertToTable;
ɋolɋount := 1;
//ɡɚɞɚɸɬɫɹ ɲɢɪɢɧɵ ɤɨɥɨɧɨɤ
for I := 0 to DataSet.FieldCount-1 do
if DataSet.Fields[I].Visible then begin
Document.Tables.Item(Document.Tables.Count).Columns.Item(ColCount).
Width := DataSet.Fields[i].Tag;
Inc(ColCount);
end;
//ɡɚɞɚɸɬɫɹ ɝɪɚɧɢɰɵ
Selection.Cells.Borders.Item (wdBorderLeft). LineStyle:=wdLineStyle-
Single;
Selection.Cells.Borders.Item(wdBorderRight).LineStyle:= wdLi-
neStyleSingle;
Selection.Cells.Borders.Item(wdBorderHorizontal).LineStyle:= wdLi-
neStyleSingle;
Selection.Cells.Borders.Item(wdBorderTop).LineStyle:= wdLi-
neStyleSingle;
Selection.Cells.Borders.Item(wdBorderBottom).LineStyle:= wdLi-
neStyleSingle;
Selection.Cells.Borders.Item(wdBorderVertical).LineStyle:= wdLi-
neStyleSingle;
Document.Paragraphs.Add;
Document.Paragraphs.Item(Document.Paragraphs.Count-1).
Range.Select;
Selection.ParagraphFormat.KeepWithNext:=0;
end;
end.
ɉɪɢ ɧɚɠɚɬɢɢ ɧɚ ɤɧɨɩɤɭ Button1 ɜɵɩɨɥɧɹɟɬɫɹ ɩɪɨɰɟɞɭɪɚ Button1Click,
ɜ ɤɨɬɨɪɨɣ ɫɨɡɞɚɸɬɫɹ ɨɛɴɟɤɬɵ Word ɢ Document, ɡɚɞɚɸɬɫɹ ɬɢɬɭɥɶɧɵɣ ɥɢɫɬ
ɢ ɤɨɥɨɧɬɢɬɭɥɵ, ɡɚɬɟɦ ɜɵɡɵɜɚɟɬɫɹ ɩɪɨɰɟɞɭɪɚ TableExport – ɷɤɫɩɨɪɬɚ ɞɚɧ-
ɧɵɯ ɜ ɬɚɛɥɢɰɭ Word. ȼ ɞɚɧɧɨɣ ɩɪɨɝɪɚɦɦɟ ɢɫɩɨɥɶɡɨɜɚɥɨɫɶ ɩɨɡɞɧɟɟ ɫɜɹɡɵ-
ɜɚɧɢɟ. ɑɬɨɛɵ ɫɨɤɪɚɬɢɬɶ ɤɨɥɢɱɟɫɬɜɨ ɨɛɪɚɳɟɧɢɣ ɤ ɢɧɬɟɪɮɟɣɫɚɦ ɫɫɵɥɤɢ ɧɚ
ɨɛɴɟɤɬɵ, Document ɢ Select ɯɪɚɧɹɬɫɹ ɜ ɨɬɞɟɥɶɧɵɯ ɩɟɪɟɦɟɧɧɵɯ. ɉɨ ɨɤɨɧ-
ɱɚɧɢɢ ɪɚɛɨɬɵ ɜɫɟ ɫɫɵɥɤɢ ɧɚ ɨɛɴɟɤɬɵ ɫɟɪɜɟɪɚ ɚɜɬɨɦɚɬɢɡɚɰɢɢ ɧɟɨɛɯɨɞɢɦɨ
ɭɞɚɥɢɬɶ, ɱɬɨ ɞɨɫɬɢɝɚɟɬɫɹ ɩɪɢɫɜɨɟɧɢɟɦ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɦ ɩɟɪɟɦɟɧɧɵɦ
ɡɧɚɱɟɧɢɹ Null.
Ɂɚɞɚɱɢ «Ʉɥɢɟɧɬ-ɋɟɪɜɟɪ»
ȼɨ ɜɫɟɯ ɜ ɜɚɪɢɚɧɬɚɯ ɡɚɞɚɱ ɬɪɟɛɭɟɬɫɹ ɫɨɡɞɚɬɶ COM-ɫɟɪɜɟɪ, ɩɪɟɞɨ-
ɫɬɚɜɥɹɸɳɢɣ ɭɤɚɡɚɧɧɵɣ ɢɧɬɟɪɮɟɣɫ, ɢ ɪɟɚɥɢɡɨɜɚɬɶ ɩɪɢɥɨɠɟɧɢɟ-ɤɥɢɟɧɬ,
ɢɫɩɨɥɶɡɭɸɳɟɟ ɮɭɧɤɰɢɢ ɫɟɪɜɟɪɚ:
1. ȼɵɱɢɫɥɟɧɢɟ ɬɪɢɝɨɧɨɦɟɬɪɢɱɟɫɤɢɯ ɮɭɧɤɰɢɣ.
2. Ʉɚɥɶɤɭɥɹɬɨɪ (ɩɨɞɞɟɪɠɢɜɚɸɳɢɣ ɫɥɨɠɟɧɢɟ, ɜɵɱɢɬɚɧɢɟ, ɭɦɧɨɠɟɧɢɟ,
ɞɟɥɟɧɢɟ).
3. Ɉɛɪɚɛɨɬɤɚ ɮɚɣɥɚ: ɧɚɯɨɠɞɟɧɢɟ ɞɥɢɧɵ ɮɚɣɥɚ (ɜ ɫɢɦɜɨɥɚɯ), ɧɚɯɨɠ-
ɞɟɧɢɟ ɫɚɦɨɝɨ ɞɥɢɧɧɨɝɨ ɫɥɨɜɚ.
4. Ɉɛɪɚɛɨɬɤɚ ɮɚɣɥɨɜ: ɫɪɚɜɧɟɧɢɟ ɞɜɭɯ ɮɚɣɥɨɜ, ɧɚɯɨɠɞɟɧɢɟ ɨɞɢɧɚɤɨ-
ɜɵɯ ɫɥɨɜ ɜ ɮɚɣɥɚɯ, ɨɛɴɟɞɢɧɟɧɢɟ ɮɚɣɥɨɜ.
5. Ɋɟɚɥɢɡɚɰɢɹ ɮɚɣɥɨɜɵɯ ɨɩɟɪɚɰɢɣ (ɨɬɤɪɵɬɢɟ, ɱɬɟɧɢɟ, ɡɚɩɢɫɶ ɢ ɬ. ɞ.).
6. ɋɨɪɬɢɪɨɜɤɚ ɦɚɫɫɢɜɚ (ɥɸɛɵɦ ɫɩɨɫɨɛɨɦ).
7. Ɉɛɪɚɛɨɬɤɚ ɢɡɨɛɪɚɠɟɧɢɹ (ɨɫɜɟɬɥɟɧɢɟ, ɡɚɬɟɦɧɟɧɢɟ, ɭɫɬɚɧɨɜɤɚ ɩɪɨ-
ɡɪɚɱɧɨɫɬɢ).
8. Ʉɨɞɢɪɨɜɚɧɢɟ ɢɡɨɛɪɚɠɟɧɢɹ ɩɨ ɡɚɞɚɧɧɨɦɭ ɤɥɸɱɭ (ɧɚɩɪɢɦɟɪ, ɨɩɟɪɚ-
ɰɢɟɣ XOR).
9. ɒɢɮɪɨɜɚɧɢɟ ɬɟɤɫɬɚ ɦɟɬɨɞɨɦ XOR.
10. Ɋɚɛɨɬɚ ɫɨ ɫɬɪɨɤɨɣ ɬɟɤɫɬɚ: ɜɵɱɢɫɥɟɧɢɟ ɞɥɢɧɵ, ɧɚɯɨɠɞɟɧɢɟ ɩɨɞ-
ɫɬɪɨɤɢ, ɧɚɯɨɠɞɟɧɢɟ ɤɨɥɢɱɟɫɬɜɚ ɜɯɨɠɞɟɧɢɣ ɩɨɞɫɬɪɨɤɢ.
11.
Ɉɛɪɚɛɨɬɤɚ ɫɬɪɨɤɢ: ɩɟɪɟɜɨɞ ɫɬɪɨɤɢ ɜ ɜɟɪɯɧɢɣ ɢɥɢ ɧɢɠɧɢɣ ɪɟɝɢɫɬɪ.
12. ɉɟɪɟɜɨɞ ɱɢɫɟɥ ɜ ɬɟɤɫɬɨɜɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ (ɧɚɩɪɢɦɟɪ, 111 ĺ 'ɫɬɨ
ɨɞɢɧɧɚɞɰɚɬɶ'). ɑɢɫɥɚ ɦɨɝɭɬ ɛɵɬɶ ɞɨ 1000000.
82
        if DataSet.Fields[I].Visible then                                        end;
          Document.Range.InsertAfter(' '+#9);
        Selection.EndKey(Vr1,EmptyParam);                                        end.

        Selection.TypeBackspace;                                                 ��� ������� �� ������ Button1 ����������� ��������� Button1Click,
     end;                                                                    � ������� ��������� ������� Word � Document, �������� ��������� ����
     //������ ������� �������                                                � �����������, ����� ���������� ��������� TableExport – �������� ���-
                                                                             ��� � ������� Word. � ������ ��������� �������������� ������� �����-
     Vr1 := TableBeg;                                                        �����. ����� ��������� ���������� ��������� � ����������� ������ ��
     //����� ������� �������                                                 �������, Document � Select �������� � ��������� ����������. �� ����-
                                                                             ����� ������ ��� ������ �� ������� ������� ������������� ����������
     Vr2 := Selection.End;                                                   �������, ��� ����������� ����������� ��������������� ����������
     //���������� ��������                                                   �������� Null.

      Document.Range(Vr1,Vr2).Select;                                                           ������ «������-������»
      //�������������� � �������
      Selection.ConvertToTable;                                                  �� ���� � ��������� ����� ��������� ������� COM-������, �����-
      �ol�ount := 1;                                                         ���������� ��������� ���������, � ����������� ����������-������,
      //�������� ������ �������                                              ������������ ������� �������:
      for I := 0 to DataSet.FieldCount-1 do
        if DataSet.Fields[I].Visible then begin                                1.   ���������� ������������������ �������.
       Document.Tables.Item(Document.Tables.Count).Columns.Item(ColCount).     2. ����������� (�������������� ��������, ���������, ���������,
Width := DataSet.Fields[i].Tag;                                                �������).
          Inc(ColCount);                                                       3. ��������� �����: ���������� ����� ����� (� ��������), �����-
        end;                                                                   ����� ������ �������� �����.
      //�������� �������
      Selection.Cells.Borders.Item (wdBorderLeft). LineStyle:=wdLineStyle-     4. ��������� ������: ��������� ���� ������, ���������� �������-
Single;                                                                        ��� ���� � ������, ����������� ������.
      Selection.Cells.Borders.Item(wdBorderRight).LineStyle:= wdLi-            5.   ���������� �������� �������� (��������, ������, ������ � �. �.).
neStyleSingle;                                                                 6.   ���������� ������� (����� ��������).
      Selection.Cells.Borders.Item(wdBorderHorizontal).LineStyle:= wdLi-
neStyleSingle;                                                                 7. ��������� ����������� (����������, ����������, ��������� ���-
      Selection.Cells.Borders.Item(wdBorderTop).LineStyle:= wdLi-              ���������).
neStyleSingle;                                                                 8. ����������� ����������� �� ��������� ����� (��������, �����-
      Selection.Cells.Borders.Item(wdBorderBottom).LineStyle:= wdLi-           ���� XOR).
neStyleSingle;                                                                 9.   ���������� ������ ������� XOR.
      Selection.Cells.Borders.Item(wdBorderVertical).LineStyle:= wdLi-
                                                                               10. ������ �� ������� ������: ���������� �����, ���������� ���-
neStyleSingle;
                                                                               ������, ���������� ���������� ��������� ���������.
      Document.Paragraphs.Add;
      Document.Paragraphs.Item(Document.Paragraphs.Count-1).                   11. ��������� ������: ������� ������ � ������� ��� ������ �������.
Range.Select;
                                                                               12. ������� ����� � ��������� ������������� (��������, 111 � '���
      Selection.ParagraphFormat.KeepWithNext:=0;
                                                                               �����������'). ����� ����� ���� �� 1000000.

                                     81                                                                         82