Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TSplitter mit Doppelklick ansprechen (https://www.delphipraxis.net/125949-tsplitter-mit-doppelklick-ansprechen.html)

RWarnecke 15. Dez 2008 14:36


TSplitter mit Doppelklick ansprechen
 
Hallo zusammen,

Mein erster Gedanke war, auf die Message WM_LBUTTONDBLCLK und den Focus von TSplitter zu reagieren. Nur leider gibt es bei der Komponente keine Methode oder Property, die den Focus abfragt.

Deshalb suche ich noch nach anderen Ideen, wie ich einen Doppelklick auf TSplitter abfangen kann und dann eine Aktion ausgeführt wird.

worker 15. Dez 2008 15:53

Re: TSplitter mit Doppelklick ansprechen
 
TSplitter ist ein Kind von TControl
Also ableiten und Property veröffentlichen.

Delphi-Quellcode:
   TDblClickSplitter = Class(TSplitter)
   published
      Property OnDblClick;
   End;
Und in Zukunft nicht so kompliziert denken ;)

uligerhardt 15. Dez 2008 16:04

Re: TSplitter mit Doppelklick ansprechen
 
Oder der übliche protected-friend-Trick:
Delphi-Quellcode:
type
  THACK_Splitter = class(TSplitter);

procedure TForm1.FormCreate(Sender: TObject);
begin
  THACK_Splitter(Splitter1).OnDblClick := Splitter1DblClick;
end;

RWarnecke 16. Dez 2008 19:12

Re: TSplitter mit Doppelklick ansprechen
 
Danke erstmal für eure Antworten. Ich habe jetzt mal ein bisschen rumprobiert und ich bekomme es nicht zu laufen. Das mein aktuelles Beipsieli dafür :
Delphi-Quellcode:
unit Unit8;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm8 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure Splitter1DblClick(Sender: TObject);
  public
    { Public declarations }
  end;
  TDblClickSplitter = class(TSplitter);

var
  Form8: TForm8;

implementation

{$R *.dfm}

procedure TForm8.Splitter1DblClick(Sender: TObject);
begin
  Panel1.Width := Round(Form8.Width / 2);
end;

procedure TForm8.FormCreate(Sender: TObject);
begin
  TDblClickSplitter(Splitter1).OnDblClick := Splitter1DblClick;
end;

end.
Warum funktioniert das Beipsiel nicht ?

toms 16. Dez 2008 19:24

Re: TSplitter mit Doppelklick ansprechen
 
Zitat:

Zitat von RWarnecke
Warum funktioniert das Beipsiel nicht ?

Was sollte nicht gehen? Wird das Ereignis nicht ausgelöst?

RWarnecke 16. Dez 2008 19:44

Re: TSplitter mit Doppelklick ansprechen
 
Zitat:

Zitat von toms
Zitat:

Zitat von RWarnecke
Warum funktioniert das Beipsiel nicht ?

Was sollte nicht gehen? Wird das Ereignis nicht ausgelöst?

Jepp, das Ereignis wird nicht ausgelöst.

toms 16. Dez 2008 19:56

Re: TSplitter mit Doppelklick ansprechen
 
Seltsam. Funktioniert mit D6 / D2009.

RWarnecke 16. Dez 2008 20:51

Re: TSplitter mit Doppelklick ansprechen
 
Ich habe es mit einem RAD Studio 2007 ausprobiert. Mit 2007 funktioniert es nicht und mit Turbo Delphi Explorer funktioniert es wieder.

RWarnecke 22. Dez 2008 14:50

Re: TSplitter mit Doppelklick ansprechen
 
Zitat:

Zitat von RWarnecke
Ich habe es mit einem RAD Studio 2007 ausprobiert. Mit 2007 funktioniert es nicht und mit Turbo Delphi Explorer funktioniert es wieder.

Ich habe das ganze jetzt nochmals getestet unter RAD Studio 2007. Wenn ich dort den Sourcecode compiliere, funktionert es nicht mit dem Doppelklick auf den Splitter. Wird der gleiche Sourcecode unter Turbo Delphi 2006 Explorer kompiliert, funktioniert der Doppelklick auf den Splitter. Hat jemand eine Idee, warum das so ist ?

RWarnecke 25. Dez 2008 17:08

Re: TSplitter mit Doppelklick ansprechen
 
*push* Hat niemand eine Idee, warum es unter Delphi 6, Turbo Delphi und D2009 funktioniert und unter Delphi 2007 nicht ? *push*


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 2  1 2      

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