Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Programm verschieben... (https://www.delphipraxis.net/97264-programm-verschieben.html)

Störtebeker 7. Aug 2007 20:37


Programm verschieben...
 
Wenn ich mit bsNone arbeite, kann ich im gestarteten Programm die Form nicht mehr verschieben. Also das Programm kann nicht verschoben werden.

Was kann ich machen, damit ich das Programm auch ohne die Windowstitelleiste verschieben kann?

leddl 7. Aug 2007 20:40

Re: Programm verschieben...
 
Genau für solche Fälle gibts die Suche und die CodeLibrary :zwinker:
http://www.delphipraxis.net/internal_redirect.php?t=133

Störtebeker 7. Aug 2007 20:42

Re: Programm verschieben...
 
Danke.

PigfaceJoe 7. Aug 2007 20:45

Re: Programm verschieben...
 
Hi!
Ich machs immer mit einem Timer, der das Intervall 1 hat und Anfangs enabled:= false gesetzt ist. Dann ziehe ich irgendeine Komponente mit der ich das Prog verschieben will aufs Forumular und schreibe ins OnMouseDown ereignis von der Kompo timer1.enabled:=true; und entsprechend ins OnMouseUp ereignis dann Timer1.enabled:=false;

Hier der Code im OnTimer ereignis vom Timer:
Delphi-Quellcode:
form1.Top:=mouse.CursorPos.Y;
form1.left:=mouse.CursorPos.x;
So mache ich das immer, ich lasse mich aber gerne einer besseren Methode belehren!

Gruss
PigfaceJoe

//Edit: Alles klar, die obige Methode ist besser ;-)

Störtebeker 7. Aug 2007 23:28

Re: Programm verschieben...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, ich habe mal beide Vorschläge ausprobiert und muss leider sagen, dass beide nicht funzen. Bei dem Programm regt sich nischt.

Das Grüne im Bild, ist die Grundform des Programmes.

Über "Switch"(Label Komponente) --> unten rechts auf der Form, soll die Form verschoben werden.

Luckie 7. Aug 2007 23:42

Re: Programm verschieben...
 
So geht es:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
  private
    { Private declarations }
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;
  if Message.Result = htClient then
    Message.Result := htCaption;
end;

Störtebeker 7. Aug 2007 23:57

Re: Programm verschieben...
 
Sry. aber ich weiß nicht, woran es liegt. Die Form sitzt fest, wie ein schwerer Stein.

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, VrControls, VrGradient, ExtCtrls, StdCtrls, pngextra, SXPNGUtils;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    VrGradient1: TVrGradient;
    VrGradient2: TVrGradient;
    Label1: TLabel;
    Image1: TImage;
    Label2: TLabel;
  private
    { Private declarations }
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;
  if Message.Result = htClient then
    Message.Result := htCaption;
end;

end.

Störtebeker 8. Aug 2007 00:24

Re: Programm verschieben...
 
Problem entdeckt. Enabled-Eigenschaft der Form stand auf FALSE. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz