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 |


