[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    {
    Sorry you must use the sendmessage API to do this.
    use the winsight32 to spy this message !.
    you can find in compsit.pas a new component witch send a TAB key
    when you press ENTER

    Best regards

    Pierre

    pmarmet@mnet.fr
    }

    unit compsit;
    //*******************************************
    // Classe TDBedite
    // avec gestion de la touche ENTREE
    // (c)SIT 8/5/1996 MARMET Pierre
    //*******************************************

    interface

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

    type
      TDBEdite = class(TDBEdit)

      private
      Tentree: integer;
      varia: boolean;
      oldvalue: string;            {memorise l'ancienne valeur du composant}

      function getpierre: integer;
      procedure setpierre (param1: integer);
      procedure WndProc(var Message: TMessage) ;override;
        { Déclarations privées }
      protected
        { Déclarations protégées }

      public
      constructor Create(AOwner: TComponent); override;

       { Déclarations publiques }
      published
      //property ENTREE: Boolean read Getpierre write Setpierre default True;
      / property ENTERKey: integer read getpierre write setpierre default 1;
      property DoEnterKey: boolean read varia write varia;
        { Déclarations publiées }
      end;

    procedure Register;

    implementation

    procedure Register;
    begin
      RegisterComponents('Exemples', [TDBEdite]);
    end;

    Constructor TDBEdite.Create(AOwner: TComponent);
    begin
         inherited Create(AOwner);
    //     ENTERKey := 1;
         varia:=True;
    end;

    function TDBEdite.getpierre: integer;
    begin
         result := Tentree;
    end;

    procedure TDBEdite.setpierre(param1: integer);
    begin
         if param1 > 1 then param1:=1;
         Tentree:=param1;
    end;

    procedure TDBEdite.WndProc(var Message: TMessage);
    begin

      if (message.msg = WM_CHAR) then

         begin

         // La touche ENTREE provoque une tabulation sur le controle
         if (message.WParam = 13) and ( varia = True ) then
              begin
                  sendmessage(self.Handle,WM_USER+$B900,9,$F0001);
                  exit;
              end;
         end;

      inherited WndProc(Message);        { répartition normale }
    end;

    end.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]