Jeg har et program, hvor jeg gerne vil have en form oven på en anden form. Altså når man starter programmet, ska den poppe op med en form hvor der f.eks ska stå ADVARSEL (ikke en msgbox) og så ka man trykke OK også kommer den virkelige form. Nogle der ka hjælpe? Jeg sidder nemlig ret fast :)
Ok, men så er problemet bare at jeg allerede HAR lavet formen som den ska vise! Hvordan får jeg den til at vise lige præsis DEN i starten af programmet, og trykker man så ok, så lukker den ned og man ser programmet .. men formen ska stadig være "oven på" den rigtige form .. ligsom når man trykker ABOUT i et program
Behøver ikke at være en mdi application. Det kan også bruges i et alm.projekt, som det jeg viste dig i går med to forms. Så i stedet for at skrive form2.show; skrives form2.showmodal;
.. Ok, her er hvordan mit program er opbygget, altså i rækkefølge : 1. Skriv dit password, 2. Så kommer main formen, og det er der hvor en "Welcome" screen ska vises .. ovenpå selve main formen .. men den ska ikke dække helt ... Hvis i forstår hva jeg mener :)
Hmm, er ikke sikker på jeg forstår?!?! Behøver jeg lave noget showmodal! Ka jeg ik bare "sige" til Delphi at først ska password formen vises, derefter main formen, og når man kommer ind i main formen, så vises den der welcome screen ?? Det burde ik være så svært at lave vel?
Hmm .. Jeg forstår stadig ikke :( .. beklager, jeg vil ikke være til besvær .. MEn hvis du (Denniss) nu fik den source code jeg havde, gad du så "adde" sån at den gjorde det ? Du må godt få alle mine points hvis du gider :) ... hvis du har icq så : 63490923
1. Lav en form1 (main form) 2. Lav en form2 (passwordform) 3. lav en form3 (velkomstform)
I mainform, i formshow starter du med at kalde form2 (passwordformen) og hvis password godkendes returnerer du mrOK ellers returnerer du mrCancel. i mainform sætter du 2 timere (med active = false) og interval = 10 i timer1 og = 100 i timer2. Samtidig laver du en timerevent der sætter timer1.active = false og laver en close for timer1 og en tilsvarende timerevent for timer 2 der sætter timer2.active = false og kalder from3. Hvis du får mrOK tilbage fra password fortsætter du og hvis du får mrCancel tilbage aktiverer du timer1 og exitter. Hvis password er aktiverer du timer2, der kalder form3, efter at den har vist mainform og i form3's formshow aktiverer du en timer med et interval svarende til det antal sekunder du vil have vist formen, samt en OK knap brugeren kan trykke på for ikke at skulle vente på at tiden udløber:
Form1 = Mainform:
procedure tform1.formshow(.. begin if form2.showmodal = mrCancel then // password er ikke godkendt begin timer1.active := true; exit; end; // ok password godkendt vis velkomst timer2.active := true; end;
procedure Tform1.timer1timer(... begin active := false; close; end;
procedure Tform1.timer2timer(... begin active := false; form3.showmodal; end;
form2 = Passwordform: (et editfelt og en OK og en Cancelknap) NB! Sæt OK knappens modalresult til NONE og cancelknappens til MrCancel
procedure Tform2.OkClick(... begin if edit1.text = godkendt_password then begin modalresult := mrOK; end else begin modalresult := mrCancel; end; end;
form3 = velkomstskærm.
procedure Tform3.formshow; begin timer1.active := true; // sat til f.eks. 5 sekunder (5000 i interval) end;
procedure tform3.timer1timer(... begin active := false; close; end;
procedure tform3.okclick(... begin timer1.active := false; close; end;
Bemærk:
Fordi du kalder form2 før mainforms formshow er afsluttet vises form2 før form1. Form1 (mainform) vises først efter at form2 er afsluttet.
Ved at bruge en timer til at aktivere form3 bliver form1's formshow afsluttet først og formen vist inden form3 (velkomstsformen) kommer frem på skærmen.
Jeg håber du kan forstå hvad jeg mener, og ellers må du skrive igen.
Hvis det bare er for, at lave en forside til dit program kan du også med fordel bruge en groupbox, sætte caption til tom og align til alClient i objekt inspector, når du så vil til en anden side sætter du bare groupbox.visible:= false
Rigtigt, men husk så at fjerne form2 fra autocreate i projectets oversigt over forms. Se Project, options, forms. Der skal du flytte formnavnet fra venstre side over i højre. Ellers vil din Form2's createmetode kun blive kaldt når du starter dit program, og ikke når du kalder create med form2:= Tform2.create(application);
Synes godt om
Ny brugerNybegynder
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.