gpt4 book ai didi

c++ - 在运行时改变 tframe 的大小

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:42 25 4
gpt4 key购买 nike

enter image description here

首先,简单介绍一下我,我是 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 发布了可用的 WidthHeight 属性,您可以在设计时和运行时设置这些属性-时间。

关于c++ - 在运行时改变 tframe 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com