Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Message-Parameter für CMTextChanged

  Alt 21. Sep 2007, 15:56
Joop,

habs getestet und klappt so super. Der neue Code sieht jetzt so aus:
Delphi-Quellcode:
  TSizeEdit = class(TCustomEdit)
  private
    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
    Function CheckText(AText : String) : String;
  protected
  public
    constructor Create(AOwner : TComponent); override;
  end;

{-----------------------------------------------------------------------------
  Procedure:  CheckText
  Author:      oki
  Date:        21-Sep-2007
  Arguments:  AText: String
  Result:      String
  Describtion: nur Zahlen zulassen
-----------------------------------------------------------------------------}

function TSizeEdit.CheckText(AText: String): String;
var counter : Integer;
begin
  for Counter := Length(AText) downto 1 do begin
    if not (AText[Counter] in ['0'..'9']) then
      system.Delete(AText, Counter, 1);
  end;
  Result := AText; // das ist nicht so elegant, sollte man über einen var-Parameter oder lokale Variable lösen
end;

{-----------------------------------------------------------------------------
  Procedure:  CNCommand
  Author:      oki
  Date:        21-Sep-2007
  Arguments:  var Message: TWMCommand
  Result:      None
  Describtion: change abfangen und Text prüfen
-----------------------------------------------------------------------------}

procedure TSizeEdit.CNCommand(var Message: TWMCommand);
var CurPos : Integer;
begin
  // hier bearbeiten
  CurPos := self.SelStart;
  Text := CheckText(Text);
  if CurPos > Length(Text) then
    self.SelStart := Length(Text)
  else
    self.SelStart := CurPos;
  inherited;
end;

constructor TSizeEdit.Create(AOwner: TComponent);
begin
  inherited;
  self.DoubleBuffered := True;
  Width := 35;
  Height := 15;
  self.Font.Size := 7;
end;
Damit ist die Frage beantwortet.

Dank und Gruß an marabu und sirius

oki
42
  Mit Zitat antworten Zitat