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 Exit passiert zu spät (https://www.delphipraxis.net/37304-exit-passiert-zu-spaet.html)

QuickAndDirty 4. Jan 2005 12:07


Exit passiert zu spät
 
Hallo ,
ich habe ein leider sehr blödes Problem
Wenn ich ein Edit feld Fokussiere und von dort
diereckt auf ein Icon eines Treeview Click, passiert
das Change ereignis des TreeView Zu erst und dann erst das
exit ereigniss des Textfeldes.

Konnte es erst nicht glauben und hab ne Test anwendung
geschrieben. Ist leider Definitiv so.



Wie kann ich dieses Verhalten Ändern?

(Also Erst Exit des TEdit dann Change
beim TTreeview)



So Sieht der Quellcode der test Anwendung aus.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    TreeView1: TTreeView;
    procedure Edit1Exit(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  Showmessage('Exit');
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  Showmessage('Change');
end;

procedure TForm1.FormCreate(Sender: TObject);
var NewNode, oldNode:TTreeNode;
begin
  NewNode := TTreeNode.Create(Treeview1.items);
  NewNode := TreeView1.Items.Add(NewNode,'Ast1' );
  OldNode := NewNode ;
  NewNode := TTreeNode.Create(Treeview1.items);
  TreeView1.Items.AddChild(OldNode,'Abteilung1');
  TreeView1.Items.AddChild(oldNode,'Abteilung2');
  TreeView1.Items.AddChild(oldNode,'Abteilung3');
  TreeView1.Items.Add(TTreeNode.Create(Treeview1.items),'Ast2' );
  TreeView1.Items.Add(TTreeNode.Create(Treeview1.items),'Ast3' );
end;

end.
[edit=Christian Seehase]Delphi-Tags korrigiert Mfg, Christian Seehase[/edit]

QuickAndDirty 4. Jan 2005 13:36

Re: Exit passiert zu spät
 
Hab jetzt erstmal einen Workaround.
Ich Überschreibe die Change Methode des TTreeView
und Poste von dort eine eigene Message an den TTreeView.
In der Empfangenden Methode Führe ich dann Inherited Change aus,
das Node Übergebe ich auch mit der Message.

Wenn jemand eine Schönere Lösung hatt bitte, bitte, bitte...teile es mir mit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 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