在Delphi中更改具有不同名称的多个面板的颜色的过程

在Delphi中更改具有不同名称的多个面板的颜色的过程,delphi,procedure,Delphi,Procedure,我有一个TForm,上面有5个TPanel控件。我需要他们改变颜色时,他们被点击 我可以很容易地为每个TPanel编写代码来更改颜色,但这包含了太多的代码,所以我想知道是否可以编写一个过程来单独更改每个TPanel的颜色,并将每个TPanel的名称作为参数调用此函数?如果没有,还有其他方法吗 这真的很容易 创建一个新的VCL应用程序 在主窗体中添加五个TPanel控件 选择所有五个面板 在对象检查器中,将ParentBackground设置为False 在对象检查器中,单击事件选项卡,然

我有一个TForm,上面有5个TPanel控件。我需要他们改变颜色时,他们被点击

我可以很容易地为每个TPanel编写代码来更改颜色,但这包含了太多的代码,所以我想知道是否可以编写一个过程来单独更改每个TPanel的颜色,并将每个TPanel的名称作为参数调用此函数?如果没有,还有其他方法吗

这真的很容易

  • 创建一个新的VCL应用程序

  • 在主窗体中添加五个
    TPanel
    控件

  • 选择所有五个面板

  • 在对象检查器中,将
    ParentBackground
    设置为
    False

  • 在对象检查器中,单击事件选项卡,然后单击行标题右侧的空字段。键入
    面板单击
    并按Enter键

  • 编写以下代码:

    procedure TForm1.PanelClick(Sender: TObject);
    begin
      if Sender is TPanel then
        TPanel(Sender).Color := RGB(Random(255), Random(255), Random(255));
    end;
    
  • 我想这是你问的。然而,考虑到你的形象,我怀疑你更喜欢切换行为:

    程序TForm1.PanelClick(发送方:TObject);
    变量
    i:整数;
    开始
    对于i:=0到ControlCount-1 do
    如果控制[i]为TPanel,则
    如果控件[i]=发送方,则
    TPanel(控件[i])。颜色:=clHighlight
    其他的
    TPanel(控制[i])。颜色:=clBtnFace;
    终止
    
    这将迭代
    Self
    的子控件,因为
    ControlCount
    controls
    分别表示
    Self.ControlCount
    Self.controls
    。如果您的目标面板具有不同的父级(例如,面板),则迭代其子级

    或者,您可以为目标面板指定一个特定的
    标记
    值(如
    500
    ),并且只更改此类面板的颜色

    请将
    bevelooter
    设置为
    bvNone
    。我们已经离开了90年代。

    这真的很容易

  • 创建一个新的VCL应用程序

  • 在主窗体中添加五个
    TPanel
    控件

  • 选择所有五个面板

  • 在对象检查器中,将
    ParentBackground
    设置为
    False

  • 在对象检查器中,单击事件选项卡,然后单击行标题右侧的空字段。键入
    面板单击
    并按Enter键

  • 编写以下代码:

    procedure TForm1.PanelClick(Sender: TObject);
    begin
      if Sender is TPanel then
        TPanel(Sender).Color := RGB(Random(255), Random(255), Random(255));
    end;
    
  • 我想这是你问的。然而,考虑到你的形象,我怀疑你更喜欢切换行为:

    程序TForm1.PanelClick(发送方:TObject);
    变量
    i:整数;
    开始
    对于i:=0到ControlCount-1 do
    如果控制[i]为TPanel,则
    如果控件[i]=发送方,则
    TPanel(控件[i])。颜色:=clHighlight
    其他的
    TPanel(控制[i])。颜色:=clBtnFace;
    终止
    
    这将迭代
    Self
    的子控件,因为
    ControlCount
    controls
    分别表示
    Self.ControlCount
    Self.controls
    。如果您的目标面板具有不同的父级(例如,面板),则迭代其子级

    或者,您可以为目标面板指定一个特定的
    标记
    值(如
    500
    ),并且只更改此类面板的颜色


    请将
    bevelooter
    设置为
    bvNone
    。我们离开了90年代。

    很棒的动画GIF,但不是透明的-你的桌面背景太分散我的注意力了。很棒的动画GIF,但不是透明的-你的桌面背景太分散我的注意力了。