Czysta nowa forma po kliknięciu na button

0

czy da się coś takiego zrobic że powiedzmy mam na formie TMemo, label i button a po kliknięciu na ten button cała forma była inna i np. na niej było tylko RichEdit?????????

0
lukaszkg napisał(a)

czy da się coś takiego zrobic że powiedzmy mam na formie TMemo, label i button a po kliknięciu na ten button cała forma była inna i np. na niej było tylko RichEdit?????????

Jeżeli jest 1 RichEdit na formie to wystarczy tylko:

var
  i: integer;
begin
  for i:= ComponentCount -1 downto 0 do
  begin
    if not (Form1.Components[i] is TRichEdit) then
    begin
      Form1.Components[i].Free;
    end;
  end;
end;

Wszystkie komponenty zostaną zwolnione oprócz RichEdit
Jeżeli nie ma RichEdit na Formie to zwalniasz wszystkie komponenty:

  while ComponentCount > 1 do
    Components[0].Free;

A póżniej dynamicznie tworzysz RichEdit:
EDIT// na wszelki wypadek podam jak:
w sekcji private deklarujesz sobie zmieną RichEdit: TRichEdit a to kod potrzebny do utworzenia RichEdit:

 RichEdit:= TRichEdit.Create(Self);
  RichEdit.Parent:= Self;
  RichEdit.Top:= 10;
  RichEdit.Left:= 10;
  RichEdit.Width:= 300;
  RichEdit.Height:= 300;

A został jeszcze przypadek gdy na formie jest wiecej RichEdit wtedy ustawiasz sobie parmaetr Tag komponentu RichEdit który ma zostać np. na 1 i sprawdzasz:

var
  i: integer;
begin
  for i:= ComponentCount -1 downto 0 do
  begin
    if not (Components[i] is TRichEdit) then
    begin
      Components[i].Free;
    end
    else
    begin
      if Components[i].Tag <> 1 then
        Components[i].Free;
    end;
  end;
end;

Mam nadzieję że to wystarczy :)

0

Dwa sposoby:

  1. Manewrujesz odpowiednio właściwościami Visible dla komponentów na formie
  2. Dajesz Form1.Hide; Form2.Show;
    Oczywiście są to dwa zapewne z wielu różnych rozwiązań, ale oba działają.
0
Adam.Pilorz napisał(a)

Dwa sposoby:

  1. Manewrujesz odpowiednio właściwościami Visible dla komponentów na formie
  2. Dajesz Form1.Hide; Form2.Show;
    Oczywiście są to dwa zapewne z wielu różnych rozwiązań, ale oba działają.

No włąsnie ja napisałam jak całkowicie wywalić kontrolki, ale mozesz w ten sam sposób zmieniac własciwosc Visible aby uktyc niepotrzebne kontrolki
EDIT//
Zapomniałem musisz jeszcze sprawdzic czy komponent jest TWinControl aby nie wywalic/ukryc (zalezy jaki kod zastosujesz) innych komponentow np.:

  for i:= ComponentCount -1 downto 0 do
  begin
    if (Components[i] is TWinControl) then
      TWinControl(Components[i]).Visible:= False;
  end;

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