Delphi-PRAXiS

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/)
-   -   Delphi TSplitter - Resize zur Designtime (https://www.delphipraxis.net/42273-tsplitter-resize-zur-designtime.html)

Benedikt 16. Mär 2005 16:46


TSplitter - Resize zur Designtime
 
Hi,

ich hab ein recht merkwürdiges Problem mit dem TSplitter, und zwar teile ich zwei Komponenten horizontal mit einem TSplitter ab (Obere alClient, Splitter und Untere alBottom) - das klappt soweit auch alles super, zum Problem wird das Ganze nur, wenn ich z.B. über einen Button die Splitter-Position ändern will:

Wenn ich dann nämlich UntereKompo.Height:=0 mache, ist der Splitter zwar noch zu sehen, allerdings ist er danach nicht mehr beweglich, obwohl die Top und Height werte die gleichen sind, wie wenn ich den Splitter mit der Maus ganz nach unten ziehe...

Hat also irgendwer eine Idee wie ich direkt per Code die untere Komponente quasi minimieren kann, so dass der Splitter aber trotzdem funktionsfähig bleibt?

Ich hoffe das Problem ist zu verstehen,

vielen Dank und freundliche Grüße,
Benedikt Loepp

Pr0g 16. Mär 2005 17:45

Re: TSplitter - Resize zur Designtime
 
Du darfst das Objekt nicht kleiner machen, als MinSize vom Splitter und der Wert ist min. 1. Wenn du das Objekt also statt 0 einfach 1 Pixel hoch machen würdest, müsste es gehen.

MfG Pr0g

Benedikt 16. Mär 2005 18:18

Re: TSplitter - Resize zur Designtime
 
Klar geht das dann - sieht aber ein wenig komisch aus wenn das Objekt noch mit einer Größe von einem Pixel zu sehen ist - das kann den ein- oder anderen schon irritieren :wink:
Es muss ja auch irgendwie anders möglich sein, immerhin funktioniert es ja per Hand richtig...

Pr0g 16. Mär 2005 19:59

Re: TSplitter - Resize zur Designtime
 
Ich denke mal, du wirst die eine eigene Kompo vom TSplitter ableiten müssen, um dann bspw. ein OnMouseDown Ereignis oder ähnlich hinzufügen zu können. In diesem kannst du dass "Verschieben" starten.

Btw: Mir ist jetzt erst aufgefallen dass du ja der Autor von Scriptly bist, hin und wieder kommen ein paar User wegen der Plugins von deiner auf meine Seite.

Benedikt 16. Mär 2005 21:47

Re: TSplitter - Resize zur Designtime
 
:mrgreen: War mir auch sofort klar das du der Autor vom Webweaver bist - kommen hin und wieder auch Leute von deiner Seite auf meine...

Jo, scheint keine ordentliche Lösung für dieses Problem zu geben, dann muss ich mir halt selbst was zusammenbasteln :wink:

Stevie 17. Mär 2005 10:29

Re: TSplitter - Resize zur Designtime
 
Hi,

die Lösung sieht folgendermaßen aus (entweder als Hack in deine Unit oder ne neue Klasse ableiten):
Delphi-Quellcode:
type
  TSplitter = class(ExtCtrls.TSplitter)
    procedure MinimizeControl(AlignedControl: TControl);
  end;

{...}

procedure TSplitter.MinimizeControl(AlignedControl: TControl);
begin
  MouseDown(mbLeft, [], 0, 0);
  MouseMove([ssLeft], 0, AlignedControl.Height);
  MouseUp(mbLeft, [], 0, AlignedControl.Height);
end;

Benedikt 17. Mär 2005 15:11

Re: TSplitter - Resize zur Designtime
 
Habs mittlerweile ähnlich gelöst ;-)
Trotzdem danke...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz