zwracanie wartości w nowym formularzu

0

Witam, jestem początkującym w programowaniu i mam pewien problem. Otóż chcę zrobić wykres słupkowy w delphi i jak sobie wprowadzę dane w pola EDIT to jak wcisnę przycisk BUTTON który będzie mnie kierował do kolejnego formularza (FORM2) i w nowym formularzu wydrukuje mi ten wykres. I chodzi mi właśnie o to co napisać aby wynik operacji wyświetlił w nowym formularzu a nie w tym samym. Aby poruszać się pomiędzy formularzami używam funkcji np. form2.showmodal(); ale to służy tylko do przejścia a niestety nie wyświetli wyniku w nowym formie.
Tak wygląda mój program zawarty w buttonie "rysuj wykres"
A w nowym formularzu ma być wyświetlone to co jest zaznaczone * na końcu, te 4 linijki.

procedure TForm2.Button1Click(Sender: TObject);
var a,b,c:real;
var d,e,f:integer;
begin
canvas.Rectangle(200,100,550,300);      *
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);

a:=a/100*200;
d:=round(a);

b:=b/100*200;
e:=round(b);

c:=c/100*200;
f:=round(c);

canvas.Rectangle(250,300,300,300-d);  *
canvas.Rectangle(350,300,400,300-e);  *
canvas.Rectangle(450,300,500,300-f);   *
end;
end.
0

gulek5: jako początkującemu nie chce Tobie mieszać, bo na niewidocznej formatce nie narysujesz niczego,
gydż w momencie jej pokazywania wywoływany jest komunikat WM_PAINT i cała zawartośc formatki jest na
nowo przrysowywana i to co nie jest komponentem czyli na rysowane tło z niej znika. Musiałbyś obsłużyc w
kodzie ten komunikat i zawsze kazać rysować na formatce jakaś bitmapę, która zawierała by Twój wykres.
Dlatego najprostszym sposobem będzie umieszczenie na pokazywanej formatce komponentu Image (jest on
dostępny na zakładce Additional). Dzięki niemu rysunek nie zniknie na przykład jak zmimalizujesz formatkę, co
dzieje się gdy rysujesz bezpośrenio na Canvasie Formatki. Ponieważ podczas przywracania okna aplikacja jest
na nowo wywoływany komunikat WM_PAINT i Twój rysunek zniknie z formatki. Dlatego użyj właśnie TImage.

procedurE TForm1.Button1Click(Sender : TObject);
var
  A, B, C : Real;
  D, E, F : integer;
begin
  A := StrToFloat(Edit1.Text);
  B := StrToFloat(Edit2.Text);
  C := StrToFloat(Edit3.Text);
  with Form2.Image1 do
  begin
    Canvas.Rectangle(200, 100, 550, 300);
    A := A / 100 * 200;
    D := Round(a);
    B := B / 100 * 200;
    E := Round(b);
    C := C / 100 * 200;
    F := Round(c);
    Canvas.Rectangle(250, 300, 300, 300 - D);
    Canvas.Rectangle(350, 300, 400, 300 - E);
    Canvas.Rectangle(450, 300, 500, 300 - F);
  end;
  Form2.ShowModal;
end;
0

Wielkie dzięki Olesio, programik działa idealnie.

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