Witam, jak w temacie. Dotychczas ukrywałem jedynie formatkę za pomocą Form2.Hide, lecz chcę teraz wyłączyć, aby zmienne na formatce się wykasowały.
free;
Free zawiesza mi aplikację...
Chodzi mi też o to, aby po wyłączeniu formatki, móc ją włączyć wprowadziwszy wcześniej nowe zmienne. Na przykład.
Form1:
c:string;
c:=edit1.text;
Form2:
edit2.text:=c;
Program czyta mi pierwszej formatce stringa i wyświetla w drugiej. Mi chodzi o to, żeby po naciśnięciu "Zamknij" w drugiej formatce, wprowadzeniu innego ciągu znaków w edit1 na pierwszej formatce i odpaleniu jeszcze raz drugiej wyświetlił ten nowy string. Teraz cały czas wyświetla pierwszy wczytany string.
przyswój sobie może jakieś podstawy na temat klas i obiektów bo pojęcie masz znikome. Poza tym twoje opisy tego co chcesz zrobić są tak zakręcone, że wątpię aby ktokolwiek połapał się o co ci chodzi
Pokaż fragment kodu jak odpalasz drugą formatkę.
Na 1 formatce
procedure TForm1.Button5Click(Sender: TObject);
begin
porz:=strtoint(edit2.Text);
count:=root;
Memo2.Visible:=True;
Memo2.Clear;
while count<>nil do
begin
if count^.lp=porz then edit:=count;
count:=count^.Next;
end;
if edit=nil then ShowMessage('Nie ma takiego elementu');
if edit<>nil then
begin
if edit^.wykszt='podsta' then szkola:='podstawowe';
if edit^.wykszt='wyzsze' then szkola:='wysze';
if edit^.wykszt='sredni' then szkola:='srednie';
if edit^.plec='M' then pl:='Mezczyzna';
if edit^.plec='K' then pl:='Kobieta';
memo2.lines.Add('Lp: '+inttostr(edit^.lp));
memo2.lines.Add('Wiek: '+inttostr(edit^.wiek));
memo2.lines.Add('Poparcie: '+edit^.popiera);
memo2.lines.Add('Plec: '+pl);
memo2.lines.Add('Wyksztalcenie: '+szkola);
memo2.lines.Add('Miasto: '+inttostr(edit^.miasto));
memo2.lines.Add('Zmiana zdania: '+edit^.czy);
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
porz:=strtoint(edit2.Text);
count:=root;
while count<>nil do
begin
if count^.lp=porz then edit:=count;
count:=count^.Next;
end;
if edit=nil then ShowMessage('Nie ma takiego elementu');
if edit<>nil then
begin
if edit^.wykszt='podsta' then szkola:='podstawowe';
if edit^.wykszt='wyzsze' then szkola:='wysze';
if edit^.wykszt='sredni' then szkola:='srednie';
if edit^.plec='M' then pl:='Mezczyzna';
if edit^.plec='K' then pl:='Kobieta';
Form2.Show;
end;
Druga formatka
procedure TForm2.Button3Click(Sender: TObject);
var
lat, m:integer;
pop,cz,ple,szkol:string;
begin
if combobox1.itemindex=0 then pop:='Tak';
if combobox1.itemindex=1 then pop:='Nie';
lat:=strtoint(edit1.text);
m:=strtoint(edit2.text);
if combobox2.itemindex=0 then ple:='K';
if combobox2.itemindex=1 then ple:='M';
if combobox3.itemindex=0 then szkol:='podsta';
if combobox3.itemindex=1 then szkol:='sredni';
if combobox3.itemindex=2 then szkol:='wyzsze';
if combobox4.itemindex=0 then cz:='Tak';
if combobox4.itemindex=1 then cz:='Nie';
count:=root;
while count^.lp<porz do
count:=count^.Next;
count^.popiera:=pop;
count^.wiek:=lat;
count^.miasto:=m;
count^.plec:=ple;
count^.wykszt:=szkol;
count^.czy:=cz;
new(NewOne);
NewOne:=root;
while not NewOne^.next^.lp=count^.lp do
begin
NewOne:=NewOne^.next;
end;
NewOne^.Next:=count;
form1.Memo1.Clear;
new(NewOne);
NewOne:=root;
while NewOne<>nil do
begin
if NewOne^.lp<10 then
form1.memo1.lines.Add(inttostr(NewOne^.lp)+' '+inttostr(NewOne^.wiek)+' '+NewOne^.popiera);
if NewOne^.lp>9 then form1.memo1.lines.Add(inttostr(NewOne^.lp)+' '+inttostr(NewOne^.wiek)+' '+NewOne^.popiera);
NewOne:=NewOne^.Next;
end;
Form2.Hide;
end;
Procedurę Button5Click dałem niepotrzebnie, nie ma ona tutaj żadnego znaczenia...
Dodam jeszcze że program ma edytować elementy listy jednokierunkowej. Wszzystko śmiga, jdeyną wadą jest brak możliwości zmiany elementu edytowanego..
Przed pokazaniem formatki drugiej trzeba uaktualnić jej komponenty np
//w procedurze TForm1.Button6Click
Form2.Edit1.Text:=Edit2.Text;
Form2.Edit2.Text:='coś tam';
//i dopiero
Form2.Show;
Dzięki wielkie, pomogło. Początkowo te przypisania miałem na drugiej formatce pod przyciskiem, który raz aktywowany znikał :/ <głupi_ja!>
Jeszcze raz dzięki i pozdrawiam