Avatar billede io.h Nybegynder
22. januar 2002 - 14:55 Der er 11 kommentarer og
1 løsning

Forms m.m.

Hvordan opretter jeg forms mens programmet kører, og hvordan kan jeg løbende kommunikere med hver form individiuelt?

F.eks. har jeg en bestemt form (f.eks. TMain)som skal åbnes hver gang jeg trykker på nogle knapper - men alt efter hvad der sker, skal der tilføjes noget bestemt i nogle memo's på de forskellige forms..

Så hvordan viser jeg den samme form flere gange, holder styr på dem og kan bestemme hvad der skal tilføjes i et memo på hver form? Evt. via et ID system?
Avatar billede martinlind Nybegynder
22. januar 2002 - 15:03 #1
MyForm := TMain.Create(NIL);

Du kan evt. lægge dine MyForm's variabler i en TObjectList

Du kan kommunikere med messages som du sender til formens handle
Avatar billede martinlind Nybegynder
22. januar 2002 - 15:04 #2
MyList : TObjectList;

begin
  MyList := TObjectList.Create;
  MyList.Add(TMain.Create(NIL));
end;

/Martin
Avatar billede io.h Nybegynder
22. januar 2002 - 15:10 #3
Den fik jeg ikke helt fat i... er ikke så stærk i delphi.
Desuden melder min Delphi 5 om at den ikke kan genkende TObjectList....
Avatar billede martinlind Nybegynder
22. januar 2002 - 18:33 #4
Så bruger du bare en Tstringlist i stedet for

MyList : TStringList;
Cnt : Integer;

begin
  MyList := TStringList.Create;
  MyList.AddObject('',TMain.Create(NIL));
  MyList.AddObject('',TMain.Create(NIL));
  MyList.AddObject('',TMain.Create(NIL));
  MyList.AddObject('',TMain.Create(NIL));

  for Cnt := 0 to MyList.Count-1 do
  TForm(MyList.Objects[Cnt]).Show;

end;

Hjalp det ??
Avatar billede io.h Nybegynder
22. januar 2002 - 22:00 #5
Hvis vi nu siger jeg har en Edit1 på alle TMain's

for Cnt := 0 to MyList.Count-1 do
  begin
  TForm(MyList.Objects[Cnt]).Show;
  TForm(MyList.Objects[Cnt]).Edit1.text := StrToInt(Cnt);
end

Hvis jeg skulle gøre det her - hvad skulle jeg så gøre?
Avatar billede io.h Nybegynder
22. januar 2002 - 22:02 #6
Hov.. Det skulle have været IntToStr..
Avatar billede martinlind Nybegynder
23. januar 2002 - 09:50 #7
Det skulle du kunne !
Avatar billede io.h Nybegynder
23. januar 2002 - 10:16 #8
Den melder at Edit1 er ukendt?
Jeg prøver lige igen...
Avatar billede martinlind Nybegynder
23. januar 2002 - 10:20 #9
ja, selvfølgelig, min fejl, du skal gøre sådan

TMain(MyList.Objects[Cnt]).Edit1.text := StrToInt(Cnt);

og ikke sådan

TForm(MyList.Objects[Cnt]).Edit1.text := StrToInt(Cnt);

TForm har jo ikke en Edit1

/Martin
Avatar billede io.h Nybegynder
23. januar 2002 - 10:20 #10
nope...

[Error] Unit1.pas(43): Undeclared identifier: 'Edit1'
Avatar billede io.h Nybegynder
23. januar 2002 - 10:21 #11
takker :) nu virker det :)
Avatar billede martinlind Nybegynder
23. januar 2002 - 10:25 #12
Selv tak !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester