Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

gulek5

[Delphi 7] formularze

Rekomendowane odpowiedzi

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

publiczna metoda przyjmujaca dane albo publiczny element, po ktorym mozna rysowac

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

yyy mógłbyś trochę rozwinąć co dokładnie mam wpisać albo suzkać, bo nawet wpisując w google nie za bardzo wiem o co Ci chodzi.

 

Znalazłem kilka chyba prawidłowych wskazówek lecz coś nie za bardzo chcą działać. Otóż to co mam zawarte w przycisku obliczającym i rysującym wykres wygląda tak:

 

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.

 

Wszystko działa ładnie mi rysuje wykres ale w tym samym formularzu co jest przycisk. Znalazłem na necie coś takiego:

nowa_forma.enabled:=true;
nowa_forma.FormCreate(self);
nowa_forma.show;

gdzie nowa_forma to nazwa w polu Name

Pierwsza linijka uaktywnia nowa forme, druga wyjonuje to co znajduje sie w procedurze FormCreate,czyli co wykonuje sie automatycznie po jej starcie, trzecia pokazuje forme na ekranie.
Jezeli w procedurze FormCreate nie umiescisz zadnych polecen, nie wykonuj drugiej linijki kodu bo otrzymasz komunikat bledu.

Jeżeli użyję tylko

nowa_forma.enabled:=true;

nowa_forma.show;

to po uruchomieniu programu i wciśnięciu przycisku utworzy mi nowy form (czyli jak miało być), tyle że on jest pusty, a jak dopisze linijkę

nowa_forma.FormCreate(self);

to program się nie kompiluje. Domyślam się, że chyba coś trzeba wpisać w ten nawias tylko co?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nowa_forma.enabled:=true;
nowa_forma.FormCreate(self);
nowa_forma.show;

nie wiem skąd wziałeś ten kod, ale on jest bez sensu :)

 

 

co do twojego programu - w pierwszym formie dajesz w uses nazwe drugiego unita (zapewne form2), później bierzesz ten kod:

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.

i żeby pokazać że odwołujesz się do innego form po prostu przed każdym canvas dopisz form2. (tak że np canvas.Rectangle(200,100,550,300); zmieni się na form2.canvas.Rectangle(200,100,550,300); ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
co do twojego programu - w pierwszym formie dajesz w uses nazwe drugiego unita (zapewne form2)

Jeszcze tylko się zapytam o jakie USES chodzi? Ponieważ szukam i szukam i nie za bardzo wiem co to jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jak piszesz program w delphi, i chcesz się odwołać do czegoś na innej formie, to wystarczy zrobić tak:

np chcesz żeby na form2 pojawił się napis z edita na form1. Robisz to tak:

na form1 wstawiasz button i edit, przykładowo. A na form2 wstawiasz label. I piszesz w zdarzeniu onClick buttona

form2.label1.caption:=edit1.text;

Nie zaprzątaj sobie głowy tym, czy dodać jakąś nazwę w USES czy nie. Jeśli tego nie zrobisz, delphi, po kliknięciu na tryb debugowania (taka zielona strzałka) zapyta, czy chcesz dodać taką właśnie nazwę do uses, bo zauważył, że jeden formularz korzysta z drugiego. Oczywiście musisz się zgodzić :)

Chyba że sam chcesz dodawać tę nazwę, to robisz to tam, gdzie masz słowo uses. (na samej górze listingu, pod słowem interface). Tam musisz dopisać nazwę unita z którego korzystasz. Przykładowo, jeśli nic nie zmieniałeś, to po utworzeniu nowej formy (np form2) będzie to unit2. Czyli przykładowo uses może wyglądać tak

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, unit2, StdCtrls;

 

Pozdrawiam :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...