Znikający wykres

0

Zaczne od tego, że program ma kilka zakładek na jednej z zakładek rysuje wykres w poniżej przedstawiony sposób, problem tkwi w tym, że gdy zmienie zakładke na inną zakłądke i powroce do zakładki z wykresem to wykres znika. Jak moge go "zatrzymać "

MyBitmap2.Canvas.Pen.Color := clBlue;
yekran2 := round(90-10*(Wektor[0]-1));
MyBitmap2.Canvas.MoveTo(35, yekran2);

for i:= 0 to roz do
begin
xekran2 := round(35+20*i);
yekran2 := round(90-10*(Wektor[i]-1));
MyBitmap2.Canvas.LineTo(xekran2, yekran2);
PaintBox1.Canvas.Draw(0,0,MyBitmap2);
0

To powinno rozwiązać problem:
W zdzarzeniu PaintBox1 -> OnPaint

if not (MyBitmap2 = nil) and not MyBitmap2.Empty then
PaintBox1.Canvas.Draw(0,0,MyBitmap2);
0

niestety nic z tego. nie dziala :-(

0

Upewnij się czy zadeklarowałeś MyBitmap2 jako zmienną globalną.

0

powinieneś mieć taki układ w unit'cie

TFormx = class(TForm)
  ...
    procedure PaintBox1OnPaint(...);
  private
    ...
    MyBitmap2: TBitmap;
    procedure PaintBitmap;
  ...
  end;


procedure TFormx.PaintBox1OnPaint(...);
begin
  PaintBox1.Canvas.Draw(0,0,MyBitmap2);
end;

procedure TFormx.PaintBitmap;
//potrzebne deklaracje itp
begin
  MyBitmap2.Canvas.Pen.Color := clBlue;
  yekran2 := round(90-10*(Wektor[0]-1));
  MyBitmap2.Canvas.MoveTo(35, yekran2);

  for i:= 0 to roz do
  begin
    xekran2 := round(35+20*i);
    yekran2 := round(90-10*(Wektor[i]-1));
    MyBitmap2.Canvas.LineTo(xekran2, yekran2);
  end;
end;

//i oczywiście w OnCreate tworzenie bitmapy i w OnDestroy niszczenie

teraz jeśli PB wymaga odrysowania (np. przesłonięcie go inną formą czy zmiana zakładki) to zrobi się to "automatycznie", jeśli natomiast zmienią się dane do wykresu to wywołujesz najpierw PaintBitmap; a następnie PaintBox1.Refresh (albo PaintBox1.Repaint - nigdy nie pamiętam) :p

0

Już doszedłem gdzie robiłem błąd. Dzięki Dice :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1