De må ikke kunne flyttes af brugeren? Det er ikke så svært, det er bare at gå ind og sætte align til alCustom, så kan man ikke flytte vinduet. Hvis det var det du var ude efter?
Hvilken Delphi-version bruger du? For jeg kan ikke finde noget med Align under Properties i Delphi 2.
Kan jeg gøre noget andet for at få Form1 og Form2 til at fryse fast på positionen?
Jeg har sat BorderStyle til bsNone for så kan formen ikke flyttes; men Formens Caption forsvinder. Som erstatning har jeg indsat et panel i formens top. Men det er jo ikke helt det samme.
procedure TFrmFreeze.CreateWnd; begin inherited; if csDesigning in ComponentState then Exit; {Don't need to hook when designing} if Enabled then begin HookForm; {Hook the main form's Window} end; end;
procedure TFrmFreeze.HookForm; begin if csDesigning in ComponentState then Exit; FOldWindowProc := WindowProc; WindowProc := WndProcForm; end;
procedure TFrmFreeze.UnhookForm; begin if csDesigning in ComponentState then Exit; {If we are "hooked" then undo what Hookform did} if Assigned(FOldWindowProc) then begin if HandleAllocated then begin WindowProc := FOldWindowProc; end; FOldWindowProc := nil; end; end;
{WndProcForm is our replacement for our WindowProc. We grab any Windows messages that we need here} procedure TFrmFreeze.WndProcForm(var AMsg: TMessage); var cmdType: Word; begin if Enabled then begin case AMsg.Msg of WM_SYSCOMMAND: begin cmdType := AMsg.WParam and $FFF0; case cmdType of SC_MINIMIZE, SC_MAXIMIZE, SC_MOVE, SC_SIZE: Exit; end; end; WM_GETMINMAXINFO: Exit; end; end; {Call the default windows procedure} FOldWindowProc(AMsg); end;
destructor TFrmFreeze.Destroy; begin if not (csDesigning in ComponentState) then UnhookForm; {Stop interfering ...} inherited Destroy; end;
procedure TFrmFreeze.BtnExitClick(Sender: TObject); begin Close; end;
1) jeg kan ikke bruge Form1.Align := alCustom; i Delhpi2, for muligheden er der ikke.
2) jeg forstår ikke koden i dit eksempel. Kan du ikke sende et eksempel med alle relevante filer: *.dpr, *.dfm, *.pas osv. i en zip-fil til: juwain03@yahoo.dk?
Ellers har jeg fundet en anden løsning, som kan bruges til mit behov:
Når Form2 aktiveres fra Form1 ved knaptryk, minimeres Form1 (Form1.WindowState := ws.Minimized;).
Form1 kan igen ses, når Form2 lukkes ved knaptryk: (Form1.WindowState := ws.Normal;).
det er da helt iorden...! skulle det være en anden gang :D
Stefmeister.
Synes godt om
Ny brugerNybegynder
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.