Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.130.228] |
|
Сообщ.
#1
,
|
|
|
Предлагаю для тестирования компонент для рисования графика. Конструктивная критика приветствуется. Компонент для Delphi 2006 (2005).
Нашел небольшую ошибку. Файл для скачивания обновил. Прикреплённый файлGrafik.rar (24.48 Кбайт, скачиваний: 834) |
Сообщ.
#2
,
|
|
|
Компонент работает хоть?
|
Сообщ.
#3
,
|
|
|
У меня работает
|
Сообщ.
#4
,
|
|
|
Цитата Rouse_ @ У меня работает И на том спасибо. |
Сообщ.
#5
,
|
|
|
Вот картинка с примером компонента.
Прикреплённый файлGrafik.png (4.33 Кбайт, скачиваний: 1381) |
Сообщ.
#6
,
|
|
|
Delphi6, мелочь а неприятно
procedure TGrafik.CalcDelta; begin FTempCanvas.SetSize(Width-FOgrVertUp-FOgrVertDown, Height-FOgrGorUp-FOgrGorDown); FTempCanvas2.SetSize(Width, Height); FDelta := FTempCanvas.Height/(Max-Min); end; [Error] UnitGrafik.pas(199): Undeclared identifier: 'SetSize' Point := CalcCursorPos; if MouseInClient then if (Point.X>(FOgrVertUp-1)) and (Point.X<(Width-FOgrVertDown)) then [Error] UnitGrafik.pas(382): Undeclared identifier: 'MouseInClient' procedure TGrafik.ReadMax(Reader: TReader); begin FMax := Reader.ReadDouble; end; [Error] UnitGrafik.pas(586): Undeclared identifier: 'ReadDouble' procedure TGrafik.WriteMax(Writer: TWriter); begin Writer.WriteDouble(FMax); end; [Error] UnitGrafik.pas(700): Undeclared identifier: 'WriteDouble' |
Сообщ.
#7
,
|
|
|
Дак написано, что компонент для Delphi 2006 (2005).
|
Сообщ.
#8
,
|
|
|
Минимальная переделка и работает для более младших братьев.
Добавлено 1. При перемещении мыши над компонентом жизнь останавливается. Предлагаю сделать замену procedure TGrafik.MouseMove(Shift: TShiftState; X, Y: Integer); begin inherited; // Paint; Invalidate; end; 2. не совсем ясна концепция добавления данных, метод AddValue(Value : TTData; ValueTime : TDateTime); не помешал бы. В пояснении опечатка (" Для передачи данных в график используем вызов Grafik1.DataIn(TGrafik.Create(Данные,Time));") а нужно Grafik1.DataIn(TDataInOb.Create(Данные,Time)); 3. Нет смысла каждый раз рисовать сетку, можно хранить и пересоздавать при Resize Добавлено А вообще, я за две минуты написал вот такой код, который делает все тоже самое но возможностей по оформлению графика в тысячу раз больше const Count = 50; procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin Series1.Clear; for i := 0 to Count do Series1.Add(Random(100)); end; procedure TForm1.Timer1Timer(Sender: TObject); var i: integer; begin // эффект перемещения for i := 0 to Count-1 do Series1.ValuesList.ValueList[1].Value[i] := Series1.ValuesList.ValueList[1].Value[i+1]; Series1.ValuesList.ValueList[1].Value[Count] := Random(100); Chart1.Invalidate; end; |
Сообщ.
#9
,
|
|
|
Цитата DimaBr @ Минимальная переделка и работает для более младших братьев. Это я сделаю, просто времени пока нет. По 1 пункту - учту. Цитата DimaBr @ 2. не совсем ясна концепция добавления данных, метод AddValue(Value : TTData; ValueTime : TDateTime); не помешал бы. В пояснении опечатка (" Для передачи данных в график используем вызов Grafik1.DataIn(TGrafik.Create(Данные,Time));") а нужно Grafik1.DataIn(TDataInOb.Create(Данные,Time)); Испрвлю, метод AddValue добавлю. Цитата DimaBr @ А вообще, я за две минуты написал вот такой код, который делает все тоже самое но возможностей по оформлению графика в тысячу раз больше const Count = 50; procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin Series1.Clear; for i := 0 to Count do Series1.Add(Random(100)); end; procedure TForm1.Timer1Timer(Sender: TObject); var i: integer; begin // эффект перемещения for i := 0 to Count-1 do Series1.ValuesList.ValueList[1].Value[i] := Series1.ValuesList.ValueList[1].Value[i+1]; Series1.ValuesList.ValueList[1].Value[Count] := Random(100); Chart1.Invalidate; end; А я по возможностям оформления не с кем и не соревнуюсь |
Сообщ.
#10
,
|
|
|
Пробывал, но так и не получилось сделать статичную картинку из трёх значений - начало дня, середина и конец. Ожидал график в виде /\, ан нет - только три значения в конце графика.
|