AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Fenster verschieben: Form1.top ins Minus
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster verschieben: Form1.top ins Minus

Ein Thema von erich.wanker · begonnen am 17. Jul 2010 · letzter Beitrag vom 17. Jul 2010
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Fenster verschieben: Form1.top ins Minus

  Alt 17. Jul 2010, 13:41
Hallo Leute,

hab ein kleines Problem:
Wenn ich ein Fenster manuell verschiebe, klappt fast alles. Nur wenn Form1.top kleiner -25 ist, springt das Fenster immer auf Form1.top:=-25 (Die Höhe der nicht sichtbaren Titelbar)..

Dieser Effekt passiert VOR MouseUP und versaut mir das Positionieren..

Hat jemand eine Idee?

Vielen Dank

Erich


Form1.OnMouseDown:
Delphi-Quellcode:
        if Button = mbLeft then
        begin
         ReleaseCapture;
         SendMessage(Handle, WM_SYSCOMMAND, 61458, 0);
         if Assigned(OnMouseUp) then //MouseUp brauch ich noch
            OnMouseUp(Sender, Button, Shift, X, Y);
        end;

Das Fenster

Delphi-Quellcode:
object Form1: TForm1
  Left = 561
  Top = 341
  HorzScrollBar.Visible = False
  VertScrollBar.Visible = False
  AlphaBlend = True
  AlphaBlendValue = 220
  BorderIcons = [B][][/B]
  BorderStyle = [B]bsNone[/B]
  ClientHeight = 107
  ClientWidth = 288
  Color = clYellow
  TransparentColor = True
  TransparentColorValue = clYellow
  Ctl3D = False
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  FormStyle = [B]fsStayOnTop[/B]
  OldCreateOrder = False
  Scaled = False
  ScreenSnap = True // hab ich schon verändert - bringt nix
  OnCreate = FormCreate
  OnMouseDown = image_mainmenMouseDown
  OnMouseMove = image_mainmenMouseMove
  OnMouseUp = image_mainmenMouseUp
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fenster verschieben: Form1.top ins Minus

  Alt 17. Jul 2010, 14:18
Wenn man die neue Position selbst berechnet, dann geht es. Ich habe mir dazu 2 private Variablen deklariert (OldX und OldY):
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    begin
      OldX := X;
      OldY := Y;
    end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
    begin
      Left := Left + (X - OldX);
      Top := Top + (Y - OldY);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz