我有一组label(16*16=256个),用以下代码操作全部,可只有第一排(列)的有效,其他的没效。请问如何改正?还是delphi里有控件数组?
procedure TForm1.Label1Click(Sender: TObject);
begin
with TLabel(Sender) do
begin
if Color=clcream then
Color:=clred
else
Color:=clcream;
end;
end;
procedure TForm1.Label1Click(Sender: TObject);
begin
with TLabel(Sender) do
begin
if Color=clcream then
Color:=clred
else
Color:=clcream;
end;
end;
解决方案 »
- 动态创建label在Timage上,如何实现??
- Sql奇怪的日期问题!
- 请高手提供一个CHECKLISTBOX的例子,谢谢!
- fr中的自定义纸对应WINDOWS打印机的那种类型?
- delphi8与7区别大吗?
- 谁做过RadiusClient编程?
- 各为大哥几少我几个学习Delphi 的网站。谢谢!谢谢!
- 在delphi中如何实现将现有字体高宽比任意调整后进行打印输出?
- 如何用delphi实现检测局域网机器的ip,机器名,网络连接状态服务性质
- image 取消功能?
- 如何实现打印一张80cm*60cm的纸张,纸张上的字的位置可以自动调整
- 如何使用Tquery把图片保存到Oracle的Blob字段中?
用数组下标来操作每一个控件
并且指定每一个控件的click事件为自定义的click事件(参数相同)
lab1,lab2……lab256然后用这样的方法:
var
j:integer;for j := 1 to 256 do
begin
if TLabel(findcomponent('lab' + inttostr(j))).Color=clcream then
TLabel(findcomponent('lab' + inttostr(j))).Color:=clred
else
TLabel(findcomponent('lab' + inttostr(j))).Color:=clcream;
end;
都可以利用以下形式访问(比如Form1是它们的Parent):
for iLoop := 0 to Form1.ControlCount - 1 do
if Form1.Controls[iLoop].ClassType = 'TLabel' then
with (Form1.Controls[iLoop] as TLabel) do
begin
if Color=clcream then
Color:=clred
else
Color:=clcream;
end
begin
for i := 0 to panel1.componentcout-1 do
begin
if (panel1.component[i] is TLabel) and TLabel(panel1.component[i]).color = clcream then
TLabel(panel1.component[i]).color := clred;
end;
end;
i:integer;
begin
for i:=0 to Form1.ComponentCount-1 do
if Form1.Components[i] is TLabel then
with Form1.Components[i] as TLabel do
if color=clcream
{///}
else
{///}
end;
label2.click=>label2.color=xx
...
label256.click=>label256.color=xx
单个label的事件只改变自己的颜色。只是把以上代码综合到一个。
你是一列一列copy的吧 :-)
如:IF Sender=Lable1 THEN ...