![]() |
Panel Professionel Resizen mit pfeilen etc...
Hallo
Ich möchte, das wenn man an die Ecken eines Panels kommt mit der maus das die Normalen Pfeile angezeigt werden um etwas zu Resizen. Ich hab es geschafft, das ich mit diesem Code die untere kannte eines Panels erkennen kann.
Delphi-Quellcode:
Aber ich bin mir sicher das das noch besser und einfacher geht....
if (cursorpos.y-Form1.Top-(GroupBox1.Top+Panel3.Top+Panel5.Top+27+Panel5.Height)) = 1 then Panel5.Cursor:=crSizeNS;
Hat da jemand einen Tipp für mich oder eine Idee? Und weiss vieleicht auch noch jemand wie ich das Panel am schluss Resizen kann. Also mit height und width ist klar aber das es beim ziehen der maus resized wird meine ich.... Danke schonmal |
Re: Panel Professionel Resizen mit pfeilen etc...
Du prüfst, wo sich die Maus befindet und hast im OnMoueMove folgendes:
Delphi-Quellcode:
Wobei du XX ersetzen musst, je nach dem, wo sich die Maus befindet:
if ssLeft in Shift then
begin ReleaseCapture; Panel1.Perform(WM_SYSCOMMAND, XX, 0); end;
Delphi-Quellcode:
Am besten deklarierst du diese Werte vorher als Konstanten.
$F001: linke Seite
$F002: rechte Seite $F003: oben $F004: Ecke links oben $F005: Ecke rechts oben $F006: unten $F007: Ecke links unten $F008: Ecke rechts unten Mfg |
Re: Panel Professionel Resizen mit pfeilen etc...
Hi,
oder du überschreibst CreateParams vom Panel und fügst den Style WS_SIZEBOX hinzu:
Delphi-Quellcode:
Edit: Es wird dann wohl besser aussehen, wenn du auch noch die Eigenschaft BevelOuter auf bvNone setzt.
type
TPanel= class(ExtCtrls.TPanel) public procedure CreateParams(var Params: TCreateParams); override; end; type TForm1 = class(TForm) Panel1: TPanel; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TPanel.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style or WS_SIZEBOX; end; end. |
Re: Panel Professionel Resizen mit pfeilen etc...
Wooooowww is ja meeega geil....
Danke Viel Viel mal euch beiden das hat ausgezeichnet geklappt :D |
Re: Panel Professionel Resizen mit pfeilen etc...
was mache ich, wenn ich nun einzelne Panels dennoch
NICHT resizen möchte? |
Re: Panel Professionel Resizen mit pfeilen etc...
Du leitest vorher noch eine andere Klasse von TPanel ab, in der du die CreateParams nicht überschreibst:
Delphi-Quellcode:
Mfg
type
TMyPanel= class(ExtCtrls.TPanel); TPanel= class(ExtCtrls.TPanel) public procedure CreateParams(var Params: TCreateParams); override; end//[..] |
Re: Panel Professionel Resizen mit pfeilen etc...
Hi,
dann würde ich aber TMyPanel ableiten und überschreiben und das andere Panel so lassen, wie es ist. |
Re: Panel Professionel Resizen mit pfeilen etc...
is ja geil!!!!
geht das auch mit anderen komponenten? und wie verschiebt man komponenten - geht das auch so einfach? |
Re: Panel Professionel Resizen mit pfeilen etc...
Jep
verschieben kannst du eine Komponente hiermit im MouseDown Ereigniss
Delphi-Quellcode:
// Mausereignisse abfangen
ReleaseCapture; // mit TWinCotrol verschieben, $F012 verschiebt den Button TWinControl(Sender).Perform(WM_SYSCOMMAND, $F012, 0); |
Re: Panel Professionel Resizen mit pfeilen etc...
Verschieben:
Delphi-Quellcode:
kan aber auch ins OnMouseDown
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin ReleaseCapture; (Sender as TWinControl).Perform(WM_SYSCOMMAND, $F012, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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