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?????????
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 :)
Dwa sposoby:
- Manewrujesz odpowiednio właściwościami Visible dla komponentów na formie
- Dajesz Form1.Hide; Form2.Show;
Oczywiście są to dwa zapewne z wielu różnych rozwiązań, ale oba działają.
Adam.Pilorz napisał(a)
Dwa sposoby:
- Manewrujesz odpowiednio właściwościami Visible dla komponentów na formie
- 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;