![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
К сожалению поиском не нашел ничего дельного.
Делаю проект под .NET Нужно чтобы программа рассчитывала некоторые значения, заносила их в массив и по этому массиву строила график. написал так: Код HTML:
В форме по нажатию на кнопку процедура calculate делает расчет и формирует массив данных. Другая процедура--ris_graf для события Paint содержит код для рисования графика. Вопрос: Как из процедуры calculate вызвать процедуру ris_graf и при этом передать ей массив данных (и еще парочку значений)? Т.е. чтобы при нажатии на кнопку "calculate" строился график. Или тут нужно реализовывать как-то по другому? Может быть рисовать график в новом окне? но вопрос остается неизменным: как передать данные между процедурами и вызвать процедуру рисования графика? Последний раз редактировалось lifant, 18.03.2010 в 22:31. |
|
#2
|
||||
|
||||
|
массив и другие сделать полями формы и после расчета вызвать перерисовку - для VCL это Refresh или Update.
|
|
#3
|
|||
|
|||
|
а можно пример?
|
|
#4
|
||||
|
||||
|
В ДотНете пишу в СиШарп, на делфи в VCL, но должно быть похоже
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
myGrafArr: array of integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(myGrafArr, 10);
// заполняем
Form1.Invalidate();
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
// очищаем график
if Length(myGrafArr) > 0 then
begin
// чтото делаем
end;
end;
end. |
|
#5
|
||||
|
||||
|
ПРИМЕЧАНИЕ: Насколько я знаю OnClick и OnPaint выполняются в одном потоке - значит можно не бояться, что отрисуется в процессе вычислений.
|
|
#6
|
|||
|
|||
|
Цитата:
Только теперь компилятор выдает ошибку: "First chance exception at @($3,$60005F4,$EE). Exception class System.OverflowException with message 'Arithmetic operation resulted in an overflow.'. Process Tpole.exe (944)" и выделяет последнюю строку со словом "end." в основном файле проекта, тот который начинается со слова program Это как понимать? Последний раз редактировалось lifant, 22.03.2010 в 23:52. |
|
#7
|
|||
|
|||
|
Ну, подозреваю, что в процессе вычисления его, вычисления, результат превысил максимально допустимое значение для указанного типа данных. Например, ты попытался запихнуть в переменную типа byte значение больше 255.
|