鱼C论坛

 找回密码
 立即注册
查看: 2433|回复: 4

[已解决]刚学新手求教

[复制链接]
发表于 2017-10-12 07:11:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学着做一个计算器,想增加一个记录计算结果的功能,于是,我就加了个按键,再加了个ListBox1,作为记录容器,然而,找到的例子里显示计算内容的是Lable1,而我的程序里用的是Edit1,他的语句是这样的:

存入计算结果: if lab1.Caption <> stro then list1.AddItem(lab1.Caption,sender);

复制计算结果:
   if lab1.Caption <>stro then begin
    Clipboard.AsText:=lab1.Caption;
    label1.Caption :='复制成功!';
    end;

清空计算结果:
  list1.Clear;

因为我的程序里显示计算内容用的是Edit1,请问下大大们,我应该怎么写,初学者,不当之处,请谅解,谢谢!
最佳答案
2017-10-12 10:34:46
lab1.Caption  跟 edit.text 互换一下就好了。

if lab1.Caption <> stro then list1.AddItem(lab1.Caption,sender);
if edit1.text  <> stro then list1.AddItem(edit1.text,sender);

if lab1.Caption <>stro then begin
    Clipboard.AsText:=lab1.Caption;
    label1.Caption :='复制成功!';
    end;

if edit1.text  <>stro then begin
    Clipboard.AsText:=edit1.text ;
    edit1.text  :='复制成功!';
    end;
学习.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-12 10:34:46 | 显示全部楼层    本楼为最佳答案   
lab1.Caption  跟 edit.text 互换一下就好了。

if lab1.Caption <> stro then list1.AddItem(lab1.Caption,sender);
if edit1.text  <> stro then list1.AddItem(edit1.text,sender);

if lab1.Caption <>stro then begin
    Clipboard.AsText:=lab1.Caption;
    label1.Caption :='复制成功!';
    end;

if edit1.text  <>stro then begin
    Clipboard.AsText:=edit1.text ;
    edit1.text  :='复制成功!';
    end;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 16:02:10 | 显示全部楼层
本帖最后由 tanyztj 于 2017-10-12 21:52 编辑

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    Button23: TButton;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button20Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
  var
    data,data1,data2:Real;
    OK:Integer;
    StrO:string='0';

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  //edit1输入居中
  SetWindowLong(Edit1.handle, GWL_STYLE, GetWindowlong(edit1.Handle, GWL_STYLE)+ES_CENTER);
  Edit1.Refresh;
end;

procedure TForm1.Button5Click(Sender: TObject);     //1
begin
    if Length(Edit1.Text)> 40 then
        MessageBeep(MB_OK)
    else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'1';
    end;
OK:=0;
end;

procedure TForm1.Button6Click(Sender: TObject);     //2
begin
    if Length(Edit1.Text)> 40 then
        MessageBeep(MB_OK)
    else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'2';
    end;
OK:=0;
end;

procedure TForm1.Button7Click(Sender: TObject);   //3
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
  begin
  if OK =1 then
       Edit1.Text:='';
  Edit1.Text:=Edit1.Text +'3';
  end;
OK:=0;
end;

procedure TForm1.Button8Click(Sender: TObject);   //4
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'4';
    end;
OK:=0;
end;

procedure TForm1.Button9Click(Sender: TObject);    //5
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'5';
    end;
OK:=0;
end;

procedure TForm1.Button10Click(Sender: TObject);  //6
begin
   if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
   else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'6';
    end;
OK:=0;
end;

procedure TForm1.Button11Click(Sender: TObject);  //7
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'7';
    end;
OK:=0;
end;

procedure TForm1.Button12Click(Sender: TObject);   //8
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'8';
    end;
OK:=0;
end;

procedure TForm1.Button13Click(Sender: TObject);  //9
begin
  if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
  else
    begin
    if OK =1 then
       Edit1.Text:='';
    Edit1.Text:=Edit1.Text +'9';
    end;
OK:=0;
end;

procedure TForm1.Button14Click(Sender: TObject);  //0
begin
    if  Edit1.Text ='' then
        MessageBeep(MB_OK)
    else
      begin
        if Length(Edit1.Text)> 40 then
            MessageBeep(MB_OK)
        else
        begin
        if OK =1 then
           Edit1.Text:=''
        else
          Edit1.Text:=Edit1.Text +'0';
        end;
      end;
OK:=0;
end;

procedure TForm1.Button15Click(Sender: TObject);   //00
begin
    if  Edit1.Text ='' then
        MessageBeep(MB_OK)
    else
    begin
       if Length(Edit1.Text)> 40 then
       MessageBeep(MB_OK)
       else
       begin
       if OK =1 then
          Edit1.Text:=''
       else
          Edit1.Text:=Edit1.Text +'00';
       end;
    end;
OK:=0;
end;

procedure TForm1.Button16Click(Sender: TObject);   //.
begin
  if  Edit1.Text ='' then
      Edit1.Text:= '0.'
  else
  begin
    if Length(Edit1.Text)> 40 then
      MessageBeep(MB_OK)
    else
    begin
    if OK =1 then
      begin
       Edit1.Text:='';
       Edit1.Text:= '0.';
      end
    else
       Edit1.Text:=Edit1.Text +'.';
    end;
  end;
