-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
15. Okt 2006
Ja, darüber strieten sich die Experten. Wenn ich mein altes Beispiel wie folgt ändere:
procedure TForm1.OnMove(var Msg: TWMMove);
var
i, NumWindows : integer;
hWinPosInfo : Cardinal;
OldPos : TRect;
begin
inherited;
NumWindows := 0;
for i := 0 to Screen.FormCount -1 do
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
15. Okt 2006
Also bei mir löst es immer folgendes aus (in den "angedockten" Fenstern):
WM_WINDOWPOSCHANGING
WM_GETMINMAXINFO
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGED
WM_MOVE
Ermittelt habe ich das mit WinSpector
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
15. Okt 2006
Hi,
welche Aktion hat diese (und nur diese?) Nachricht ausgelöst? Die VB-Klasse oder ein Delphi-Programm? Oder einfach das manuelle Verschieben eine bleibigen Fensters?
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
15. Okt 2006
Der Code war nur ein POC wie man so etwas generell lösen kann und innerhalb von ein paar Minuten hingehackt um evtl. Denkanstöße zu liefern. Es sollte nicht heissen, dass es die komplette Klasse TMagnetic auch abbildet - es sollte vielmehr zeigen, was für Möglichkeiten Delphi in dem Bereich bietet ohne große Verrenkungen bietet.
Es ist im Übrigen generell nicht sehr performant, wenn man...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
14. Okt 2006
Sicherlich ist das eine Klasse, aber hier stellvertretend für ein beliebiges Form. Ich wollte auch nur zeigen, dass man mit 10 Zeilen Code in Delphi das Problem im Grunde relativ elegant mit Bordmitteln lösen kann.
Na klar zappeln die - wenn es mehr als fünf oder so sind und die Anzahl der Controls spielkt natürlich auch eine Rolle. Das liegt aber nicht unbedingt daran, ob man jetzt eine...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
14. Okt 2006
Wieso dafür eigentlich eine eigene Klasse? Um die Funktionlität generell zu ermöglichen, sollte doch so was ausreichen:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure OnMove(var Msg: TWMMove); message WM_MOVE;
procedure OnMoving(var Msg: TWMMoving); message WM_MOVING;
private
{ Private declarations }
FTopLeft :...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
11. Okt 2006
Das liegt daran, dass in Delphi dynamische Arrays immer mit Index 0 beginnen. Bei SetLength(Array, 10) geht dann z.b. der Index von 0..9
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
10. Okt 2006
In der Standardkonfiguration heißt es result (extended Syntax). Das hat den Vorteil, dass man die Funktion umbenennen kann, ohne den evtl. verwendeten Namen 20 Mal ebenfalls ändern zu müssen. Und es ermöglicht Rekursion, wenn gewollt.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
10. Okt 2006
Es ist doch schön dass nicht jede Programmiersprache komplett unterschiedlich ist. BTW hat Bill Gates kein Betriebssystem geschrieben mit Basic. Er hat eins "weiterverkauft". Und Pascal gründet sich auf ALGOL und nicht auf Basic.
Und kommen wir wieder zu etwas ganz anderem, nämlich Deiner TMagnetic-Klasse ;)
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
10. Okt 2006
Man kann beide Möglichkeiten verwenden. Solange der Getter nur einen Wert zurückliefert, kann man sich die Get-Funktion sparen und direkt den Wert über die read-Direktive ansprechen. Anders sieht es aus, wenn der Getter aktiv einen Wert ermittelt.
Und man sollte die Get/Set-Funktionen nur in der Deklaration anwenden. Entweder man spricht innerhalb derselben Klasse direkt die Variablen an (in...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
10. Okt 2006
Genau das sorgt ja für die Rekursion. Die Property heisst SnapWidth. Der Getter heist GetSnapWidth. Wenn innerhalb des Getters wieder SnapWidth steht, wird die Property angesprochen. Diese ruft den Getter auf etc. Der ursprüngliche Tip mit der Klassenvervollständigung kam nicht von mir.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
10. Okt 2006
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).
TMagnetic = class
private
FSnapWidth: integer;
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
9. Okt 2006
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\VCLWin32\Docking nach, da ist ein Beispielprojekt.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Union,
9. Okt 2006
Mal etwas ganz anderes - bei Deiner Kurzbeschreibung was Deine Magnetic-Klasse macht solltest Du vielleicht mal unter DockSite 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.