Delphi-PRAXiS
Seite 2 von 12     12 34     Letzte »    

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/)
-   -   Übersetzung Class MagneticWindow (https://www.delphipraxis.net/78689-uebersetzung-class-magneticwindow.html)

Union 9. Okt 2006 17:17

Re: Übersetzung Class MagneticWindow
 
Mal etwas ganz anderes - bei Deiner Kurzbeschreibung was Deine Magnetic-Klasse macht solltest Du vielleicht mal unter Delphi-Referenz durchsuchenDockSite nachsehen. Vielleicht spart Dir das eine Menge Arbeit. Wenn Du die Umstellung der Klasse auf Delphi allerdings nur als Übung machen willst, halte ich es für den Einstieg vielleicht für ein wenig zu komplex.

EWeiss 9. Okt 2006 17:31

Re: Übersetzung Class MagneticWindow
 
Zitat:

Zitat von Union
Mal etwas ganz anderes - bei Deiner Kurzbeschreibung was Deine Magnetic-Klasse macht solltest Du vielleicht mal unter Delphi-Referenz durchsuchenDockSite nachsehen. Vielleicht spart Dir das eine Menge Arbeit. Wenn Du die Umstellung der Klasse auf Delphi allerdings nur als Übung machen willst, halte ich es für den Einstieg vielleicht für ein wenig zu komplex.

Nein soll keine übung sein.

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ß

Union 9. Okt 2006 17:37

Re: Übersetzung Class MagneticWindow
 
Zitat:

Werde mir das Projekt 'DockSite' wenn eins ist trotzdem einmal anschauen
Nein, das ist kein Projekt sondern eine Standard-Eigenschaft von Delphi. Die VCL-Komponenten sind von sich aus dockingfähig, da braucht man nur sehr wenig zu programmieren. Schau mal unter file://C:\Programme\Borland\BDS\4.0\Demos\DelphiWin32\VCL Win32\Docking nach, da ist ein Beispielprojekt.

EWeiss 9. Okt 2006 17:54

Re: Übersetzung Class MagneticWindow
 
Zitat:

Zitat von Union
Zitat:

Werde mir das Projekt 'DockSite' wenn eins ist trotzdem einmal anschauen
Nein, das ist kein Projekt sondern eine Standard-Eigenschaft von Delphi. Die VCL-Komponenten sind von sich aus dockingfähig, da braucht man nur sehr wenig zu programmieren. Schau mal unter file://C:\Programme\Borland\BDS\4.0\Demos\DelphiWin32\VCL Win32\Docking nach, da ist ein Beispielprojekt.

Habs mir mal angeschaut!
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ß

EWeiss 10. Okt 2006 16:43

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:
function TMagnetic.GetSnapWidth: Integer;
begin
  Result := SnapWidth;
end;

procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer);
begin
  SnapWidth := NewSnapWidth;
end;
In Create wird die default SnapWidth zugewiesen.

Delphi-Quellcode:
constructor TMagnetic.create;
begin
  // Default snap width
  SnapWidth := 10;

  // Initialize array (handled windows info)
  m_lWndCount := 0;
end;
Hier kommt der Fehler!

Delphi-Quellcode:
                        Case True of
                          Abs(rcTmp.x1 - x1) < SnapWidth:
                           rcWnd.x1 := x1;
                          Abs(rcTmp.x1 - x2) < SnapWidth:
                           rcWnd.x1 := x2;
                        End;
Zitat:

[Pascal Error] Magnetic.pas(386): E2026 Constant expression expected
Wo liegt das Problem ?

gruß

Union 10. Okt 2006 16:49

Re: Übersetzung Class MagneticWindow
 
Delphi-Quellcode:
function TMagnetic.GetSnapWidth: Integer;
begin
  Result := SnapWidth;
end;

property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
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).
Delphi-Quellcode:
  TMagnetic = class
  private
    FSnapWidth: integer;
    procedure SetSnapWidth(const Value: integer);
  public
     Property SnapWidth : integer read FSnapWidth write SetSnapWidth;
  end;
Geht übrigens vollautomatisch, wenn Du auf der Zeile stehst...
Delphi-Quellcode:
Property SnapWidth : integer
... und dann Strg-Shift-C drückst!
Uups, sorry xaromz da war ich wohl wieder zu schnell...

xaromz 10. Okt 2006 16:51

Re: Übersetzung Class MagneticWindow
 
Hallo,
Zitat:

Zitat von EWeiss
Problem mit Property

Vorsicht! Hier
Delphi-Quellcode:
procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer);
begin
  SnapWidth := NewSnapWidth;
end;
hast Du eine Rekursion gebaut. Die Zuweisung ruft ja wieder SetSnapWidth auf!
Delphi-Quellcode:
                        Case True of
                          Abs(rcTmp.x1 - x1) < SnapWidth:
                           rcWnd.x1 := x1;
                          Abs(rcTmp.x1 - x2) < SnapWidth:
                           rcWnd.x1 := x2;
                        End;
Das Problem ist, dass die Werte, die bei case als Möglichkeiten angegeben werden, Konstanten sein müssen.
Du musst das also umformulieren:
Delphi-Quellcode:
case Abs(rcTmp.x1 - x1) < SnapWidth of
  True:
    rcWnd.x1 := x1;
  False:
    rcWnd.x1 := x2;
end;
Gruß
xaromz

rayman 10. Okt 2006 17:01

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;

EWeiss 10. Okt 2006 17:10

Re: Übersetzung Class MagneticWindow
 
Zitat:

Zitat von rayman
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;

Nein..

Delphi-Quellcode:
                               
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;
gruß

EWeiss 10. Okt 2006 17:13

Re: Übersetzung Class MagneticWindow
 
Zitat:

Geht übrigens vollautomatisch, wenn Du auf der Zeile stehst...
Habe ich genau nach deiner Anweisung von letztens versucht!
Bei dieser Kombination wir die procedure automatisch erstellt aber ohne Inhalt :)


Zitat:

(FSnapWidth).
Verstehe ich nicht dafür gibt es doch

Delphi-Quellcode:
function TMagnetic.GetSnapWidth: Integer;
begin
  Result := SnapWidth;
end;
gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Seite 2 von 12     12 34     Letzte »    

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