如何在c++;具有可用主题样式的生成器? 如何在C++ Builder中填充列表框,并使用可用的主题样式?< /P>
我在Delphi XE8中执行了这样的任务:如何在c++;具有可用主题样式的生成器? 如何在C++ Builder中填充列表框,并使用可用的主题样式?< /P>,c++,c++builder,C++,C++builder,我在Delphi XE8中执行了这样的任务: {*----------------------------------------------------------------------------- Procedure: StylesListRefresh Author: Mr. Arch Brooks, Software Engineer, Brooks Computing Systems LLC Date: 06-Aug-2015 @Param
{*-----------------------------------------------------------------------------
Procedure: StylesListRefresh
Author: Mr. Arch Brooks, Software Engineer, Brooks Computing Systems LLC
Date: 06-Aug-2015
@Param None
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormStylesC.StylesListRefresh;
var
styleName : string;
begin
lbxStyles.Items.Clear;
for stylename in TStyleManager.StyleNames do
begin
lbxStyles.Items.Add(stylename);
end;
end;
这是我的C++ Builder源代码:
// ---------------------------------------------------------------------------
#include <vcl.h>
#include <string>
#pragma hdrstop
#include "TopFormStylesu.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
using namespace std;
TTopFormStyles *TopFormStyles;
// TTopFormStyles *StylesRefresh;
void StylesRefresh();
// ---------------------------------------------------------------------------
__fastcall TTopFormStyles::TTopFormStyles(TComponent* Owner) : TForm(Owner) {
StylesRefresh;
}
// ---------------------------------------------------------------------------
void StylesRefresh() {
int i;
string styleName;
TopFormStyles->ListBox1->Items->Clear();
i = 0;
styleName = TStyleManager->StyleNames;
styleName = styleName;
// styleName in TStyleManager::StyleNames;
while (styleName = TStyleManager::StyleNames. > "")
do {
TopFormStyles->ListBox1->Items->Add(styleName);
}
}
//---------------------------------------------------------------------------
#包括
#包括
#布拉格语hdrstop
#包括“TopFormStylesu.h”
// ---------------------------------------------------------------------------
#pragma包(智能初始化)
#pragma资源“*.dfm”
使用名称空间std;
TTopFormStyles*TopFormStyles;
//TTopFormStyles*样式刷新;
void StylesRefresh();
// ---------------------------------------------------------------------------
__快速调用TTopFormStyles::TTopFormStyles(TComponent*Owner):TForm(Owner){
风格清新;
}
// ---------------------------------------------------------------------------
void StylesRefresh(){
int i;
字符串样式名;
TopFormStyles->ListBox1->Items->Clear();
i=0;
styleName=TStyleManager->styleName;
styleName=styleName;
//TStyleManager::StyleNames中的styleName;
而(styleName=TStyleManager::styleName.>“”)
做{
TopFormStyles->ListBox1->Items->Add(样式名);
}
}
请举例说明如何填充列表框
我们也欢迎任何其他改进和建议。是一个类,而不是一个对象StyleNames
是该类的静态
属性,因此需要使用:
而不是->
来访问它。并且它返回一个字符串数组,您没有正确地枚举它
试试这个:
TopFormStylesu.h:
//---------------------------------------------------------------------------
#ifndef TopFormStylesuH
#define TopFormStylesuH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//...
//---------------------------------------------------------------------------
class TTopFormStyles : public TForm
{
__published: // IDE-managed Components
TListBox *ListBox1;
//...
private: // User declarations
void StylesRefresh();
//...
public: // User declarations
__fastcall TTopFormStyles(TComponent* Owner);
//...
};
//---------------------------------------------------------------------------
extern PACKAGE TTopFormStyles *TopFormStyles;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#ifndef TopFormStylesuH
#定义TopFormStylesuH
//---------------------------------------------------------------------------
#包括
#包括
#包括
#包括
//...
//---------------------------------------------------------------------------
TTopFormStyles类:公共TForm
{
__已发布://IDE托管组件
TListBox*ListBox1;
//...
private://用户声明
void StylesRefresh();
//...
public://用户声明
__fastcall TTopFormStyles(t组件*所有者);
//...
};
//---------------------------------------------------------------------------
外部包装TTopFormStyles*TopFormStyles;
//---------------------------------------------------------------------------
#恩迪夫
TopFormStylesu.cpp:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TopFormStylesu.h"
#include <Vcl.Themes.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TTopFormStyles *TopFormStyles;
//---------------------------------------------------------------------------
__fastcall TTopFormStyles::TTopFormStyles(TComponent* Owner)
: TForm(Owner)
{
StylesRefresh();
}
//---------------------------------------------------------------------------
void TTopFormStyles::StylesRefresh()
{
ListBox1->Items->BeginUpdate();
try
{
ListBox1->Items->Clear();
DynamicArray<String> styleNames = Vcl::Themes::TStyleManager::StyleNames;
for(int i = 0; i < styleNames.Length; ++i)
{
String styleName = styleNames[i];
ListBox1->Items->Add(styleName);
}
}
__finally
{
ListBox1->Items->EndUpdate();
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#包括
#布拉格语hdrstop
#包括“TopFormStylesu.h”
#包括
//---------------------------------------------------------------------------
#pragma包(智能初始化)
#pragma资源“*.dfm”
TTopFormStyles*TopFormStyles;
//---------------------------------------------------------------------------
__快速调用TTopFormStyles::TTopFormStyles(t组件*所有者)
:t表格(所有者)
{
StylesRefresh();
}
//---------------------------------------------------------------------------
void TTopFormStyles::StylesRefresh()
{
ListBox1->Items->BeginUpdate();
尝试
{
ListBox1->Items->Clear();
DynamicArray styleNames=Vcl::Themes::TStyleManager::styleNames;
for(int i=0;iItems->Add(样式名);
}
}
__最后
{
ListBox1->Items->EndUpdate();
}
}
//---------------------------------------------------------------------------
这似乎不起作用。生成以下错误:[bcc64 error]TopFormStylesu.cpp(24):应为类或名称空间。我已更新源代码,新列表已作为更新发布。请不要犹豫,让我知道还需要什么。@ArchBrooks也许会更新您的问题?我认为这更可取。唯一的办法是更新问题。我就是这么做的。更新的源对于“评论”部分来说太大。我误解了什么?Remy,这不起作用,但产生了以下错误:[bcc64错误]TopFormStylesuo.cpp(20):使用未声明的标识符'StylesRefresh'[bcc64错误]TopFormStylesuo.cpp(23):'StylesRefresh'的越位定义与'TTopFormStyles'中的任何声明都不匹配