确定TLabel

时间:2015-09-30 11:39:50

标签: delphi delphi-xe8 tlabel

Hello Stack Overflow Users

我有一个TGroupBox,其中包含TLabel。使用此TLabel我想显示候选人的姓氏和姓名。有些候选人有多个名字,有时候有三个,当发生这种情况时,TLabel并不总是适合我的TGroupBox。当发生这种情况时,我只显示姓氏,名字,其余我只作为姓名首字母。

为了做到这一点,我需要知道TLabel是否适合将值分配给它。换句话说,在将值实际分配给TLabel属性之前,我需要确定Caption的宽度是多少,因为显示变量数据的编程很糟糕。

有什么建议吗?

3 个答案:

答案 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() }选择当前HDCFont。您必须在自己的代码中执行相同的操作,例如:

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 := TrueAutoSize := True