[Delphi] Form reset

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • Tryharder
  • Registratie: April 2002
  • Laatst online: 17-08 17:00
Ik wil graag een form als het ware "resetten".

Bijvoorbeeld: ik heb een form met editboxjes, die door de gebruiker worden ingevuld.
Dit form wordt gesloten.
De gebruiker wilt later nog eens dat form hebben, uiteraard leeg.

Ik gebruik op dit moment alleen de visible-property.

Volgens mij is dit heel simpel op te lossen, geen idee hoe.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Wat bedoel je eigenlijk?
Dat je die form nog eens terug wilt hebben maar waarvan de edit-boxjes enzo niet ingevuld zijn?

Creeër dan gewoon een instance van die TForm en toon hem...

https://fgheysels.github.io/


Verwijderd

M.b.v.
code:
1
Application.CreateForm(TForm1, Form1);

Zal je formulier worden gecreëerd. Aangezien het formulier al is gecreëerd zal deze worden vrijgegeven aangezien Form1 zijn pointer verliest naar het bestaande TForm1 instance.
Hierdoor reset je als het ware het formulier. Vervolgens kun je met Form1.Show/Visible:=True; het betreffende formulier tonen.

Wat echter een veel nettere methode is imho is bijv. het volgende voorbeeld:
frmMain: bevat listbox met items en een knop bewerken.
Bij de OnClick van de bewerken knop hangt de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfrmMain.btnEditClick(Sender: TObject);
begin
  with TfrmEdit.Create(Application) do
  try
    // Initialisatie code
    if ShowModal=mrOk then
    // Ok geklikt dus er is gewijzigd!
  finally
    Release;
  end;
end;
end;

Iedere keer als je nu op de bewerken-knop klikt zal het bewerken formulier gereset getoond worden.

  • Tryharder
  • Registratie: April 2002
  • Laatst online: 17-08 17:00
Ik heb het gevonden:

Eerst het form releasen:
Form1.Release;

Dan het form opnieuw maken:
Application.CreateForm(Tform1, form1);

En vervolgens het form zichtbaar maken:
Form1.Visible := True;

thnx.

  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
ja inderdaad dat is een hele goede manier,,, vergeet dan niet op bij je projectsource ook de application.createform weg te halen. Deze wordt namelijk standaard er in gezet bij het aanamekn van het form in je project. Bij het runnen van je exe wordt dan al het form aangemaakt.

Vervolgens moet je om het form te starten application.createform (?,?) gebruiken en dan
?.show;

in het form kun je dan de oncreate methode gebruiken om alle knopje en editboxes etc. op de standaard waarden te zetten en op het form een knopje met sluiten te maken en daarin ?.release

Vergeet ook niet in de onclose event jouw buttonclick event aan te roepen, anders krijg je later last met acces-violations

Ik hoop dat je enigszins duidelijk geworden is

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb