小编Anï*_*éli的帖子

如何使用SENDER优化此代码?

我有一个包含16个TCheckBox和32个TEditBox的表单.每2个TEditBox能力取决于checkBox状态.所以我使用的代码太长了:

//T1
procedure TOFAddForm.T1Click(Sender: TObject); 
begin
     Q1.Enabled:=T1.Checked;
     P1.Enabled:=T1.Checked; 
     Q1.OnChange(Sender);
end;

.  
.
.

//T16
procedure TOFAddForm.T16Click(Sender: TObject); 
begin
     Q16.Enabled:=T16.Checked;
     P16.Enabled:=T16.Checked;
     Q1.OnChange(Sender);
end;`
Run Code Online (Sandbox Code Playgroud)

我使用了这段代码但没有任何反应:

procedure TOFAddForm.T1Click(Sender: TObject);
var Q, P: TEdit;
begin
     with  Sender as TCheckBox do begin
           Q.Name:='Q'+copy(Name,1,2);
           P.Name:='P'+Copy(Name,1,2);
           Q.Enabled:=Checked;
           P.Enabled:=Checked;
     end;
     Q1.OnChange(Sender);
end;
Run Code Online (Sandbox Code Playgroud)

谢谢.

delphi optimization sender

3
推荐指数
1
解决办法
635
查看次数

使用Delphi中的StrUtils删除SQL UPDATE语句中的最后一个逗号

假设我们有这个SQL语句:

UPDATE article SET saison='12E', mode='ECH', client='SAS', WHERE ID='3448fe81-1bec-e011-8546-001f3ccf8f20'
Run Code Online (Sandbox Code Playgroud)

此SQL语句由连接的字符串生成,如下所示:

// saison change
procedure TarticleEditForm.saisonComboChange(Sender: TObject);
begin
    SQLQuery := SQLQuery + 'saison=''' + saisonCombo.Text + ''',';
end;

// client change
procedure TarticleEditForm.clientComboChange(Sender: TObject);
begin
    SQLQuery := SQLQuery + 'client=''' + clientCombo.Text + ''',';
end;
.
.
.
Run Code Online (Sandbox Code Playgroud)

如您所见,在"WHERE"子句之前有一个逗号.如何删除最后一个逗号以获得​​正确的语句:

UPDATE article SET saison='12E', mode='ECH', client='SAS' WHERE ID='3448fe81-1bec-e011-8546-001f3ccf8f20'
Run Code Online (Sandbox Code Playgroud)

RMQ:逗号的数量不固定,可以是1,2,5 ......

谢谢.

解决方案是将",WHERE"替换为"WHERE"

 SQLQuery := StringReplace(SQLQuery , ', WHERE', 'WHERE', [rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)

我用这个跟踪HISTORY表中的每个变化.谢谢你们.

sql delphi string sql-update

-1
推荐指数
1
解决办法
1478
查看次数

标签 统计

delphi ×2

optimization ×1

sender ×1

sql ×1

sql-update ×1

string ×1