Odwołanie do elementów formy nadrzędnej

Odpowiedz Nowy wątek
2019-10-10 08:45
0

Witam,
mam utworzonych kilka form A

var
  FormaA: TForm1;

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

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

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.

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

edytowany 4x, ostatnio: cerrato, 2019-10-10 09:14

Pozostało 580 znaków

2019-10-10 09:23
2
implementation uses Form1;

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

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

oraz

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:

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;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 4x, ostatnio: _13th_Dragon, 2019-10-10 09:36
Dziwnie, nie rozumiem czemu inne kolorowanie składnie w pierwszych dwóch a ostatnim fragmencie. - _13th_Dragon 2019-10-10 09:30
czemu inne kolorowanie? W pierwszych dwóch nie masz słów kluczowych, w kolejnych masz i są one zrobione na niebiesko. Ja nie widzę tutaj niczego dziwnego ;) - cerrato 2019-10-10 16:11
W pierwszym, mam słowa kluczowe, też na niebiesko. Ale numeracji wierszy nie ma - _13th_Dragon 2019-10-10 17:56
Numeracja wyświetlana jest przy dłuższych wklejkach. - furious programming 2019-10-10 18:18

Pozostało 580 znaków

2019-10-10 16:09
0

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

procedure TForm1.Button2Click(Sender: TObject);
begin
 if not Assigned(Form4) then
  begin
    Form4:=TForm4.Create(ListView1);
    Form4.Show;
  end
  else Form4.Show;
edytowany 2x, ostatnio: cerrato, 2019-10-10 16:10
Form4.Show; wewnątrz if oraz wewnątrz else - obfuskacja żeby kod zaciemnić? - _13th_Dragon 2019-10-11 01:09

Pozostało 580 znaków

2019-10-10 18:20
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.


edytowany 1x, ostatnio: furious programming, 2019-10-10 18:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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