Avatar billede blomme Nybegynder
14. januar 2001 - 11:25 Der er 11 kommentarer og
1 løsning

MDI-child uafhængigt af form\'en

Hej ;)

Jeg står i den paradoxale situation at jeg simpelthen skal bruge en mdi-child-form, som ligger og flyder på desktoppen, præcis som Delphi\'s forms\' gør det. Hvis det ikke kan lade sig gøre med mdi-childs, så håber jeg at nogen vil forklare mig hvordan man kan få en almindelig form til at opføre sig som en mdi-child og sådan :)))

På forhånd, tak !
Avatar billede pstric Nybegynder
14. januar 2001 - 11:29 #1
FormStyle := fsMDIChild;

Delphi bruger ikke MDI
Avatar billede blomme Nybegynder
14. januar 2001 - 13:36 #2
Hej Pstric :)

Lad mig lige starte med at sige: Jeg er _ikke_ grøn... derefter kunne jeg godt tænke mig at fremstille problemet lidt mere tydeligt:
Jeg har to forms - en mdiform og et mdichild. Nu vil jeg så have childet til at fungere ligesom et normalt child, dog med den undtagelse at den skal kunne flyde frit på skærmen, nogenlunde som kodevinduet i Delphi gør det (ligegyldigt om det er mdi eller ej)
Avatar billede pstric Nybegynder
14. januar 2001 - 13:56 #3
Undskyld, det er nok mig der er tung i hovedet ;-)

Drejer det sig om, at din applikation under alle omstændigheder skal være en MDI applikation, evt. fordi du har lavet resten af applikationen som MDI, eller er det ikke noget ultimativt krav. (Jeg har læst den sidste parantes i din kommentar, men jeg er stadigvæk i tvivl.)

Eller må din applikation gerne være en SDI applikation som Delphi, hvor du bare vil sætte begrænsninger på, hvor stor formen bliver når den maksimeres (det er den eneste ting, jeg umiddelbart kan se, er specielt ved editoren i Delphi)?
Avatar billede blomme Nybegynder
14. januar 2001 - 14:08 #4
Hvis man nu forestiller sig at min mainform er ligmed delphi\'s menubar hvor menuen og komponentbaren ligger. Så vil jeg simpelthen have et mdi-child til at lægge sig på skærmen, ligesom bla. object inspectoren og kode-vinduet gør det i Delphi. Jeg vil altså IKKE have mit mdi-child til at ligge INDEN for formens fire vægge, men frit flydende på skærmen. Grunden til at jeg vil bruge mdi er nok at med mdi kan jeg nemt styre mange forskellige forms på en gang uden at noget går kuk :)))
Avatar billede pstric Nybegynder
14. januar 2001 - 14:13 #5
Det, du vil gøre, kan du ikke bruge MDI til.

http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/winui/mdocint_6crp.htm fortæller lidt mere om, hvad MDI går ud på. Bl.a. står der:

Each document in an MDI application is displayed in a separate child window within the client area of the application\'s main window.

Jeg har selv prøvet at arbejde med MDI og tro mig, det er bestemt ikke let på grund af den restriktive opbygning.
Avatar billede blomme Nybegynder
14. januar 2001 - 14:14 #6
Hmmm... du skulle vel ikke have et forslag til hvordan jeg kan løse problemet UDEN mdi, så ?
Avatar billede pstric Nybegynder
14. januar 2001 - 14:26 #7
Brug to forme. Der er ikke noget specielt ved Delphi\'s Main-form.

Jeg er ikke sikker på, at det er det svar du søger, men ellers må du lige specificere, hvad det er, du mener.
Avatar billede blomme Nybegynder
14. januar 2001 - 14:31 #8
Kan jeg bruge noget andet, som flyder ligesom en almindelig (fsnormal) form, men som også kan behandles ligesom et mdi-child, dvs. at der kan laves lige så mange brugeren ønsker det og at een enkelt kode kan gælde for dem alle sammen...
Avatar billede pstric Nybegynder
14. januar 2001 - 14:37 #9
Du kan til enhver tid oprette flere forekomster af en form. (Med mindre der er et eller andet specielt der umuliggør det).

I stedet for at gemme referencen til formen i den globale variabel, Delphi opretter (var Form1: TForm1), så kan du gemme dem i f.eks. en TList.
Avatar billede blomme Nybegynder
14. januar 2001 - 15:16 #10
Nu har jeg accepteret, men hesiterer ikke med at spørge videre. Hvordan kan man oprette flere forekomster af en form uden at være nødt til at create den i _fuld_ kode uden noget hjælp fra Delphi\'s udemærkede design-ting ?
Avatar billede pstric Nybegynder
14. januar 2001 - 15:30 #11
var
  MyForms: TList;

MyForms := TList.Create;
for I := 0 to 99 do
  MyForms.Add(TForm1.Create(nil));
Avatar billede blomme Nybegynder
14. januar 2001 - 15:36 #12
Tak for hjælpen, psTric :)))
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