![]() |
Re: Übersetzung Class MagneticWindow
Mal etwas ganz anderes - bei Deiner Kurzbeschreibung was Deine Magnetic-Klasse macht solltest Du vielleicht mal unter
![]() |
Re: Übersetzung Class MagneticWindow
Zitat:
Bin mit dieser Klasse eigentlich bisher sehr gut gefahren mit meinen Player. Möchte wenn möglich meinen Code(VB) so halbwegs erhalten. Übung in soweit das wenn ich meinen Player umschreibe ich auf die bisher gewonnenen Erkenntnisse zurückgreifen kann. Werde mir das Projekt 'DockSite' wenn es eins ist trotzdem einmal anschauen ;) EDIT; Sehe gerade du meinst die Delphi Hilfe ..... :-D gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
|
Re: Übersetzung Class MagneticWindow
Zitat:
Nein das ist etwas komplett anderes da geht es um Docking in einer MDI Form Komponente innerhalb einer Form andocken. Bei mir docken alle übergebenen Fenster gegenseitig an Und können über das Hauptfenster(Applikation) gleichzeitig verschoben werden. EDIT: Ich will aber niemanden nerven oder das Forum zumüllen. :roll: Traue mich jetzt gar nicht mehr zu fragen :cry: Gruß |
Re: Übersetzung Class MagneticWindow
Problem mit Property
Delphi-Quellcode:
Type TMagnetic = class
constructor Create; constructor Destroy; private function GetSnapWidth: Integer; procedure SetSnapWidth(NewSnapWidth: Integer); public property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
Delphi-Quellcode:
In Create wird die default SnapWidth zugewiesen.
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer); begin SnapWidth := NewSnapWidth; end;
Delphi-Quellcode:
Hier kommt der Fehler!
constructor TMagnetic.create;
begin // Default snap width SnapWidth := 10; // Initialize array (handled windows info) m_lWndCount := 0; end;
Delphi-Quellcode:
Case True of
Abs(rcTmp.x1 - x1) < SnapWidth: rcWnd.x1 := x1; Abs(rcTmp.x1 - x2) < SnapWidth: rcWnd.x1 := x2; End; Zitat:
gruß |
Re: Übersetzung Class MagneticWindow
Delphi-Quellcode:
Also diese Kombination ist schon mal tödlich, da rekursiv - der Getter ruft die Property auf, diese wieder den Getter... Du solltest ein internes Feld anlegen (FSnapWidth).
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
Delphi-Quellcode:
Geht übrigens vollautomatisch, wenn Du auf der Zeile stehst...
TMagnetic = class
private FSnapWidth: integer; procedure SetSnapWidth(const Value: integer); public Property SnapWidth : integer read FSnapWidth write SetSnapWidth; end;
Delphi-Quellcode:
... und dann Strg-Shift-C drückst!
Property SnapWidth : integer
Uups, sorry xaromz da war ich wohl wieder zu schnell... |
Re: Übersetzung Class MagneticWindow
Hallo,
Zitat:
Delphi-Quellcode:
hast Du eine Rekursion gebaut. Die Zuweisung ruft ja wieder SetSnapWidth auf!
procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer);
begin SnapWidth := NewSnapWidth; end;
Delphi-Quellcode:
Das Problem ist, dass die Werte, die bei case als Möglichkeiten angegeben werden, Konstanten sein müssen.
Case True of
Abs(rcTmp.x1 - x1) < SnapWidth: rcWnd.x1 := x1; Abs(rcTmp.x1 - x2) < SnapWidth: rcWnd.x1 := x2; End; Du musst das also umformulieren:
Delphi-Quellcode:
Gruß
case Abs(rcTmp.x1 - x1) < SnapWidth of
True: rcWnd.x1 := x1; False: rcWnd.x1 := x2; end; xaromz |
Re: Übersetzung Class MagneticWindow
Ich glaube er meint aber:
Delphi-Quellcode:
if (Abs(rcTmp.x1 - x1) < SnapWidth) then rcWnd.x1 := x1;
if (Abs(rcTmp.x1 - x2) < SnapWidth) then rcWnd.x1 := x2; |
Re: Übersetzung Class MagneticWindow
Zitat:
Delphi-Quellcode:
grußCase True of Abs(rcTmp.x1 - x1) < SnapWidth: Begin lOffx := x1 - rcTmp.x1; end; Abs(rcTmp.x1 - x2) < SnapWidth: Begin lOffx := x2 - rcTmp.x1; end; Abs(rcTmp.x2 - x1) < SnapWidth: begin lOffx := x1 - rcTmp.x2; end; Abs(rcTmp.x2 - x2) < SnapWidth: begin lOffx := x2 - rcTmp.x2; end; End; |
Re: Übersetzung Class MagneticWindow
Zitat:
Bei dieser Kombination wir die procedure automatisch erstellt aber ohne Inhalt :) Zitat:
Delphi-Quellcode:
gruß
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 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 by Thomas Breitkreuz