Avatar billede kennethv Nybegynder
18. oktober 2005 - 15:37 Der er 8 kommentarer og
1 løsning

Ingen flytning af form.

Hej eksperter.

Jeg har en form, hvor dens borderstyle := bsToolWindow.

Jeg kunne nu godt tænke mig at form'en ingen muligheder har for at blive flyttet, maxi eller minimeret. Hvordan kan det klares?

vh
kenneth
Avatar billede stone Forsker
18. oktober 2005 - 17:45 #1
i bordericons biminimized til false
i bordericons bimaximized til false

//code disable movement of a form

private
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
   
{....}

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;

  with Message do
  begin
    if Result = HTCAPTION then
      Result := HTNOWHERE;
  end;
end;
Avatar billede kennethv Nybegynder
18. oktober 2005 - 22:33 #2
Hvordan skal jeg bruge den? Skal procecduren kaldes fra et bestemt sted?
Avatar billede kennethv Nybegynder
18. oktober 2005 - 22:48 #3
Jeg får en fejl i den.

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;

  with Message do
  begin
    if Result = HTCAPTION then
      Result := HTNOWHERE; <------ HER FÅR JEG DEN!
  end;
end;

[Error] MainUnit1.pas(63): E2010 Incompatible types: 'Integer' and 'THitTest'
Avatar billede stone Forsker
18. oktober 2005 - 23:45 #4
smider lige hele mit eksempel som kører.....

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
  procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;

  with Message do
  begin
    if Result = HTCAPTION then
      Result := HTNOWHERE;
  end;
end;

end.
Avatar billede kennethv Nybegynder
19. oktober 2005 - 00:00 #5
Dit eksempel virker. Og af en eller anden grund virker det også hos mig nu. Lige til sidst. Den form jeg er gerne vil have det til at virke på har ikke focus, hvordan gøres det?
Avatar billede stone Forsker
19. oktober 2005 - 00:21 #6
brug form2.showmodal - så har den absolut focus indtil den lukkes. Selvom du klikker ved siden af formen mister den ikke focus.
Avatar billede kennethv Nybegynder
19. oktober 2005 - 08:59 #7
Det spiller ikke. Hvis jeg gør det får jeg ikke kontrol over Form1. Jeg kunne nu godt tænke mig at jeg havde muligheden for at minimere programmet. Hvis jeg gør det som du beskriver kan jeg slet ikke lukke programmet, men må stoppe det via CTRL+F2.

Det skal lige siges, at jeg har gjort sådan her.

Form2.parent := Form1;
Form2.Show;
Avatar billede stone Forsker
19. oktober 2005 - 13:44 #8
du kan lukke din child med action:= CaFree

i din child OnClose
Avatar billede kennethv Nybegynder
19. oktober 2005 - 13:53 #9
Super. tak for det.
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