Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизБегущая строка Найти похожие ветки
← →
Демидрол (2005-08-19 16:06) [0]Подскажите где ошибка.. Заранее спасибо.
[Error] Unit1.pas(38): Left side cannot be assigned to
procedure TForm1.Timer1Timer(Sender: TObject);
const
LengthGoString = 10;
Gostring = "Этот код был взят с проекта Delphi World"+
" Выпуск 2002 - 2003! Этот код б";
// Повторить столько символов - сколько в LengthGoString
const
i: Integer = 1;
begin
Label1.Caption := Copy(GoString, i, LengthGoString);
Inc(i);
if Length(GoString) - LengthGostring < i then
i:=1;
end;
← →
Eraser © (2005-08-19 16:07) [1]Демидрол (19.08.05 16:06)
Подскажите где ошибка
В 38 строке.
← →
Демидрол (2005-08-19 16:10) [2]Подскажите если не трудно, где именно ошибка.
← →
Джо © (2005-08-19 16:16) [3]
> [2] Демидрол (19.08.05 16:10)
> Подскажите если не трудно, где именно ошибка.
В 2-х местах:
Inc(i);
и
i:=1;
← →
Демидрол (2005-08-19 16:20) [4]По разному пробывал не получается. Подскажите как ее написать
чтобы реально работала.
← →
Eraser © (2005-08-19 16:22) [5]Демидрол (19.08.05 16:20) [4]
const убери!
Константы менять нельзя, на то они и константы.
← →
Демидрол (2005-08-19 16:26) [6]Eraser © (19.08.05 16:22) [5]
const убери!
{-----------------------------}
Действительно нужно было убрать, но строка не бегает :(
← →
Eraser © (2005-08-19 16:26) [7]Демидрол (19.08.05 16:26) [6]
Ну тут уж алгоритм дорабатывать надо...
← →
Savek (2005-08-19 17:01) [8]По-моему переменную I надо объявить не в процедуре а в модуле, чтобы она сохраняла предыдущее значение после выхода из процедуры
← →
TStas © (2005-08-19 18:56) [9]Реально работает
unit RunningText;
interface
uses
SysUtils, Classes, Controls, StdCtrls, ExtCtrls;
type
TRunningText = class(TCustomLabel)
private
{ Private declarations }
FTimer:TTimer;
FText: String; //Текст, который и будет бежать
FTextLength: Byte; //Длинна бегущего текста
FTextVelosity: Byte; //Букв в секунду
procedure SetText(const Value: String);
procedure SetTextLength(const Value: Byte);
procedure SetTextVelosity(const Value: Byte);
procedure Move(Sender:TObject);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
procedure RunText; //Запускает бег текста
procedure StopText; //Останавливает текст
published
{ Published declarations }
property Color;
property Font;
property ParentColor;
property ParentFont;
property ParentShowHint;
property Transparent;
property Visible;
property Text:String read FText write SetText;
property TextLength:Byte read FTextLength write SetTextLength;
property TextVelosity:Byte read FTextVelosity write SetTextVelosity;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("mine", [TRunningText]);
end;
constructor TRunningText.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Self.AutoSize:=true;
FTimer:=TTimer.Create(Self);
FTimer.Enabled:=false;
FTimer.Tag:=0;
FTimer.OnTimer:=Move;
FText:="RunningText";
FTextLength:=5;
TextVelosity:=5;
end;
destructor TRunningText.Destroy;
begin
FTimer.Free;
inherited Destroy;
end;
procedure TRunningText.Move(Sender:TObject);
var
str:String;
n1, n2:Integer;
begin
n1:=FTimer.Tag;
inc(n1);
n1:=n1 mod Length(Text);
FTimer.Tag:=n1; //Делаю так, чтобы в теге хранился нужный n1
inc(n1); //Но использую на единицу увеличенный
n2:=n1+FTextLength;
str:=Text;
while Length(str)<n2 do str:=str+" "+Text; //Приписываю нужное количество раз повторенный текст
Self.Caption:=Copy(str, n1, FTextLength);
end;
procedure TRunningText.RunText;
begin
FTimer.Enabled:=true;
end;
procedure TRunningText.SetText(const Value: String);
begin
FTimer.Tag:=0; //При записи обнуляю тег
FText := Value;
If FText="" then FText:="*";
end;
procedure TRunningText.SetTextLength(const Value: Byte);
begin
FTextLength := Value;
if FTextLength<5 then FTextLength:=5; //Меньше 5 символов не бежать
end;
procedure TRunningText.SetTextVelosity(const Value: Byte);
begin
FTextVelosity := Value;
if FTextVelosity<1 then FTextVelosity:=1;
if FTextVelosity>20 then FTextVelosity:=20;
FTImer.Interval:=round(1000/FTextVelosity); //Устанавливаю интервал таймера
end;
procedure TRunningText.StopText;
begin
FTimer.Enabled:=false;
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c