Odwołanie do elementów formy nadrzędnej

Odwołanie do elementów formy nadrzędnej
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Witam,
mam utworzonych kilka form A

Kopiuj
var
  FormaA: TForm1;

begin
Forma A := TForm1.Create(Application);

które każda tworzy swoją formę B:

Kopiuj
var
FormaB  : TForm4;
begin
FormaB := TForm4.Create(Self);
FomaB.ShowModal;

W jaki sposób odwołać się z FormyB do elementów formy A, z której została utworzona?
Np do ListView FormyA.

Kopiuj
ListItem.SubItems.Add(???FormaA???.ListView1.Items.Item[i].SubItems[1]);

Dodam tylko, że tych Form A może być utworzonych kilka jednocześnie, która każda utworzyła swoją FormeB

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
implementation uses Form1;

Jednak lepiej przekaż do Form2 to co cię interesuje z Form1

Kopiuj
FormaB := TForm4.Create(ListView1.Items);
FomaB.ShowModal;

oraz

Kopiuj
constructor TForm4.Create(List:TStrings);
begin
  inherited Create(Application);
  ListItem.SubItems.Assgign(List);
end; 

Często w formach podrzędnych robię takie o to zabiegi:

Kopiuj
class function TForm4.Exectute(List:TStrings):Boolean;
begin
  with Create(Application) do
  begin
    try
      ListItem.SubItems.Assgign(List);
      Result:=(ShowModal=mrOK);
    finally
      Free;
    end;
  end;
end;
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Tak też zrobiłem i jest ok, dzięki.

Kopiuj
procedure TForm1.Button2Click(Sender: TObject);
begin
 if not Assigned(Form4) then
  begin
    Form4:=TForm4.Create(ListView1);
    Form4.Show;
  end
  else Form4.Show;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
1

Wewnątrz klasy formularza nie trzymaj danych, które do formularza nie należą i nie są zależne od jego poprawnego działania. Nie będziesz musiał kombinwać z dostępem do nich i ich przekazywaniem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.