hand >> Jeg vil anbefale dig at gribe det anderledes an :
Lav en klasse, som arver fra TStringList fordi det er en masse strenge du vil scrolere .... Der udover skal dne i sin konstructor tagen en TWinControl fordi den skal jo vide hvad den skal scrollere på ....
for i := 0 to count - 1 do begin S := Strings[i]; TextOut ( aDC, 0, i*20+fOffset, PChar ( s ) , length ( s ) ) ; end; ReleaseDC(fHandle, aDC); Dec ( fOffset,4 ); if fTextHeight + fOffset <= 0 then Reset; end;
procedure TJScrollText.SetBackGround(const Value: TColor); begin FBackGround := CreateSolidBrush(Value); end;
procedure TJScrollText.SetTextColor(const Value: TColor); begin FTextColor := Value; end;
også lidt test kode :
procedure TForm1.FormCreate(Sender: TObject); begin with TJScrollText.Create(self) do begin BackGround := clYellow; TextColor := clRed; LoadFromFile(\'unit1.pas\'); end; end;
Nå men når nu man skal til at overstyre flere funktioner, må vi hellere gøre det rigtigt ... Jeg har indført en funktion der udregner størelsen på vores scroll fætter .....
Der udover har jeg overstyret Assign medtoden for at gøre det muligt at hente teksten fra et memo felt ....
for i := 0 to count - 1 do begin S := Strings[i]; TextOut ( aDC, 0, i*20+fOffset, PChar ( s ) , length ( s ) ) ; end; ReleaseDC(fHandle, aDC); Dec ( fOffset,4 ); if fTextHeight + fOffset <= 0 then Reset; end;
procedure TJScrollText.LoadFromFile(const FileName: string); begin inherited; CalculateSize; end;
procedure TJScrollText.Assign(Source: TPersistent); begin inherited; CalculateSize; end;
procedure TJScrollText.OnTimer(Sender: TObject); begin Draw; end;
Den her Scroll Fætter er IKKE et komponent, og det er 100% med vilje, fordi så skal man til at instalere det først, og hit op og kom her ned. Det snedige er at du bare giver min klasse et komponent i sin konstructor og så scrolerer den på det ....
Så hvis du vil have teksten stående et bestemt sted og fylde en bestemt mængde tja ... så sætter du blot et panel på det ønskede sted, og tilpasser det i størelsen og så set vores test applikation således ud :
procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.LoadFromFile(\'Unit1.pas\'); //Kom noget tekst ind i dit memo felt
with TJScrollText.Create(Panel1) do begin BackGround := clYellow; TextColor := clRed; Assign(Memo1.Lines); // LoadFromFile(\'unit1.pas\'); end; end;
Så kan du ikke prøve at lave et eks. og ligge op på din HP ?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.