如何将负号放到数字的前面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将负号放到数字的前面相关的知识,希望对你有一定的参考价值。

各位: ? ? 我们知道SAP是把负数的负号放到数字的后面在报表中,不知有没有什么设置可以,让负号 放到数字的前面去的。请指教!谢谢! best regards Park

一、据我所知还没有什么设置可以把负号提前 二、这个问题你应该放到ABAP板块去 三、编一个函数完成将负号提前。在报表中调用这个函数 FUNCTION CHAR_NUMC_CONVERSION. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" ? ? ? IMPORTING *" ? ? ? ? ? ? ?INPUT DEFAULT 0 *" ? ? ? EXPORTING *" ? ? ? ? ? ? ?NUMCSTR *"---------------------------------------------------------------------- ?FIELD-SYMBOLS: . ?IF INPUT CA '#*' OR INPUT CA '##'. ? ?ASSIGN NUMCSTR TO TYPE 'C'. ? ?MOVE INPUT TO . ?ELSE. ? ?MOVE INPUT TO NUMCSTR. ?ENDIF. ENDFUNCTION. 参考技术A 告诉大家一个惨无人道的消息,一个灭绝人寰的消息,一个绝望至死的消息,一个伤心欲绝的消息,一个肝肠寸断的消息,一个愁眉苦脸的消息,一个捶胸顿足的消息,一个泣不成声的消息,一个垂头丧气的消息,一个生不如死的消息,一个心如刀割的消息,今天周一

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确.

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确.

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    Edit1OldProc: TWndMethod;
    procedure Edit1NewProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Clipbrd;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1OldProc := Edit1.WindowProc;
  Edit1.WindowProc := Edit1NewProc;
end;

procedure TForm1.Edit1NewProc(var Message: TMessage);
var
  s: string;
  v: double;
begin
  case Message.Msg of
    WM_PASTE:
      begin
        s := Clipboard.astext;
        s := copy(edit1.Text, 0, edit1.SelStart) + s + copy(edit1.Text, edit1.SelStart + edit1.SelLength, length(edit1.Text));
        if trystrtofloat(s, v) then
          Edit1OldProc(Message)
        else
          ShowMessage(只允许输入数字);
      end;
    WM_CHAR:
      begin
        if (TWMCHAR(Message).CharCode = 45) then
          if (Pos(-, Edit1.Text) = 0) and (Edit1.SelStart = 0) then
          Edit1OldProc(Message);
        if (TWMCHAR(Message).CharCode = 46) then
          if (Pos(., Edit1.Text) = 0) then
          Edit1OldProc(Message);
        if TWMCHAR(Message).CharCode in [48..57, 8, 3] then
          Edit1OldProc(Message);
        if (TWMCHAR(Message).CharCode = 22)  then
          Edit1OldProc(Message);
      end;
  else
    Edit1OldProc(Message);
  end;
end;
-----------

 

以上是关于如何将负号放到数字的前面的主要内容,如果未能解决你的问题,请参考以下文章

php 如何将数字 负号去除

excel2010,如何让会计专用格式负数显示负号,而不是括号?

excel里负号怎么和其他的数字变成一行显示

矩阵前面有负号怎么放进去

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确.

怎么样辨别负号是减号还是负号?