Hello Stack Overflow Users
我有一个TGroupBox
,其中包含TLabel
。使用此TLabel
我想显示候选人的姓氏和姓名。有些候选人有多个名字,有时候有三个,当发生这种情况时,TLabel
并不总是适合我的TGroupBox
。当发生这种情况时,我只显示姓氏,名字,其余我只作为姓名首字母。
为了做到这一点,我需要知道TLabel
是否适合将值分配给它。换句话说,在将值实际分配给TLabel
属性之前,我需要确定Caption
的宽度是多少,因为显示变量数据的编程很糟糕。
有什么建议吗?
答案 0 :(得分:1)
在VCL中,#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Distance{
public:
double x;
double y;
string location;
};
int main(int argc, char *argv[]){
// If the user didn't provide a filename command line argument,
// print an error and exit.
if (argc <= 1){
cout << "Usage: " << argv[0] << " <Filename>" << endl;
exit(1);
}
char *pFilename = argv[1];
string buf; // Have a buffer string
stringstream ss(argv[1]); // Insert the string into a stream
vector<string> tokens; // Create vector to hold our words
while (ss >> buf)
tokens.push_back(buf);
}
使用Win32 API DrawText()
函数计算文字宽度,使用GetDC()
获取屏幕的TLabel
,然后SelectObject()
}选择当前HDC
到Font
。您必须在自己的代码中执行相同的操作,例如:
HDC
答案 1 :(得分:1)
我找到了一种非常简单的方法。基本上,您只想知道字符串的宽度(以像素为单位),因此实现此目的的最佳方法是动态创建具有// this will be initialized to "" because this is global variable
String matrix[3][3];
void setup() {
// put data in the matrix
matrix[0][0] = "data11";
matrix[0][1] = "data12";
matrix[0][2] = "data13";
matrix[1][0] = "data21";
matrix[1][1] = "data22";
matrix[1][2] = "data23";
matrix[2][0] = "data31";
matrix[2][1] = "data32";
matrix[2][2] = "data33";
}
void loop() {
}
和Font
属性的对象。我认为Canvas
将是最好的选择。这是我使用的代码:
TBitmap
答案 2 :(得分:0)
如果您想要在多行中包装长文本,则可以使用标签的属性WordWrap := True
和AutoSize := True
。