/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
MDI forms
Fra : Ukendt


Dato : 22-04-06 13:27

Hej.

Jeg har lidt problemer med oprettelse af en MDI-application.

Jeg har et par få forskellige MDIChild forms, som man kan vælge imellem.
(Jeg har kun lavet den ene pt.)

Jeg har læst opskriften fra "Teach yourself Borland Delphi 4 in 21 days" og
rettet den lidt. Meningen er, at man ved at klikke på menuen, kan åbne
Child-formen.

Der er 3 problemer:

1. I øjeblikket ER child formen allerede åbnet ved programstart. Det skal
den ikke være som udgangspunkt.
2. Når jeg forsøger at lukke Child formen (oppe i krydset) så minimerer den
blot og ligger nederst i MDI main formen
3. Lige netop denne Child form skal kun kunne vises en gang (ad gangen):
Dvs. hvis denne form allerede er åbnet, så skal der ikke åbnes flere, idet
den fungerer som en form for undermenu.

Er der en venlig sjæl, der vil give lidt hints til mine 3 problemer herover:

På forhånd tak.



 
 
Ukendt (22-04-2006)
Kommentar
Fra : Ukendt


Dato : 22-04-06 13:33

"KentN" <.> skrev i en meddelelse
news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...
> Hej.
>
> Jeg har lidt problemer med oprettelse af en MDI-application.
>
> Jeg har et par få forskellige MDIChild forms, som man kan vælge imellem.
> (Jeg har kun lavet den ene pt.)
>
> Jeg har læst opskriften fra "Teach yourself Borland Delphi 4 in 21 days"
> og rettet den lidt. Meningen er, at man ved at klikke på menuen, kan åbne
> Child-formen.
>
> Der er 3 problemer:
>
> 1. I øjeblikket ER child formen allerede åbnet ved programstart. Det skal
> den ikke være som udgangspunkt.
> 2. Når jeg forsøger at lukke Child formen (oppe i krydset) så minimerer
> den blot og ligger nederst i MDI main formen
> 3. Lige netop denne Child form skal kun kunne vises en gang (ad gangen):
> Dvs. hvis denne form allerede er åbnet, så skal der ikke åbnes flere, idet
> den fungerer som en form for undermenu.
>
> Er der en venlig sjæl, der vil give lidt hints til mine 3 problemer
> herover:

Jeg kan lige supplere med min kode:

Jeg har sat min hovedforms formstyle til fsMDIform og min menuform til
fxMDIChild

i min hovedform har jeg skrevet følgende kode

procedure THovedform.Hovedmenu1Click(Sender: TObject);
var
Hovedmenu: TFormHovedmenu;
begin
Hovedmenu:= TFormHovedmenu.Create(self);
Hovedmenu.Show;
end;



Harald (26-04-2006)
Kommentar
Fra : Harald


Dato : 26-04-06 21:27

"KentN" <.> skrev i en meddelelse
news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...
> Hej.
>
> Jeg har lidt problemer med oprettelse af en MDI-application.
>
> Jeg har et par få forskellige MDIChild forms, som man kan vælge imellem.
> (Jeg har kun lavet den ene pt.)
>
> Jeg har læst opskriften fra "Teach yourself Borland Delphi 4 in 21 days"
> og rettet den lidt. Meningen er, at man ved at klikke på menuen, kan åbne
> Child-formen.
>
> Der er 3 problemer:
>
> 1. I øjeblikket ER child formen allerede åbnet ved programstart. Det skal
> den ikke være som udgangspunkt.
> 2. Når jeg forsøger at lukke Child formen (oppe i krydset) så minimerer
> den blot og ligger nederst i MDI main formen
> 3. Lige netop denne Child form skal kun kunne vises en gang (ad gangen):
> Dvs. hvis denne form allerede er åbnet, så skal der ikke åbnes flere, idet
> den fungerer som en form for undermenu.
>
> Er der en venlig sjæl, der vil give lidt hints til mine 3 problemer
> herover:

Form1 er MDIForm og Form2 er MDIChild:
Start med at fjerne Application.CreateForm(TForm2, Form2); fra fpr filen.
For at vise Form2 skriver du i Form1:
if Form2=nil then
Application.CreateForm(TForm2, Form2);
Form2.Show;

I Form2´s OnClose skriver du:
Action:=caFree;

I Form2´s OnDestroy skriver du:
Form2:=nil;

Jeg plejer at lave en MDIChild grund form som jeg bla. putter
Action:=caFree; ind i og alle andre MDIChild´s arver så fra denne grundform,
OnDestroy skal laves for hver enkelt MDIChild.

