Avatar billede hugopedersen Nybegynder
30. april 2013 - 12:38 Der er 4 kommentarer og
1 løsning

Form placering igen

Jeg har et program hvor mainform er en MDI container
I den har jeg et antal forms som så er MDI childs - de opfører sig som forventet både på WinXP og Win7

Jeg har så et andet antal forms som jeg ikke kan lave til MDI childs da de ikke kan være maximeret.
Disse forms kan jeg til stadighed opleve at de nogen gange opfører sig helt som forventet og er forrest i programmet, men i andre tilfælde kan de samme forms komme i tanke om at ville være foran andre programmer.
Altså hvis jeg har en form åben i Program 1 og så åbner program 2, så bliver formen stående foran program 2 - og det ser rodet ud.

Denne opførsel ser ud til at være mest fremtrædende på Windows Xp

Hvordan kan jeg sikre mig at en form altid er foran sin ejer men aldrig foran andre programmer?
Avatar billede kroning Nybegynder
30. april 2013 - 12:43 #1
"Jeg har så et andet antal forms som jeg ikke kan lave til MDI childs da de ikke kan være maximeret."

En MDI child behøver ikke kunne maximeres ?
Avatar billede hugopedersen Nybegynder
30. april 2013 - 12:54 #2
Jeg bruger samme forms i andre programmer der ikke har en MDI container som mainform og jeg kan ikke lige gennemskue hvilken fremgangsmåde jeg så skal anvende.
Avatar billede kroning Nybegynder
30. april 2013 - 13:31 #3
Hvis det er en arvet form kan formstyle ændres uden problemer, men ellers kan du jo altid ændre den til en MDIChild i din Project fil eller hvor du nu Creater formen, f.eks.

  Application.CreateForm(TForm3, Form3);
  Form3.FormStyle:=fsMDIChild;
Avatar billede hugopedersen Nybegynder
30. april 2013 - 18:21 #4
Hvis du mener om formene arver fra andet end TForms, så nej.

Jeg opretter alle mine forms via kode som f.eks.
function ShowHsSetup: boolean;
begin
  with TfrmHsSetup.Create(nil) do
    try
      Result := ShowModal = mrOK;
    finally
      Release;
    end;
end;

Det kunne jeg vel ændre til noget i stil med (ikke afprøvet)
function ShowHsSetup(aOwner: TComponent): boolean;
begin
  with TfrmHsSetup.Create(aOwner) Do
    try
      begin
        if TForm(aOwner).FormStyle = fsMDIForm then
          FormStyle := fsMDIChild;
        Result := ShowModal = MROK;
      end;
    finally
      Release;
    end;
end;

Måske er det et forsøg værd
Avatar billede hugopedersen Nybegynder
26. maj 2013 - 10:10 #5
Lukker spørgsmål - problemet eksisterer dog stadig
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