Avatar billede thomas55 Nybegynder
28. maj 2000 - 18:52 Der er 13 kommentarer

I starten af program, form oven på form ??!

Hej!

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 :)
Avatar billede denniss Nybegynder
28. maj 2000 - 19:01 #1
Prøv at lave en new... vælg projects... vælg mdi application....

indsæt følgende i onshow for form1...
så den ser sådan ud:

procedure TMainForm.FormShow(Sender: TObject);
begin
  AboutBox.ShowModal;
end;

kør programmet.. og se hvad der sker.

Avatar billede thomas55 Nybegynder
28. maj 2000 - 19:08 #2
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
Avatar billede borrisholt Novice
28. maj 2000 - 19:08 #3
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;

Jens B
Avatar billede denniss Nybegynder
28. maj 2000 - 19:12 #4
præcis borrisholt....

bare husk at sætte din form2 ind i sin uses liste
Avatar billede thomas55 Nybegynder
28. maj 2000 - 19:13 #5
.. 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 :)
Avatar billede thomas55 Nybegynder
28. maj 2000 - 19:16 #6
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?
Avatar billede denniss Nybegynder
28. maj 2000 - 19:29 #7
okey:
1: use passwordform, welcomeform
 
  mainform.onshow:
  passwordform.showmodal (el. bare show)
  welcomeform.showmodal (el. bare show)

Avatar billede thomas55 Nybegynder
28. maj 2000 - 19:45 #8
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
Avatar billede sjensen Nybegynder
29. maj 2000 - 10:47 #9
Prøv dette:

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.
Avatar billede borrisholt Novice
01. juni 2000 - 18:18 #10
Hej Thomas

Skulle der hele blive dig for kompliceret, vil jeg meget gerne lave dig et eksempel.

Jens B
Avatar billede hh2318 Nybegynder
02. juni 2000 - 20:44 #11
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
Avatar billede hh2318 Nybegynder
02. juni 2000 - 20:56 #12
Du kan også åbne dit program i menu panelen add new form

derved creater du også nye unit

dem tilføjer du under

uses
unit2;  // form2

og kalder formen ved

form2:= Tform2.create(application);
form2.showModal;
Form2.free;

Håber det kan bruges

Avatar billede sjensen Nybegynder
22. juni 2000 - 14:30 #13
vedr. hh2318's sidste indlæg:

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);

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