/HK



Ukendt (30-04-2006)
Kommentar
Fra : Ukendt


Dato : 30-04-06 18:55


"Harald" <nomail@noname.dk> skrev i en meddelelse
news:444fd7ab$0$84016$edfadb0f@dtext01.news.tele.dk...
> "KentN" <.> skrev i en meddelelse
> news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...
>> Hej.
>>
>> Jeg har lidt problemer med oprettelse af en MDI-application.
>>
>> Jeg har et par få forskellige MDIChild forms, som man kan vælge imellem.
>> (Jeg har kun lavet den ene pt.)
>>
>> Jeg har læst opskriften fra "Teach yourself Borland Delphi 4 in 21 days"
>> og rettet den lidt. Meningen er, at man ved at klikke på menuen, kan åbne
>> Child-formen.
>>
>> Der er 3 problemer:
>>
>> 1. I øjeblikket ER child formen allerede åbnet ved programstart. Det skal
>> den ikke være som udgangspunkt.
>> 2. Når jeg forsøger at lukke Child formen (oppe i krydset) så minimerer
>> den blot og ligger nederst i MDI main formen
>> 3. Lige netop denne Child form skal kun kunne vises en gang (ad gangen):
>> Dvs. hvis denne form allerede er åbnet, så skal der ikke åbnes flere,
>> idet den fungerer som en form for undermenu.
>>
>> Er der en venlig sjæl, der vil give lidt hints til mine 3 problemer
>> herover:
>
> Form1 er MDIForm og Form2 er MDIChild:
> Start med at fjerne Application.CreateForm(TForm2, Form2); fra fpr filen.
> For at vise Form2 skriver du i Form1:
> if Form2=nil then
> Application.CreateForm(TForm2, Form2);
> Form2.Show;

Hvad er forskellen egentlig på din og min kode (som jeg har lånt fra
nettet). (de virker IKKE ens, idet min ikke virker efter hensigten med kun
at kunne oprette een child form)

procedure TformMain.Button1Click(Sender: TObject);
var
Info: TFormInfo;
begin
If formInfo = nil then
Info:= TFormInfo.Create(self);
Info.Show;
end;

> I Form2´s OnClose skriver du:
> Action:=caFree;
>
> I Form2´s OnDestroy skriver du:
> Form2:=nil;
>
> Jeg plejer at lave en MDIChild grund form som jeg bla. putter
> Action:=caFree; ind i og alle andre MDIChild´s arver så fra denne
> grundform, OnDestroy skal laves for hver enkelt MDIChild.

Jeg har i øvrigt et pisse irriterende problem.

Jeg har et panel og nogle kanpper på min main form.

Når jeg åbner min Child form, så er det selvfølgelig meningen, at den skal
ligge øverst. Men mine paneler og knapper overskygger min child form,
hvilket ikke er hensigtsmæssigt eller smart.

Det burde end ikke være normalt, vil jeg mene. Men hvordan klares den nød?



Harald (30-04-2006)
Kommentar
Fra : Harald


Dato : 30-04-06 20:34

"KentN" <.> skrev i en meddelelse
news:4454f9df$0$10505$ba624c82@nntp02.dk.telia.net...
>
> "Harald" <nomail@noname.dk> skrev i en meddelelse
> news:444fd7ab$0$84016$edfadb0f@dtext01.news.tele.dk...
>> "KentN" <.> skrev i en meddelelse
>> news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...

<klip>

>> Form1 er MDIForm og Form2 er MDIChild:
>> Start med at fjerne Application.CreateForm(TForm2, Form2); fra fpr filen.
>> For at vise Form2 skriver du i Form1:
>> if Form2=nil then
>> Application.CreateForm(TForm2, Form2);
>> Form2.Show;
>
> Hvad er forskellen egentlig på din og min kode (som jeg har lånt fra
> nettet). (de virker IKKE ens, idet min ikke virker efter hensigten med kun
> at kunne oprette een child form)
>
> procedure TformMain.Button1Click(Sender: TObject);
> var
> Info: TFormInfo;
> begin
> If formInfo = nil then
> Info:= TFormInfo.Create(self);
> Info.Show;
> end;

Du må ikke bruge en lokal variable.