OK:=0;
end;

procedure TForm1.Button19Click(Sender: TObject);
begin
    Edit1.Text:='';
    OK:=0;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
    Close;
end;

procedure TForm1.Button1Click(Sender: TObject);      //+
var
  i:Integer;
begin
  i:=Length(Edit1.Text);
  if Edit1.Text='' then
     MessageBeep(MB_OK)
  else
  begin
      if (Edit1.Text[i]='+')or (Edit1.Text[i]='-')or
         (Edit1.Text[i]='*')or (Edit1.Text[i]='*') then
         MessageBeep(MB_OK)
      else
         Edit1.Text:=Edit1.Text+'+';
  end;


end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
begin
  i:=Length(Edit1.Text);
  if Edit1.Text='' then
     MessageBeep(MB_OK)
  else
  begin
      if (Edit1.Text[i]='+')or (Edit1.Text[i]='-')or
         (Edit1.Text[i]='*')or (Edit1.Text[i]='*') then
         MessageBeep(MB_OK)
      else
         Edit1.Text:=Edit1.Text+'-';
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  i:Integer;
begin
  i:=Length(Edit1.Text);
  if Edit1.Text='' then
     MessageBeep(MB_OK)
  else
  begin
      if (Edit1.Text[i]='+')or (Edit1.Text[i]='-')or
         (Edit1.Text[i]='*')or (Edit1.Text[i]='*') then
         MessageBeep(MB_OK)
      else
         Edit1.Text:=Edit1.Text+'*';
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  i:Integer;
begin
  i:=Length(Edit1.Text);
  if Edit1.Text='' then
     MessageBeep(MB_OK)
  else
  begin
      if (Edit1.Text[i]='+')or (Edit1.Text[i]='-')or
         (Edit1.Text[i]='*')or (Edit1.Text[i]='*') then
         MessageBeep(MB_OK)
      else
         Edit1.Text:=Edit1.Text+'/';
  end;
end;

procedure TForm1.Button17Click(Sender: TObject);
var
   i:string;
   mun:array[1..40] of Real;
   mun1:array[1..40] of string;
   L,j,a,k:Integer;
begin
  a:=1;
  j:=1;
  OK:=1;
  k:=1;
  L:=1;
   for  a:=1 to Length(Edit1.Text) do
   begin
   if (Edit1.Text[a]='+') or (Edit1.Text[a]='-') or
   (Edit1.Text[a]='*') or (Edit1.Text[a]='/') then
   begin
      mun[j]:= StrToFloat(i);
      mun1[L]:= Edit1.Text[a];
      j:=1+j;
      L:=1+L;
      i:='';
   end
   else
      i:=i+ Edit1.Text[a];
   end;
   mun[j]:= StrToFloat(i);
   data:= mun[1];
   for a:=2 to j do
    begin
    data1:= mun[a];
    if mun1[k]='+' then
      data2:=data+data1
    else if mun1[k]='-' then
      data2:=data-data1
    else if mun1[k]='*' then
      data2:=data*data1
    else if mun1[k]='/' then
      data2:=data/data1;
    k:=k+1;
    data:= data2;
    end;
   Edit1.Text:=Edit1.Text+'='+floattostr(data2);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If not(key in ['0'..'9',#8,#43,#45,#42,#47,#46,#187,#13]) then   // #8 表示Delete键
  Begin
    Key:= #0;         // #0 表示没有输入
    MessageBeep(MB_OK);
  End;
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
Edit1.Text := Copy(Edit1.Text,0,Length(Edit1.Text)-1);
  Edit1.SetFocus;
  Edit1.SelStart := Length(Edit1.Text);
end;



procedure TForm1.Button21Click(Sender: TObject);
begin
if edit1.text  <> stro then listBox1.AddItem(edit1.text,sender);
end;

procedure TForm1.Button23Click(Sender: TObject);
begin
  listBox1.Clear;
end;

end.

解决了很多问题,现在有二个问题:

1、上面复制那个问题没解决。(我现在粘上的代码去掉了这部分)

2、我想实现按回车键就显示计算结果,怎么做?谢谢大大

3、还有个问题,比如显示的是这样的内容:2*6=12,我想在另一个Label中只取=号后面的结果,可以吗?怎么做?谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-18 21:06:25 | 显示全部楼层
我回答你的第二个问题  按下回车键问题
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  If (Key =VK_RETURN)  Then
            Button1.Click ;
   end;
你应该可以看得懂的 结合你的实例修改下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-18 21:20:52 | 显示全部楼层
2*6=12
var
x,y:integer; str1,str2:String;
begin
     str1:= '2*6=12';
     x:=pos('=',str1);//查找位置
     y:=Length(str1);//计算字符长度
    str2:=Copy(str1,x+1,y-x);//复制=后面的字符赋值给str2
     


end;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 04:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表