- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先,简单介绍一下我,我是 GUI 编程的新手,尤其是 C++ Builder。我有一个包含一行单元格的 tframe,就像上图一样。有一个 + 按钮,当按下时,一个单元格只会添加到最后一列,如图所示。我想知道是否可以在运行时更改 tframe 的大小,因为最后一列变得越来越大。 tframe 必须从一行单元格的大小开始。此 tframe 不能有滚动条。随着单元格添加到最后一列,它只需要扩展高度即可。
提前致谢。
更多信息。
这是添加红色单元格的 tframe 本身的编码(这也是另一个 tframe 仅供引用)。此 tframe 也被添加到滚动框。为了更好地理解,请参阅 Tree Structure with TFrames 中的图片.最终目标是创建 tframes 的树结构。
这个特定任务中的 tframe 是另一个问题图片中最右边的 tframe。
__fastcall TTreeTframe::TTreeTframe(TComponent* Owner)
: TFrame(Owner)
{
AddCells();
}
//---------------------------------------------------------------------------
void __fastcall TTreeTframe::AddCells()
{
//this part adds the cells in the tframe (red boxes in the picture)
int tempCellRow = 0;
TCells* NewCellRow = new TCells (this);
NewCellRow->Parent=this;
TComponentEnumerator * ParentEnum = this->GetEnumerator();
while(ParentEnum->MoveNext())
{
tempCellRow++;
}
NewCellRow->SetIndex(tempCellRow);
NewCellRow->Name = "Cell" + IntToStr(tempCellRow);
NewCellRow->Top = (NewCellRow->Height) * (tempCellRow-9);
NewCellRow->Left = 213;
NewCellRow->OnClose = &DeleteCell;
}
void __fastcall TTreeTframe::DeleteCell(TObject *Sender)
{
//this part deletes the cells when the delete button is pressed. As
//mentioned the red boxes themselves are also tframe, and in that
//tframe is a TEdit with a delete button. just so u know where the
//delete button is located
TCells* TCurrent = NULL;
int CellRow = 0;
TCells* NewCellRow = (TCells*)Sender;
CellRow = NewCellRow->GetIndex();
NewCellRow->Name = "";
TComponentEnumerator * ParentEnum = NewCellRow->Parent->GetEnumerator();
while(ParentEnum->MoveNext())
{
TCurrent = (TCells*)ParentEnum->GetCurrent();
if(TCurrent->GetIndex() > CellRow )
{
TCurrent->SetIndex(TCurrent->GetIndex() - 1);
TCurrent->Top -= (NewCellRow->Height);
TCurrent->Name = "DistIPCell" + IntToStr(TCurrent->GetIndex());
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTreeTframe::btnAddCellsClick(TObject *Sender)
{
// this is what the red + does
AddCells();
}
//---------------------------------------------------------------------------
// the rest of this is for the propose of deleting this tframe from the tree structure
void __fastcall TTreeTframe::btnRemoveClick(TObject *Sender)
{
if (FOnClose != NULL)
{
FOnClose(this);
}
PostMessage(Handle, CM_RELEASE, 0, 0);
}
//---------------------------------------------------------------------------
void __fastcall TTreeTframe::WndProc(TMessage &Message)
{
if (Message.Msg == CM_RELEASE)
{
delete this;
return;
}
TFrame::WndProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TTreeTframe::SetIndex(int TypeRow)
{
this->TypeRow = TypeRow;
}
int __fastcall TTreeTframe::GetIndex()
{
return this->TypeRow;
}
//---------------------------------------------------------------------------
解释这个有点棘手,所以如果您需要澄清,请告诉我,谢谢。
最佳答案
与任何其他 UI 控件一样,TFrame
发布了可用的 Width
和 Height
属性,您可以在设计时和运行时设置这些属性-时间。
关于c++ - 在运行时改变 tframe 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266855/
为了避免单例和全局变量,我希望能够将参数传递给 TFrame 组件。然而,由于 TFrame 通常在设计时包含在表单中,因此只能使用默认构造函数。 创建 TFrame 后,父窗体当然可以在 OnCre
我有一个 TForm (TVehicleEditForm),里面有 3 个相同的 TFrame (TVehicleUnitFrame)。 这个想法是框架的每个实例都通过框架内的事件处理程序处理自己的事
是否可以创建运行时框架并添加现有面板,例如将面板的父级设置为框架?添加后,复制框架并使用它? 喜欢: f:= Tframe. create(..) ... panel3.parent = f; //w
我正在使用 C++ Builder 创建 VCL 表单应用程序。现在我有一个包含一堆组件的 TFrame,它看起来像这样...... 我还有一个名为“添加”的按钮。基本上每次我按下窗体上的那个添加按钮
我很难让 Delphi 2006 将事件处理程序分配给 TFrame 上独立的组件。 假设我有一个框架TComboFrame包含 TCombo Combo1我在我的主要表单的几个地方使用它。 当我放置
我使用以下代码创建了一个以 TFrame 作为祖先的组件: type TCHAdvFrame = class(TFrame) private { Private declaration
如何在主 TForm 上创建(当我想显示它时)和销毁(当我想隐藏它时)框架?框架的align = alClient。 我尝试过这个: 形式: unit main; interface uses W
我有一个包含 TFrame 的表单。 TFrame 包含一个动态填充的ComboBox。每个ComboBox 条目都有一个关联的对象。当调用 TFrame 的重写析构函数时,ComboBox 中的项目
我有一个包含很多框架的项目,当我重新加载项目时,它们的宽度和高度会调整为 443x270 或左右。 我确实在运行时驻留这些框架,但我希望它们在设计时创建它们时保留下来。 我使用非嵌入式、经典的未停靠
我想制作一个基于 TFrame 的组件,其中包含 TLMDShapeControl (用于绘制圆角背景)和 TEdit 控件(可以也可以是 TComboBox 或 TDBEdit 等等)。之后,我将使
我创建了一个新框架,我想将其注册为组件。我已经从 this question 了解了 RegisterSprigType ,所以它省去了我一些麻烦。 RegisterSprigType 可以正确防止设
Delphi 对象检查器按设计不显示 TFrame 后代的附加属性。人们倾向于建议使用一种已知的技巧,该技巧通常用于在对象检查器上显示 TForm 后代的属性。技巧是:通过设计时包将 TForm 后代
我已将 TFrame 的后代类注册为组件,并且我注意到 Loaded 过程执行了两次: 运行时: TMyFrame = class(TFrame) private protected
我需要intercept the WM_PASTE message对于放置在 TFrame 的后代类中的 TEdit 组件。 如果不满足条件,我想启动粘贴操作。 有没有办法在帧级别做到这一点? (我的
我有一个带有嵌入式 TFrame 的表单,以及一些具有关联属性的组件(在父表单和框架中)。我可以使用以下方法访问父表单组件属性: for field in ctx.GetType(frm.ClassI
首先,简单介绍一下我,我是 GUI 编程的新手,尤其是 C++ Builder。我有一个包含一行单元格的 tframe,就像上图一样。有一个 + 按钮,当按下时,一个单元格只会添加到最后一列,如图所示
我创建了一个带有视觉和数据库控件的 Tframe 单元。我使用 sprig 方法将框架注册为组件。 TFrame 有一些已发布的 bool 属性。 一切正常,除了我注意到如果我启动 IDE 并打开一个
我有一个疑问。我在 firemonkey 中创建了一个框架并添加了 2 个按钮,然后在 MainForm 中添加了这个框架。 Frame.Align = Scale 在MainForm中对象Frame
我在 Delphi 7 中遇到框架和继承问题。 假设我使用 visible=false 定义一个框架(在设计时)。现在,我将此框架嵌入到某个表单中,并在表单内的框架的嵌入实例上设置 visible=t
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我是一名优秀的程序员,十分优秀!