我做了一个的大概是这样的组件:
---------------
| | text1:如CSDN |
| 图片 |------------------
| | text2:如连接成功 |
----------------------------
这样的效果:现在的问题是我不能正常显示右边的两项text,debug后觉得是Drawtext时有问题,请各位指点!
procedure TBtn5.Paint;
var
TextRect:TRect;
begin
inherited;
TextRect:=Rect(Left,Top,Left+self.ClientWidth,self.Top+(self.ClientHeight div 2));//写text1
DrawText(Canvas.Handle,PChar(FText),length(FText),TextRect,Flags[FAlignment]);
TextRect:=Rect(Glyph.Width,Top-(self.ClientHeight div 2),self.ClientWidth,self.Top-self.ClientHeight);//写text2
DrawText(Canvas.Handle,PChar(FText1),length(FText1),TextRect,Flags[FAlignment]);
end;这里是左边的图片的代码:
procedure TBtn5.SetGlyph1(Value: TBitmap);
var
BmpRect:TRect;
Bmp1:TBitmap;
begin
if FGlyph1<>Value then
FGlyph1.Assign(Value);
try
with Glyph1 do
begin
BmpRect:=Rect(Self.Left,Self.Top,Self.Left+Self.Width,Self.Top+Self.Height);
Canvas.Draw(0,0,FGlyph1);
end;
finally
Bmp1.Free;
end;
Invalidate();
end;
---------------
| | text1:如CSDN |
| 图片 |------------------
| | text2:如连接成功 |
----------------------------
这样的效果:现在的问题是我不能正常显示右边的两项text,debug后觉得是Drawtext时有问题,请各位指点!
procedure TBtn5.Paint;
var
TextRect:TRect;
begin
inherited;
TextRect:=Rect(Left,Top,Left+self.ClientWidth,self.Top+(self.ClientHeight div 2));//写text1
DrawText(Canvas.Handle,PChar(FText),length(FText),TextRect,Flags[FAlignment]);
TextRect:=Rect(Glyph.Width,Top-(self.ClientHeight div 2),self.ClientWidth,self.Top-self.ClientHeight);//写text2
DrawText(Canvas.Handle,PChar(FText1),length(FText1),TextRect,Flags[FAlignment]);
end;这里是左边的图片的代码:
procedure TBtn5.SetGlyph1(Value: TBitmap);
var
BmpRect:TRect;
Bmp1:TBitmap;
begin
if FGlyph1<>Value then
FGlyph1.Assign(Value);
try
with Glyph1 do
begin
BmpRect:=Rect(Self.Left,Self.Top,Self.Left+Self.Width,Self.Top+Self.Height);
Canvas.Draw(0,0,FGlyph1);
end;
finally
Bmp1.Free;
end;
Invalidate();
end;
TextRect := Rect(0, 0, ClientWidth, (ClientHeight div 2));
DrawText(Canvas.Handle,PChar(FText),length(FText),TextRect,Flags[FAlignment]);
TextRect:=Rect(Glyph.Width,Top+(self.ClientHeight div 2),self.ClientWidth,self.Top+self.ClientHeight);//写text2
DrawText(Canvas.Handle,PChar(FText1),length(FText1),TextRect,Flags[FAlignment]);我也不知对不对,试一下先
TextRect1:=Rect(Glyph.Width,0,self.ClientWidth,(self.ClientHeight div 2));
TextRect1 := Rect(0, 0, ClientWidth, (ClientHeight div 2));
DrawText(Canvas.Handle,PChar(FText),length(FText),TextRect1,Flags[FAlignment]);
TextRect1:=Rect(Glyph.Width,(self.ClientHeight div 2),self.ClientWidth,self.ClientHeight);
DrawText(Canvas.Handle,PChar(FText1),length(FText1),TextRect1,Flags[FAlignment]);
这个可以通过测试,就是调用unit来调试,但是作组件安装后就不行,又回到左边了