要在窗体界面上显示比分(我用的 TLabel),如下面四种,每个比分用“:” 分割:8:11
123:23
22:2
8:222
问题是每个比分需要按照“:”对其,即要求如下显示: 8:11
123:23
22:2
8:222每个比分长度不固定,这个算法该怎么写好呢?
123:23
22:2
8:222
问题是每个比分需要按照“:”对其,即要求如下显示: 8:11
123:23
22:2
8:222每个比分长度不固定,这个算法该怎么写好呢?
解决方案 »
- 【help】dbgrid中如何实现输入第1列的值,后面的列的值会自动跳出来?
- 怎样单步跟踪进控件的代码中?
- 如何将CAD表格转换到Excel表格?
- 用以下方法生成票号只能生成到第10号就不能生成了,各位帮忙
- 放分200恭喜 menggirl 做版主 -- 饭桶
- 各位大虾,请帮小弟一个忙
- 如何用SQL语句创建远程服务器上的数据库,SQL SERVER 用Create dabatase 只能创建本地的,好象不能创建远程的数据库
- 如何设置View|Type Library的参数?
- 菜鸟求援!(100分奉上)
- paradox7数据库忘了密码,怎么办?
- 刚才看到BDS 2007台湾发表会的时间了!
- DBGridEh如何使用动态数据集
记下 lbTemp.Width 备用(假设存于变量W0中);这个宽度是所有“:”号左边最长的宽度。即:W0 := lbTemp.Width;然后遍历所有左边的分数,并分别套入lbTemp而得到W1..Wn,也就是各左边分数的宽度,那么各个要显示的Label的Left就等于X+(W0-Wn);X是界面左边应该留出的边界,n是比分的组号。即:Labeln.Left := n + (W0-Wn);或许为lbTemp.Caption赋值后要刷新一次Width才变。没有上机试过,你试试看行不。
新建一个工程,窗体的下半部分放1个Memo,2个Button和1个FontDialog,Memo的Lines里面复制你的例子,然后单元文件里粘贴以下代码:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Contnrs;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
FontDialog1: TFontDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FLabelList: TObjectList;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
function GetMax(Lines: TStrings):Integer;
var
i,j: integer;
s: string;
begin
Result := 0;
for i := 0 to Lines.Count - 1 do
begin
s := Copy(Lines.Strings[i],0,Pos(':',Lines.Strings[i]) - 1);
j := StrToInt(s);
if j > Result then
Result := j;
end;
end;var
i, j, k, iMax: Integer;
Img: TImage;
s: string;
Lb: TLabel;
begin
FLabelList.Clear;
iMax := GetMax(Memo1.Lines);
Img := TImage.Create(Self);
with Img.Canvas do
begin
try
Img.Visible := False;
Font.Assign(Memo1.Font);
iMax := TextWidth(IntToStr(iMax));
for i := 0 to Memo1.Lines.Count - 1 do
begin
s := Copy(Memo1.Lines.Strings[i],0,Pos(':',Memo1.Lines.Strings[i]) - 1);
j := TextWidth(s);
k := Memo1.Left;
lb := TLabel.Create(Self);
with lb do
begin
Font := Memo1.Font;
Width := 200;
Visible := True;
Name := 'Label' + IntToStr(i);
Caption := Memo1.Lines.Strings[i];
Left := k + iMax - j;
Top := i * (Height + 2) + 30;
Parent := Self;
FLabelList.Add(lb);
end;
end;
finally
Img.Free;
end;
end;end;procedure TForm1.Button2Click(Sender: TObject);
begin
if FontDialog1.Execute then
begin
Memo1.Font.Assign(FontDialog1.Font);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
FLabelList := TObjectList.Create(True);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FLabelList.Free;
end;end.Button1可以看效果,Button2可以更换字体