procedure TSliderMemo.toPAINT;
var
offset,Offset1,iLoop:integer;
begin
if self.Focused then
begin
self.SelLength := 0;
postmessage(self.Handle,WM_KILLFOCUS,0,0); //非常重要
end;
if Initial then
begin
OffSet := height - FTopNow;
FCanvas.FillRect(self.ClientRect);//rect(1,1,));
for iLoop:=0 to self.Lines.Count - 1 do
begin
OffSet1 := OffSet + TxtHeight;
if (OffSet1>0) and (OffSet<height) then
FCanvas.textout(1,OffSet,self.Lines[iLoop]);
OffSet := OffSet1;
end;
end;
end;
{ ******************************************************* }
procedure TSliderMemo.Timer(Sender: TObject);
begin
if not Initial then
begin
FCanvas.Font := self.Font;
self.Font.Color := self.Color;
FTopNow := self.Height;
TxtHeight := FCanvas.textheight(’Pj’);
self.TabStop := false;
FCanvas.Brush.Color := self.Color;
start;
Initial := true;
end;
toPaint;
FTopNow := FTopNow + 1;
if FTopNow>(height+TxtHeight*Self.Lines.Count) then
begin
FTopNow :=0;
if assigned(FOnLoop) then
begin
Stop;
FOnLoop(Self);
Start;
end;
end;
end;
{ ******************************************************* }
procedure TSliderMemo.Stop;
begin
FTimer.Enabled := False;
end;
{ ******************************************************* }
procedure TSliderMemo.Start;
begin
FTimer.Enabled := true ;
end;
{ ******************************************************* }
constructor TSliderMemo.Create (AOwner: TComponent);
责任编辑:小草