Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизВопрос по компоненту Chart (TChart)... Найти похожие ветки
← →
МикроДИП (2006-06-17 13:47) [0]Доброе время суток ! При нажатии на кнопку запускается Thread, в котором в двух циклах (один вложен во второй) добавляются точки (слева на право и снизу вверх) к графику методом Chart1.Series[0].AddXY(). Т.е. график представляет собой прямоугольную форму заполненную точками с неким произвольным шагом. Пока форма, на которой расположен график, неподвижна - всё нормально. Но если во время рисования графика начать двигать форму, происходит чёрти чё: уже нарисованные точки могут перескачить вверх, или вниз - в зависимости от того, куда я двигаю форму. А ещё может выскочить ошибка "EListError: List index out of bounds"... Что это такое, из-за чего это происходит и как с этим бороться ? Есть предположение что перетаскивание формы влияет каким-то образом на параметр ValuesLists... Но как ? И опять же, как это исправить ? Почитал архив вопросов на delphikingdom. Народ советует вообще не связываться с TChart-ом, а рисовать графики вручную с помощью Canvas. Так ли это ? График у меня простой двумерный, на каждом этапе должна ставиться точка соответствующего цвета (зависит от значения). Максимальный размер массива точек (X,Y) может составлять (200,500). Заранее благодарю за любые ответы !
← →
GanibalLector © (2006-06-17 14:08) [1]Нельзя из потока обращаться к VCL компонентам. Сделай так : -посылай сообщение из потока , а в главном потоке принимай и добавляй Chart1.Series[0].AddXY
← →
GanibalLector © (2006-06-17 14:28) [2]Что-то типа этого :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart;
type
TForm1 = class(TForm)
Chart1: TChart;
procedure FormCreate(Sender: TObject);
private
procedure ThreadMessage(var Msg:TMessage);message WM_USER+1;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Series;
{$R *.DFM}
function Potok(Param:Pointer):DWord;
var I:Integer;
begin
for I:=1 to 200 do
begin
PostMessage(Cardinal(Param),WM_USER+1,I,Random(50));
Sleep(30);
end;
Result:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
var ThId:DWord;
begin
Randomize;
Chart1.AddSeries(TLineSeries.Create(Self));
CloseHandle(BeginThread(nil,0,@Potok,PHAndle(Self.Handle),0,ThId));
end;
procedure TForm1.ThreadMessage(var Msg: TMessage);
begin
Chart1.Series[0].AddXY(Msg.WParam,Msg.LParam);
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c