![]() |
Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
hoi,
kann mir jemand erklären wie das funktioniert (z.b delphi oder auch C usw), das man da bei dem form designer buttons memos und alles bewegen kann? ich möchte nämlich so eine art dialog editor für mirc machen, dazu müsst ich allerdings wissen wie man die buttons etc bewegt und wie man diese anker zum grössen verstellen dort rankriegt |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
Hallo,
Bei den Ankern kann ich dir leider nicht helfen, mit dem Verschieben im Allgemeinen hingegen schon. Im OnMouseDown und im Up Ereigniss kann man die Cursor-Position innerhalb des Objekts herausfinden. Diese sind dort mit X und Y angegeben. Somit kannst du mit
Delphi-Quellcode:
immer auf die globale Koordinate zugreifen.
Object.Left + X
und Object.Top + Y Hoffe das hilft ein wenig. Gruss Urba |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
hoi,
jo, daran hatte ich auch schon gedacht, aber die events onmousedown/up werden ja nur einmal ausgeführt. ich bräuchte so eine art OnMouseMove innerhalb des OnMouseDown's |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
Delphi-Quellcode:
procedure TJBPosSlider.fMouseDownProc(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin fIsMouseDown := True; end; procedure TJBPosSlider.fMouseUpProc(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin fIsMouseDown := False; end; procedure TJBPosSlider.fMouseMoveProc(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if fIsMouseDown then begin //Quelltext zum verschieben end; end; |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
|
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
hallo leute, danke für die antworten ^^
ich hab es mal mit:
Delphi-Quellcode:
var
Form1: TForm1; isDown: boolean = false; stLeft, stTop: integer; ... procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDown := true; stTop := Y; stLeft := X; end; ... procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDown := false; end; ... procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if isDown then begin if Y > stTop then Button1.Top := Button1.top+1 else if stTop > Y then Button1.Top := Button1.top-1; if X > stLeft then Button1.Left := Button1.Left+1 else if stTop > X then Button1.Left := Button1.Left-1; end; end; versucht. Funktioniert zwar (einigermaßen), ist aber saaaaaaulahm, besonders wenn man die maus schnell bewegt, da komt der button kaum hinterher, gehts auch anders? |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
Ich versteh zwar net viel davon aber ich kann auch was leisten :mrgreen:
mach doch bei Button1.left := Button1.left + 1 statt die eins eine höhere Zahl |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
Hi!
Darf ich fragen, warum du es nicht so machst, wie die Schweizer? Ich glaube, das geht besser oder täusche ich mich? Ciao fkerber |
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
jo, das von den schweizern geht, nur da kapier ich den source nicht so ganz, was bewirkt die neue klasse?
|
Re: Komponenten zur Laufzeit bewegen (wie delphi es z.b tut)
oder statt +/- 1 setz ihn direkt dahin, wo die Maus ist...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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-2025 by Thomas Breitkreuz