dalai Skrevet 14. januar 2004 Del Skrevet 14. januar 2004 Jeg forklarer litt nærmere... Jeg har en modal form A, som skal kalle en modal form B. Poenget er at form A skal frigjøres før form B åpnes. Kan jeg gjøre dette i form A uniten? Jeg prøvde å kalle formB på formADestroy, men den stopper jo opp og avventer når man kaller en ny modal form. Og hvis jeg da skal lage en ny instans av form A fra form B igjen på samme måte, så vil jeg få to instanser av form A... kan jeg gjøre dette uten å måte ha en overordnet unit som først frigjør A og lager B? kan jeg gjøre dette i form A uniten? Lenke til kommentar
Format71 Skrevet 14. januar 2004 Del Skrevet 14. januar 2004 Hva er det egentlig du ønsker å få til? Det beste er nok å ha en overordnet unit. som du kaller det, som holder styr på va du øsnker å vise når og hvorfor osv, men det er vanskelig å si så lenge man ikke vet hva du ønsker å oppnå. -Vegar Lenke til kommentar
dalai Skrevet 20. januar 2004 Forfatter Del Skrevet 20. januar 2004 (endret) jeg har en masse modale vinduer som jeg skal vise og som brukerne kan bla frem og tilbake i. men jeg lurer nok på at det du sa er det beste.. Endret 20. januar 2004 av dalai Lenke til kommentar
dalai Skrevet 20. januar 2004 Forfatter Del Skrevet 20. januar 2004 et lite spørsmål til.... da må vel den overordnede uniten ha med alle vinduene jeg skal kalle i sin 'uses' blokk? og spiser ikke dette enormt med minne? jeg har en fem-seks vinduer som skal kalles og alle har inkludert mange units, og inneholder ganske mye komponenter Lenke til kommentar
DidzisK Skrevet 20. januar 2004 Del Skrevet 20. januar 2004 Eneste som skjer når du legger en unit i Uses, er at den overordnede uniten får vite om disse og kan aksessere klasser og objekter der. Og hvis uniten ikke er inkludert i prosjektet, garanterer dette at unit blir kompilert. Dette spiser ikke opp minne, nei. Minnet reserveres kun når du oppretter form. Eksempel: alle dine modale former skal ha 3 knapper med ModalResult mrNo (tilbake), mrYes (fram) og mrCancel (ut) procedure TOverForm1.Button1Click(Sender:TObject); const MAX_FORMS=2; var MR:TModalResult; FormNR:Integer; function ShowForm1:TModalResult; F:TForm1; begin Result:=mrNone; F:=TForm1.Create(Self); try {vi kan selvfølgelig kjøre noe spesialbehandling av forms objekter her} Result:=F.ShowModal; {... og her, når vi vet resultatet} finally F.Free; end; end; function ShowForm2:TModalResult; F:TForm2; begin Result:=mrNone; F:=TForm2.Create(Self); try Result:=F.ShowModal; finally F.Free; end; end; {...osv} begin MR:=mrNone; FormNR:=1; while MR<>mrCancel do begin case FormNR of 1: MR:=ShowForm1; 2: MR:=ShowForm2; {dette kan utvides} end; case MR of mrNO:dec(FormNR); mrYes:inc(FormNR); end; if FormNR<1 then FormNR:=1; if FromNr>MAX_FORMS then FormNR:=MAX_FORMS; end; end; Jeg har ikke kjørt dette, så det kan være feil i koden, men jeg tror dette illustrerer hvordan du kan bla frem og tilbake mellom modale former. Til enhver tid eksisterer kun 1 modal form, så andre spiser ikke noe minne. Lenke til kommentar
kilogram Skrevet 20. januar 2004 Del Skrevet 20. januar 2004 Du kan fint vise ein ny modal form, sjølv frå den modale formen som allereie køyrer. Dersom du vil gjere dette, er det berre å setje ModalResult := mrOK; rett før du kallar på den andre formen; Plasser dette i t.d. FormA.OnClose; ModalResult := mrOK; FormB.ShowModal; Du må sjølvsagt setje ModalResult til den verdien som tilsvarer knappen som vart trykt på. Du bør kanskje heller ikkje plassere denne i OnClose, men på t.d. OK og Cancel-knappar som finns på FormA. Lenke til kommentar
dalai Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 veldig nyttig opplysning kilogram! takker så meget for den siste posten din Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå