Panel1: TPanel;

ComboBox1: TComboBox;

BitBtn1: TBitBtn;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

X: TEdit;

Y: TEdit;

Edit3: TEdit;

Panel2: TPanel;

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

With Combobox1.Items do

begin

AddObject('Button',Tobject(TButton));

AddObject('Label',Tobject(TLabel));

AddObject('Radiobutton',Tobject(TRadiobutton));

AddObject('CheckBox',Tobject(TCheckBox));

AddObject('Edit',Tobject(TEdit));

AddObject('ComboBox',Tobject(TComboBox));

end;

Combobox1.ItemIndex:= 0;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var Refer: TControlClass;

Instance: TControl;

Tex: array [0..255] of Char;

begin

Refer:= TControlClass(ComboBox1.Items. Objects[Combobox1.Itemindex]);

Instance:= Refer. Create(Self);

Instance. Parent:= Panel2;

Instance. Left:= StrToInt(X. Text);

Instance. Top:= StrToInt(Y. Text);

SendMessage(TWinControl(Instance).Handle, WM_SETTEXT,0,

LongInt(StrPCopy(Tex, Edit3.Text)));

end;

end.

2.6. Внедрение и связывание объектов (OLE)

unit U_OLE_1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ExtCtrls, OleCtnrs;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

OleContainer1: TOleContainer;

НЕ нашли? Не то? Что вы ищете?

Panel1: TPanel;

N_file: TMenuItem;

N_open: TMenuItem;

N_save: TMenuItem;

N_close: TMenuItem;

N_new: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

N_exit: TMenuItem;

N_openFile: TMenuItem;

N_saveFile: TMenuItem;

OpenDialog2: TOpenDialog;

SaveDialog2: TSaveDialog;

procedure N_newClick(Sender: TObject);

procedure N_openClick(Sender: TObject);

procedure N_saveClick(Sender: TObject);

procedure N_closeClick(Sender: TObject);

procedure N_exitClick(Sender: TObject);

procedure N_openFileClick(Sender: TObject);

procedure N_saveFileClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var Form1: TForm1;

implementation

const Fname: string = '';

{$R *.DFM}

procedure TForm1.N_newClick(Sender: TObject);

begin // выбор и загрузка объекта в OLE-контейнер

if OleContainer1.InsertObjectDialog then Fname:= '';

end;

procedure TForm1.N_openClick(Sender: TObject);

begin // выбор и загрузка в OLE-контейнер объекта,

// соответствующего выбранному файлу из обычного

// диалогового окна открытия файла

with OpenDialog1 do // - вызов диалогового окна

if Execute then

begin // выбор файла из диал. окна:

OleContainer1.LoadFromFile(FileName);

Fname:= FileName;

OleContainer1.Repaint; // перерисовка окна OLE-контейнера

end;

N_open. Enabled:= False;

end;

procedure TForm1.N_saveClick(Sender: TObject);

begin // сохранение OLE-объекта в файле:

if (FName = '') then // - если имя файла ещё не задано

if SaveDialog1.Execute then // - вызов диалогового окна

FName:= SaveDialog1.FileName // - задание имени файла

else exit;

// сохранение в файле, расширение которого принудительно

// заменяется на "ole" во избежание ошибок:

OleContainer1.SaveToFile(Copy(FName,0,Pos('.',FName)) + 'ole');

end;

procedure TForm1.N_closeClick(Sender: TObject);

begin // закрытие OLE-объекта

OleContainer1.DestroyObject; N_open. Enabled:= True;

end;

procedure TForm1.N_exitClick(Sender: TObject);

begin Close; // закрытие программы

end;

procedure TForm1.N_openFileClick(Sender: TObject);

begin // открытие файла документа

with OpenDialog2 do // - вызов диалогового окна

if Execute then

OleContainer1.CreateObjectFromFile(FileName, false);

end;

procedure TForm1.N_saveFileClick(Sender: TObject);

begin // сохранение файла документа

if (FName = '') then // - если имя файла ещё не задано

if SaveDialog2.Execute then // - вызов диалогового окна

FName:= SaveDialog2.FileName; // - задание имени файла

// else exit;

OleContainer1.SaveAsDocument(FName);

//- в версии Delphi3 не работает

end;

end.

2.7. Представление данных в виде таблиц и графиков

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Grids, Deftype, TeEngine,

Series, ExtCtrls, TeeProcs, Chart;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N7: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Chart1: TChart;

Series2: TBarSeries;

Series3: TBarSeries;

Series1: TBarSeries;

Series4: TLineSeries;

Series5: TLineSeries;

Series6: TLineSeries;

N5: TMenuItem;

N6: TMenuItem;

N8: TMenuItem;

procedure N7Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure Series1Click(Sender: TChartSeries;

ValueIndex: Integer;

Button: TMouseButton; Shift: TShiftState;

X, Y: Integer);

procedure Series4Click(Sender: TChartSeries;

ValueIndex: Integer;

Button: TMouseButton; Shift: TShiftState;

X, Y: Integer);

procedure StringGrid1SelectCell(Sender: TObject; Col, Row: Integer;

var CanSelect: Boolean);

procedure N8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3;

{$R *.DFM}

procedure TForm1.N7Click(Sender: TObject);

// вызов формы: разметка табл.

begin

Razmetka. Visible:= True;

end;

procedure TForm1.N3Click(Sender: TObject); // открыть файл:

var i, j,k: integer;

A: real;

begin

if OpenDialog1.Execute then

AssignFile(Fdata, OpenDialog1.FileName);

Reset(Fdata);

Readln(Fdata, N, M);

Form1.StringGrid1.RowCount:= N+1; // - число строк таблицы

Form1.StringGrid1.ColCount:= M+1; // - число столбцов

for j:= 1 to M do begin // чтение заголовков таблицы

Readln(Fdata, Str); StringGrid1.Cells[j,0]:= str;

end;

for i:= 1 to N do begin // чтение таблицы:

Read(Fdata, k);

StringGrid1.Cells[0,i]:= IntToStr(k);

for j:= 1 to M do begin

Read(Fdata, A);

StringGrid1.Cells[j, i]:= FloatToStr(A);

end; Readln(Fdata);

end;

CloseFile(Fdata);

end;

procedure TForm1.N2Click(Sender: TObject);

// сохранить таблицу в файл:

var i, j: integer;

begin

if SaveDialog1.Execute then

AssignFile(Fdata, SaveDialog1.FileName);

Rewrite(Fdata);

Writeln(Fdata, N, ' ', M);

for j:= 1 to M do Writeln(Fdata, StringGrid1.Cells[j,0]);

for i:= 1 to N do begin

Write(Fdata, i, ' ');

for j:= 1 to M do begin

Write(Fdata, StringGrid1.Cells[j, i],' ');

end; Writeln(Fdata);

end;

CloseFile(Fdata);

end;

procedure TForm1.N5Click(Sender: TObject);

// графики / столбч. диаграмма

begin

Series1.Active:= True; Series2.Active:= True;

Series3.Active:= True;

Series4.Active:= False; Series5.Active:= False;

Series6.Active:= False;

end;

procedure TForm1.N6Click(Sender: TObject);

// графики / линейный график

begin

Series1.Active:= False; Series2.Active:= False;

Series3.Active:= False;

Series4.Active:= True; Series5.Active:= True;

Series6.Active:= True;

end;

// изменение столбчатой диаграммы на линейную по щелчку мыши:

procedure TForm1.Series1Click(Sender: TChartSeries; ValueIndex: Integer;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

Series4.Assign(Series1);

Series4.Active:= True;

Series1.Active:= False;

end;

// изменение линейной диаграммы на столбчатую по щелчку мыши:

procedure TForm1.Series4Click(Sender: TChartSeries; ValueIndex: Integer;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

Series1.Assign(Series4);

Series1.Active:= True;

Series4.Active:= False;

end;

// отображение диаграмм при переходе на др. клетку таблицы:

procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer; var CanSelect: Boolean);

var i: integer;

begin

Series1.Clear; Series2.Clear; Series3.Clear;

// - очистка данных

Series4.Clear; Series5.Clear; Series6.Clear;

for i:= 1 to N do begin

Case Col of // - номер текущей колонки таблицы

1: begin

Series1.AddXY(i, StrToFloat(StringGrid1.Cells[1,i]),' ',clRed);

Series4.AddXY(i, StrToFloat(StringGrid1.Cells[1,i]),' ',clRed);

end;

2: begin

Series2.AddXY(i, StrToFloat(StringGrid1.Cells[2,i]),' ',clBlue);

Series5.AddXY(i, StrToFloat(StringGrid1.Cells[2,i]),' ',clBlue);

end;

3: begin

Series3.AddXY(i, StrToFloat(StringGrid1.Cells[3,i]),' ',clGreen);

Series6.AddXY(i, StrToFloat(StringGrid1.Cells[3,i]),' ',clGreen);

end;

end;

end;

end;

procedure TForm1.N8Click(Sender: TObject);

// копия диаграммы в виде рис.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8