AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClienttoScreen und Co.

Ein Thema von Touchdown · begonnen am 2. Feb 2004 · letzter Beitrag vom 3. Feb 2004
Antwort Antwort
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#1

ClienttoScreen und Co.

  Alt 2. Feb 2004, 17:58
Hallo Leute,

ich habe ein kleines Problem, und zwar habe ich mir eine Art Helper-Dialog (sehr einfache Variante von Word und Co) gemacht, in diesem werden nur Werte dargestellt.

Ich möchte nun diesen Dialog per Maus verschieben können (da er immer im Vordergrund (in einer INI kann man es abstellen)). Mit ClientToScreen war ich auch schon fast am Ziel, dieser zeichnete mir allerdings den Dialog an Position des Cursors. Was beim Bewegen den Effekt hatte, dass der Cursor in der oberen linken Ecke bleibt.

Ich möchte aber, dass der Cursor dort bleibt wo er anfangs war (innerhalb des kleinen Dialogs).

Da viele schneller Code lesen können als meine Beschreibungen hier mal was ich bisher habe:

Delphi-Quellcode:
procedure THelper.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  P1: TPoint;
begin
  if ssLeft in Shift then
  begin
    p1.x := x;
    p1.y := y;
    p1 := ClientToScreen(P1);
   // MapWindowPoints(self.Handle,0 , p1, 1); wäre daß was für mich? ka
    //p1 := Screentoclient(p1); nochmal umbiegen !?!?!
    self.Top := p1.y;
    self.Left := p1.x;
  end;
end;
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#2

Re: ClienttoScreen und Co.

  Alt 2. Feb 2004, 18:08
Delphi-Quellcode:
var
  P: TPoint;
begin
  if ssLeft in Shift then
  begin
    P := ClientToScreen(Point(X, Y));
    Top := P.X - X; // <--
    Left := P.Y - Y;
  end;
end;
Gruß Hagen
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#3

Re: ClienttoScreen und Co.

  Alt 2. Feb 2004, 20:02
@negaH

Diese Lösung erschien mir auch vorher logisch, funktionierte leider nicht. Hat den selben Effekt, ist etwas seltsam, aber es muss eine logische Erklärung dafür geben.

Werde morgen mal weiter sehen, nun ist erstmal Feierabend
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: ClienttoScreen und Co.

  Alt 2. Feb 2004, 22:39
Delphi-Quellcode:
var
  P: TPoint;
begin
  if not (ssLeft in Shift) then FWasMouseDown := False else
    if not FWasMouseDown then
    begin
      FLastPos := Point(X, Y);
      FWasMouseDown := True;
    end else
    begin
      Top := Top + (FLastPos.X - X); // <--
      Left := Left + (FLastPos.Y - Y);

      FLastPos := Point(X, Y);
    end;
end;
FWasMouseDown: Boolean und FLastPos: TPoint musste als private Felder in dein TForm deklarieren.

Gruß Hagen
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#5

Re: ClienttoScreen und Co.

  Alt 3. Feb 2004, 10:03
Von der Idee gar nicht schlecht, allerdings sind die x und y Parameter die Koordinaten innerhalb des Forms. Ich brauche aber für die neue TOP und LEFT die Koordinaten vom Screen.

Werde mal weiter suchen, danke dir für deine Mühe.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#6

Re: ClienttoScreen und Co.

  Alt 3. Feb 2004, 10:42
Ich hab mal weiter in Richtung API gesucht und habe recht brauchbares gefunden:

http://www.chaho.de/templates/show_a...0&LanguageID=1
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  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 10:21 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