>> I Form2´s OnClose skriver du:
>> Action:=caFree;
>>
>> I Form2´s OnDestroy skriver du:
>> Form2:=nil;
>>
>> Jeg plejer at lave en MDIChild grund form som jeg bla. putter
>> Action:=caFree; ind i og alle andre MDIChild´s arver så fra denne
>> grundform, OnDestroy skal laves for hver enkelt MDIChild.
>
> Jeg har i øvrigt et pisse irriterende problem.
>
> Jeg har et panel og nogle kanpper på min main form.
>
> Når jeg åbner min Child form, så er det selvfølgelig meningen, at den skal
> ligge øverst. Men mine paneler og knapper overskygger min child form,
> hvilket ikke er hensigtsmæssigt eller smart.
>
> Det burde end ikke være normalt, vil jeg mene. Men hvordan klares den nød?

Jeg ved ikke om der findes en anden løsning end at lade være med at bruge
paneler.

/HK



Ukendt (30-04-2006)
Kommentar
Fra : Ukendt


Dato : 30-04-06 21:19

"Harald" <nomail@noname.dk> skrev i en meddelelse
news:44551144$0$84027$edfadb0f@dtext01.news.tele.dk...
> "KentN" <.> skrev i en meddelelse
> news:4454f9df$0$10505$ba624c82@nntp02.dk.telia.net...
>>
>> "Harald" <nomail@noname.dk> skrev i en meddelelse
>> news:444fd7ab$0$84016$edfadb0f@dtext01.news.tele.dk...
>>> "KentN" <.> skrev i en meddelelse
>>> news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...
>
> <klip>
>
>>> Form1 er MDIForm og Form2 er MDIChild:
>>> Start med at fjerne Application.CreateForm(TForm2, Form2); fra fpr
>>> filen.
>>> For at vise Form2 skriver du i Form1:
>>> if Form2=nil then
>>> Application.CreateForm(TForm2, Form2);
>>> Form2.Show;
>>
>> Hvad er forskellen egentlig på din og min kode (som jeg har lånt fra
>> nettet). (de virker IKKE ens, idet min ikke virker efter hensigten med
>> kun at kunne oprette een child form)
>>
>> procedure TformMain.Button1Click(Sender: TObject);
>> var
>> Info: TFormInfo;
>> begin
>> If formInfo = nil then
>> Info:= TFormInfo.Create(self);
>> Info.Show;
>> end;
>
> Du må ikke bruge en lokal variable.

Det gælder formentligt kun i det tilgælde, hvor jeg ønsker at tjekke, om
Child formen eksisterer i forvejen, idet min bog om Delphi anvender
ovenstående kode..

>>> I Form2´s OnClose skriver du:
>>> Action:=caFree;
>>>
>>> I Form2´s OnDestroy skriver du:
>>> Form2:=nil;
>>>
>>> Jeg plejer at lave en MDIChild grund form som jeg bla. putter
>>> Action:=caFree; ind i og alle andre MDIChild´s arver så fra denne
>>> grundform, OnDestroy skal laves for hver enkelt MDIChild.
>>
>> Jeg har i øvrigt et pisse irriterende problem.
>>
>> Jeg har et panel og nogle kanpper på min main form.
>>
>> Når jeg åbner min Child form, så er det selvfølgelig meningen, at den
>> skal ligge øverst. Men mine paneler og knapper overskygger min child
>> form, hvilket ikke er hensigtsmæssigt eller smart.
>>
>> Det burde end ikke være normalt, vil jeg mene. Men hvordan klares den
>> nød?
>
> Jeg ved ikke om der findes en anden løsning end at lade være med at bruge
> paneler.

Det gælder også knapper mv. Det er lidt svært at undgå at have paneler,
knapper mv. på en form. Desværre. Håber andre har en løsning.



Harald (30-04-2006)
Kommentar
Fra : Harald


Dato : 30-04-06 23:18

"KentN" <.> skrev i en meddelelse
news:44551bb4$0$12399$ba624c82@nntp02.dk.telia.net...
> "Harald" <nomail@noname.dk> skrev i en meddelelse
> news:44551144$0$84027$edfadb0f@dtext01.news.tele.dk...
>> "KentN" <.> skrev i en meddelelse
>> news:4454f9df$0$10505$ba624c82@nntp02.dk.telia.net...
>>>
>>> "Harald" <nomail@noname.dk> skrev i en meddelelse
>>> news:444fd7ab$0$84016$edfadb0f@dtext01.news.tele.dk...
>>>> "KentN" <.> skrev i en meddelelse
>>>> news:444a20f1$0$9301$ba624c82@nntp02.dk.telia.net...
>>
>> <klip>
>>
>>>> Form1 er MDIForm og Form2 er MDIChild:
>>>> Start med at fjerne Application.CreateForm(TForm2, Form2); fra fpr
>>>> filen.
>>>> For at vise Form2 skriver du i Form1:
>>>> if Form2=nil then
>>>> Application.CreateForm(TForm2, Form2);
>>>> Form2.Show;
>>>
>>> Hvad er forskellen egentlig på din og min kode (som jeg har lånt fra
>>> nettet). (de virker IKKE ens, idet min ikke virker efter hensigten med
>>> kun at kunne oprette een child form)
>>>
>>> procedure TformMain.Button1Click(Sender: TObject);
>>> var
>>> Info: TFormInfo;
>>> begin
>>> If formInfo = nil then
>>> Info:= TFormInfo.Create(self);
>>> Info.Show;
>>> end;
>>
>> Du må ikke bruge en lokal variable.
>
> Det gælder formentligt kun i det tilgælde, hvor jeg ønsker at tjekke, om
> Child formen eksisterer i forvejen, idet min bog om Delphi anvender
> ovenstående kode..
>
>>>> I Form2´s OnClose skriver du:
>>>> Action:=caFree;
>>>>
>>>> I Form2´s OnDestroy skriver du:
>>>> Form2:=nil;
>>>>
>>>> Jeg plejer at lave en MDIChild grund form som jeg bla. putter
>>>> Action:=caFree; ind i og alle andre MDIChild´s arver så fra denne
>>>> grundform, OnDestroy skal laves for hver enkelt MDIChild.
>>>
>>> Jeg har i øvrigt et pisse irriterende problem.
>>>
>>> Jeg har et panel og nogle kanpper på min main form.
>>>
>>> Når jeg åbner min Child form, så er det selvfølgelig meningen, at den
>>> skal ligge øverst. Men mine paneler og knapper overskygger min child
>>> form, hvilket ikke er hensigtsmæssigt eller smart.
>>>
>>> Det burde end ikke være normalt, vil jeg mene. Men hvordan klares den
>>> nød?
>>
>> Jeg ved ikke om der findes en anden løsning end at lade være med at bruge
>> paneler.
>
> Det gælder også knapper mv. Det er lidt svært at undgå at have paneler,
> knapper mv. på en form. Desværre. Håber andre har en løsning.

Hvad med f.eks. en TCoolBar som er lavet til den slags.

/HK



Ukendt (01-05-2006)
Kommentar
Fra : Ukendt


Dato : 01-05-06 13:01

"Harald" <nomail@noname.dk> skrev i en meddelelse
news:445537ab$0$84013$edfadb0f@dtext01.news.tele.dk...

> Hvad med f.eks. en TCoolBar som er lavet til den slags.

Nej, du misforstår mig. Det er ikke en CoolBar-lignende ting, som jeg ønsker
have placeret.

Det er mere i retning af en ganske almindelig knap (TButton) placeret fx
nederst eller midt på en form.



Harald (01-05-2006)
Kommentar
Fra : Harald


Dato : 01-05-06 13:18

"KentN" <.> skrev i en meddelelse
news:4455f85f$0$10871$ba624c82@nntp02.dk.telia.net...
> "Harald" <nomail@noname.dk> skrev i en meddelelse
> news:445537ab$0$84013$edfadb0f@dtext01.news.tele.dk...
>
>> Hvad med f.eks. en TCoolBar som er lavet til den slags.
>
> Nej, du misforstår mig. Det er ikke en CoolBar-lignende ting, som jeg
> ønsker have placeret.
>
> Det er mere i retning af en ganske almindelig knap (TButton) placeret fx
> nederst eller midt på en form.

Det kan sikkert lade sig gøre men jeg ved ikke hvordan.

/HK



Ukendt (01-05-2006)
Kommentar
Fra : Ukendt


Dato : 01-05-06 13:48

"Harald" <nomail@noname.dk> skrev i en meddelelse
news:4455fc8c$0$84028$edfadb0f@dtext01.news.tele.dk...
> "KentN" <.> skrev i en meddelelse
> news:4455f85f$0$10871$ba624c82@nntp02.dk.telia.net...
>> "Harald" <nomail@noname.dk> skrev i en meddelelse
>> news:445537ab$0$84013$edfadb0f@dtext01.news.tele.dk...
>>
>>> Hvad med f.eks. en TCoolBar som er lavet til den slags.
>>
>> Nej, du misforstår mig. Det er ikke en CoolBar-lignende ting, som jeg
>> ønsker have placeret.
>>
>> Det er mere i retning af en ganske almindelig knap (TButton) placeret fx
>> nederst eller midt på en form.
>
> Det kan sikkert lade sig gøre men jeg ved ikke hvordan.

Okay, men du skal have tak alligevel (håber du kan bruge det)



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste