Добавил:
nyan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:4 курс - Трояновский / ПИУС / ПЦР / ПЦР-2005 / Drawer_1 / FuncEditor
.cpp//---------------------------------------------------------------------------
#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