Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
30.04.2019
Размер:
3.55 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FuncEditor.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFuncEditorForm *FuncEditorForm;
//---------------------------------------------------------------------------
__fastcall TFuncEditorForm::TFuncEditorForm(TComponent* Owner)
	: TForm(Owner)
{
	DecimalSeparator = '.';
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::FormCreate(TObject *Sender)
{
	int nEdit = 0, nScroll = 0;
	for(int i = 0; i < this->ComponentCount; i++){
		if(Components[i]->Tag == 12345){
			Components[i]->Tag = nEdit;
			Edits[nEdit++] = (TEdit*)Components[i];
		}
		if(Components[i]->Tag == 12346){
			Components[i]->Tag = nScroll;
			ScrollBars[nScroll++] = (TScrollBar*)Components[i];
		}
	}
	Series.Bind(PaintBox);
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::FormShow(TObject *Sender)
{
	Range->Min = 0;
	Range->Max = max(0, Series.GetSize() - 10);
	Range->Position = 0;
	Sync();
}

void TFuncEditorForm::Sync(){
	int i;
	double fScale = atof(Scale->Text.c_str());
	for(i = 0; i < 10; i++){
		if(i + Range->Position > Series.GetSize())
			break;
		Edits[i]->Text = FloatToStr(((double)((int)(Series[i + Range->Position]*1000)))/1000);
		Edits[i]->Enabled = true;
		ScrollBars[i]->Position = -(double)Series[i + Range->Position]*100.0/fScale;
		ScrollBars[i]->Enabled = true;
	}
	for(; i < 10; i++){
		Edits[i]->Text = "";
		Edits[i]->Enabled = false;
		ScrollBars[i]->Position = 0;
		ScrollBars[i]->Enabled = false;
	}

	ElemCount->Text = IntToStr(Series.GetSize());

	Series.MarkStart = Range->Position;
	Series.MarkEnd = Range->Position + 10;
	Series.Update();
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::RangeChange(TObject *Sender)
{
	Sync();
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::ScrollBar1Change(TObject *Sender)
{
	double fScale = atof(Scale->Text.c_str());
	TScrollBar *self = (TScrollBar*)Sender;
	if(self->Tag + Range->Position < Series.GetSize()){
		Series[self->Tag + Range->Position] = -(double)self->Position / 100.0 * fScale;
		Sync();
	}
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::Edit1Exit(TObject *Sender)
{
	TEdit *self = (TEdit*)Sender;
	if(self->Tag + Range->Position < Series.GetSize()){
		Series[self->Tag + Range->Position] = atof(self->Text.c_str());
		Sync();
	}
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::ElemCountExit(TObject *Sender)
{
	Series.SetSize(atoi(ElemCount->Text.c_str()));
	Range->Min = 0;
	Range->Max = max(0, Series.GetSize() - 10);

	Sync();
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::Button1Click(TObject *Sender)
{
	ModalResult = mrOk;
//	Close();	
}
//---------------------------------------------------------------------------
void __fastcall TFuncEditorForm::Button2Click(TObject *Sender)
{
	ModalResult = mrCancel;
//	Close();
}
//---------------------------------------------------------------------------
Соседние файлы в папке Drawer_1