Здравствуйте, Семенов Владимир Леонидович!
Предлагаю вам свое решение может черезчур раздутое
Эдиты создаю динамически им присваивается один обработчик опускания клавиши
и при каждом наступлении данного события заново перестраиваем график
по коду много примеров если что непонятно пишите в Аську
Приложение:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;type TForm1 = class(TForm) Chart1: TChart; Series1: TLineSeries; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } //îáðàáîò÷èê íàæàòèÿ êëàâèøè (åå îïóñêàíèÿ) îáùèé äëÿ âñåõ ýäèòîâ procedure KeyUpEdit(Sender: TObject; var Key: Word; Shift: TShiftState); end;var Form1: TForm1; Edit: array[0..11] of TEdit; //Ìàññèâ Edit áóäåì ñîçäàâàòü èõ äèíàìè÷åñêè Handl: array[0..11] of HWND;//Ìàññèâ õåíäëîâ ýäèòîâ Graf: array[0..11] of Double = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); //ìàññèâ êîòîðûé ìû áóäåì ïåðåäîâàòü â ÷àðòimplementation{$R *.dfm}{ TForm1 }procedure TForm1.FormCreate(Sender: TObject);var i: Integer;begin //çäåñü âñå ïðîñòî for i:= 0 to 11 do begin Edit[i]:= TEdit.Create(Form1); //âûçûâàåì êîíñòðóêòîð Edit[i].Parent:= Form1; //íà âñÿêèé ïîæàðíûé óêàçûâàåì ðîäèòåëÿ Edit[i].Left:= 20; //çàäàåì ìåñòî ïîëîæåíèå íà ôîðìå Edit[i].Top:= 20 * i + 20; Edit[i].OnKeyUp:= KeyUpEdit; //ïðèñâàåâàååì îáðàáîò÷èê íàæàòèÿ êëàâèøè Handl[i]:= Edit[i].Handle; //çàïîëíÿåì ìàññèâ õýíäëîâ end;end;procedure TForm1.FormDestroy(Sender: TObject);var i: Integer;begin for i:= 0 to 11 do //îñâîáîæäàåì ðåñóðñû Edit[i].Free;end;procedure TForm1.KeyUpEdit(Sender: TObject; var Key: Word; Shift: TShiftState);var i: Integer; _str: String;beginForm1.Caption:= IntToStr(Key);(*íàì íàäî îòñåèâàòü âñå íåëåãàëüíûå íàæàòèÿ êëàâèø188 - ýòî çàïÿòàÿ òàêèå íàñòðîéêè â ìîåé Windowsåñëè ìû íå íàæàëè öèôðû îò 0 äî 9 òî ìû óäàëÿåìïîñëåäíèé ñèìâîë â ñòðîêå åñëè íàæàëè Backspace èëè Deleteòî ïðîïóñêàåì íà ñëó÷àé åñëè ïðèäåòñÿ óäàëèòü ëèøíèå öèôðûíå ðåàãèðóåì íà ñòðåëêè Home, End, Pg Up, Pg Dn*) if (Key > 32)and(Key < 41) then Exit; if (Key <> 188) then if ((Key < 48)or(Key > 57))and((Key <> 8)and(Key <> 46)) then begin (*âýòîì öèêëå ïðîñòî îïðåäåëÿåì â êàêîì ýäèòå ïðîèçîøëî íàæàòèå èçâèíÿþñü çà êîä íè÷åãî ëó÷øåãî íå ïðèäóìàë
*) for i:= 0 to 11 do if TEdit(Sender).Handle = Handl[i] then begin _str:= Edit[i].Text; Delete(_str, Length(_str), 1); Edit[i].Text:= _str; end; end; if Key = 188 then //åñëè íàæàëè çàïÿòóþ ïðîïóñêàåì õîä Exit; (*çäåñü îïÿòü îïðåäåëÿåì ãäå ââîäèì ïðèñâàèâàåì ýëåìåíòó ìàññèâà èçìåíåííîå çíà÷åíèå î÷èùàåì ×àðò è çàíîâî ñòðîèì ãðàôèê åñëè ÷àðò íå ÷èñòèòü òî çíà÷åíèÿ ïîñòîÿííî äîáàâëÿþòñÿ*) for i:= 0 to 11 do if TEdit(Sender).Handle = Handl[i] then begin if Edit[i].Text <> ‘‘ then Graf[i]:= StrToFloat(Edit[i].Text) else Graf[i]:= 0; Chart1.Series[0].Clear; Chart1.Series[0].AddArray(Graf); end;end;end.