AGB  ·  Datenschutz  ·  Impressum  







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

2 Fenster verschieben

Ein Thema von Starworld1000 · begonnen am 19. Jul 2007 · letzter Beitrag vom 20. Jul 2007
Antwort Antwort
Starworld1000

Registriert seit: 19. Mär 2007
49 Beiträge
 
#1

2 Fenster verschieben

  Alt 19. Jul 2007, 18:55
Hallo alle zusammen

Ich hoffe ihr könnt mir weiterhelfen

Ich will mit Form1 die Form2, andocken und mitverschieben können.
Die Lösung die ich gefunden habe funktioniert auch,
jedoch erhalte ich beim Ausführen jedesmal eine Zugriffverletzung

Vielleicht könnt ihr mir ja weiterhelfen



Hier der Code:

Delphi-Quellcode:
  public
    { Public-Deklarationen }
    procedure WndProc(var Message: TMessage); override;
  end;

procedure TFORM1.WndProc(var Message: TMessage);
begin
 if (Message.msg = WM_Move) then
 begin
  Form2.left := Form1.left;
  Form2.top := Form1.Top+183;
 end;
inherited WndProc(Message);

end;

Wäre echt Dankbar für eure Hilfe
Grüße Starworld
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: 2 Fenster verschieben

  Alt 20. Jul 2007, 13:51
Hallo,

wenn das Event zum ersten Mal auftritt, gibt es Form2 noch gar nicht!

Edit: Was ist das denn für eine Aussage?!
Zitat von Starworld1000:
Die Lösung die ich gefunden habe funktioniert auch,
jedoch erhalte ich beim Ausführen jedesmal eine Zugriffverletzung
Ändere mal die Erzeugungsreihenfolge und ruf Form1 aus Form2 auf. Dann siehst Du, dass es grundsätzlich erstmal funktioniert. Meintest Du vielleicht das mit Deiner widersprüchlichen Aussage?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: 2 Fenster verschieben

  Alt 20. Jul 2007, 14:38
und dann nicht so:
Delphi-Quellcode:
procedure TFORM1.WndProc(var Message: TMessage);
begin
if (Message.msg = WM_Move) then
begin
  Form2.left := Form1.left;
  Form2.top := Form1.Top+183;
end;
inherited WndProc(Message);

end;
sondern mindestens so
Delphi-Quellcode:
procedure TFORM1.WndProc(var Message: TMessage);
begin
if (Message.msg = WM_Move) then
begin
  Form2.left := Self.left;
  Form2.top := Self.Top+183;
end;
inherited WndProc(Message);

end;
Ansonsten kannst du gleich den Objectteil weg lassen und zur völlig zur globalen Programmierung übergehen.
Richtig/Perfekt wäre es dann wenn Form2 auch weg kommt (sofern Form2 die globale Instanzvariable ist) und dafür eine klassenvariable dafür verwendet wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Starworld1000

Registriert seit: 19. Mär 2007
49 Beiträge
 
#4

Re: 2 Fenster verschieben

  Alt 20. Jul 2007, 17:19
Hubs

Naja da haben wohl meine Hände schneller getippt wie ich gedacht

Ja Danke, hat funktioniert.

Nun ist die Form2 aber die Hauptform, aber wie sag ich der Form nun, das wenn
ich auf Schliessen Klicke, das Programm nicht beenden soll,
und umgekehrt die Form1 das Programm aber beenden soll ?

zb:
Form2.Visble:=False

Grüße
Starworld
  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 12:26 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