Groupbox 1或2;基于按钮单击后选择的复选框

时间:2012-07-27 09:34:47

标签: delphi delphi-7 delphi-2010

在表单上我有两个分组框,两个复选框和一个按钮。在按钮代码中,我目前有以下两行:

if CheckBox1.Checked then GroupBox1.Show; 
if CheckBox2.Checked then GroupBox2.Show;

我想拥有的是什么;点击按钮后,

  

如果选中复选框1,则应显示groupbox1和IF复选框2   如果选中则会出现groupbox2。

但是还有两个令我困惑的要求:

  1. 在按下提到的按钮之前,表格中不应显示两个groupbox。
  2. 两个群组(如上所述,哪一个出现取决于哪个 按钮点击后选中复选框应该出现在确切的位置 表格的相同位置。但我无法确定准确的位置二 不同的元素(在我的情况下是groupboxes)。
  3. Version of delphi is 7.

3 个答案:

答案 0 :(得分:2)

试试这个:

GroupBox1.Visible := CheckBox1.Checked;
GroupBox2.Visible := CheckBox2.Checked;

答案 1 :(得分:1)

由于你的2个GroupBox位于同一个位置,我使用单选按钮代替复选框,因为2个分组框无法同时显示...

以下是一个例子:

// Click event for a radiogroup see DFM below
procedure TForm1.rg1Click(Sender: TObject);
begin
  gb1.Visible := False;
  gb2.Visible := False;
  if rg1.ItemIndex = 0 then
    gb1.Visible := True
  else
    gb2.Visible := True;
end;

表单设计如下(您可以查看我设置的不同属性):

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form6'
  ClientHeight = 337
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object gb1: TGroupBox
    Left = 40
    Top = 60
    Width = 185
    Height = 105
    Caption = 'gb1'
    TabOrder = 0
    Visible = False
  end
  object gb2: TGroupBox
    Left = 40
    Top = 60
    Width = 185
    Height = 105
    Caption = 'gb2'
    TabOrder = 1
    Visible = False
  end
  object rg1: TRadioGroup
    Left = 40
    Top = 8
    Width = 185
    Height = 33
    Caption = 'rg1'
    Columns = 2
    Items.Strings = (
      'GB1'
      'GB2')
    TabOrder = 2
    OnClick = rg1Click
  end
end

答案 2 :(得分:1)

  

表格

中不应显示两个groupbox

在编译程序之前,在Delphi Object Inspector中将.Visible设置为false

你有没有看过.Show的帮助?它提到了财产。看看其他部分 http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.Controls.TControl.Show

坦率地说,更简洁的是listbox.visible:= checkbox.checked


  

应出现在表单的完全相同位置

那么,你不能在同一个地方同时出示它们?

如果两个复选框都打开,你想如何显示它们?

我相信你应该删除复选框并输入单选按钮,而只能按下一个或另一个。

尝试TRadioGroup

http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.ExtCtrls.TRadioGroup.ItemIndex

 ~~~~~~~~~~~~~~~~~~~
 |  ( )   No lists |
 |  (*)   List 1   |
 |  ( )   List 2   |
 ~~~~~~~~~~~~~~~~~~~

RadioGrououp.OnClick:= ...(*  程序....     List1.Visible:= RadioGroup.ItemIndex = 1;     List2.Visible:= RadioGroup.ItemIndex = 2;  结束。 *)


  

两个分组框应出现在完全相同的位置

1)使用TNotebook并将它们放在不同的页面上。切换页面而不是切换可见性。这种方法可以让你做更多的控制,而不仅仅是那些。你可以轻松地将它们放在不同页面上的相同坐标上。

2)in form.OnShow:List2.Top:= List1.Top和左,宽和高的相同