![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Кому не сложно помогите:
вот листинг: Код:
unit Unit21;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm21 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form21: TForm21;
implementation
{$R *.dfm}
const
s = 'ДОБРО ПОЖАЛОВАТЬ В НАШЕ ТАКСИ';
ColDark = clGray;
ColNorm = clSilver;
ColLight = clWhite;
XPos = 10;
YPos = 10;
dx = 1;
dy = 1;
procedure TForm21.FormClick(Sender: TObject);
begin
form21.Close;
end;
procedure TForm21.FormKeyPress(Sender: TObject; var Key: Char);
begin
label1.visible:=true;
label2.visible:=true;
label3.visible:=true;
label4.visible:=true;
label5.visible:=true;
label6.visible:=true;
label7.visible:=true;
end;
procedure TForm21.FormCreate(Sender: TObject);
begin
Form21.Canvas.Brush.Style := bsClear;
with Form21.Canvas.Font do
begin
name := 'Arial';
Size := 20;
Style := [fsBold];
end;
end;
procedure TForm21.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with Form21.Canvas do
begin
Font.Color := ColDark;
TextOut(XPos - dx, YPos - dy, s);
Font.Color := ColLight;
TextOut(XPos + dx, YPos + dy, s);
Font.Color := ColNorm;
TextOut(XPos, YPos, s);
end;
end;
procedure TForm21.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with Form21.Canvas do
begin
Font.Color := ColLight;
TextOut(XPos - dx, YPos - dy, s);
Font.Color := ColDark;
TextOut(XPos + dx, YPos + dy, s);
Font.Color := ColNorm;
TextOut(XPos, YPos, s);
end;
end;
procedure TForm21.FormPaint(Sender: TObject);
begin
Form21.MouseUp(mbLeft, [], 0, 0);
end;
end.Задача поставлена следующая сделать шашку такси.и чтобы квадратики с интервалом времени появлялись или вылетали. На 1 надпись не обращайте особого внимания(это я сделал просто для красоты). далее я тупо указал значения всех label как false, а в программном коде как true. при нажитии кнопки Enter у меня все шашку всю показывает. и не удивительно - интервал(период)времени не указан. кто если знает помогите Последний раз редактировалось Admin, 14.12.2009 в 10:15. |
|
#2
|
||||
|
||||
|
Так добавьте TTimer, выставите в нем необходимый интервал и обрабатывайте в событии ваши шашки.
|
|
#3
|
|||
|
|||
|
А без Timer сделать можно как нибудь?
преподаватель зараза не разрешает им пользоваться=( |
|
#4
|
||||
|
||||
|
Хоть и изврат, но можно.
Примерно так: Код:
procedure TForm1.FormActivate(Sender: TObject);
Var
t: LongInt;
begin
t := GetTickCount;
repeat
if GetTickCount-t >= 100
then begin
//Здесь помещаете ваш модуль для отрисовки
Form1.Left := Form1.Left + 1;
if Form1.Left+Form1.Width > Screen.Width
then Form1.Left := 0;
t := GetTickCount;
end;
Application.ProcessMessages;
until false;
end;Но как остановить сей процесс выдумывайте сами ![]() |
|
#5
|
|||
|
|||
|
Cпс прикольная вещь=)
только по задании мне надо чтобы шашки(label) появлялись по очереди с интервалом ну допустим в 2секунды. накачал всяких программ -подобных найти не могу=( |
|
#6
|
||||
|
||||
|
Я же для примера окно бегать заставляю. Свой модуль отрисовки шашек туда вставьте и интервал не 100, а 2000 = 2сек поставьте.
|
|
#7
|
|||
|
|||
|
легко сказать=)
первый раз слышу че такой модуль отресовки.яж ток начинающий. ну всё равно спасибо что помог чем смог=)признателен |
|
#8
|
||||
|
||||
|
Модуль отрисовки в даном случае - это тот код который должен быть исполнен...раз тебе нужно что то перерисовать, то и прокомментирован как "модуль для отрисовки"...
|
|
#9
|
|||
|
|||
|
мне не нужно перериросовывать.мне тупо нужно между появлениями
label1 и label2 и т.д. сделать интервал времени. просто вот такую вроде глупость а сделать не могу. мне бы 1 скрипт связки узнать а там естественно проще будет. |
|
#10
|
||||
|
||||
|
Ну модулем можно назвать любой завершенный блок программы.
В вашем случае отрисовка шашечек такси может быть использована как в вашей программе, так и где-то еще. Это можно назвать модулем. Сложность в отрисовке? Ладно, я сегодня добрый, держите: Код:
procedure TaxiLogo(Canvas: TCanvas; X,Y: Integer);
Const
Box: TPoint = (X:20;Y:20);
Var
i: Integer;
begin
with Canvas
do begin
Brush.Color := clYellow;
Rectangle(X,Y,X+Box.X*7,Y+Box.Y*2);
Brush.Color := clBlack;
for i := 0 to 6
do if i mod 2 = 0
then Rectangle(X+i*Box.X,Y,X+(i+1)*Box.X,Y+Box.Y)
else Rectangle(X+i*Box.X,Y+Box.Y,X+(i+1)*Box.X,Y+Box.Y*2);
end;
end;Ну и вызов соответственно: Код:
TaxiLogo(Canvas, 20, 20); |
|
#11
|
|||
|
|||
|
Спасибо ОГРОМНОЕ !!!! Очень выручил!
спс спс спс.... |
|
#12
|
||||
|
||||
|
Немножко улучшил, для перемигивания шашечками:
Код:
procedure TaxiLogo(Canvas: TCanvas; X,Y: Integer; BkColor,Color: TColor);
Const
Box: TPoint = (X:20;Y:20);
Var
i: Integer;
begin
with Canvas
do begin
Brush.Color := BkColor;
Rectangle(X,Y,X+Box.X*7,Y+Box.Y*2);
Brush.Color := Color;
for i := 0 to 6
do if i mod 2 = 0
then Rectangle(X+i*Box.X,Y,X+(i+1)*Box.X,Y+Box.Y)
else Rectangle(X+i*Box.X,Y+Box.Y,X+(i+1)*Box.X,Y+Box.Y*2);
end;
end; |
|
#13
|
|||
|
|||
|
Спс еще раз.
а вот это: Ну и вызов соответственно: Код: TaxiLogo(Canvas, 20, 20); после какой фразы записывать?или куда? просто копирую твоё всё всятавляю .ошибки нет запускается но пустой экран.при нажатие мыши или клавиш ниче не появляется. Последний раз редактировалось kinderpingui20, 14.12.2009 в 14:39. |
|
#14
|
||||
|
||||
|
Смотря куда вставляешь.
Примерно так должно быть: Код:
procedure TForm1.FormPaint(Sender: TObject);
Var
t,i: LongInt;
begin
t := GetTickCount;
i := 1;
repeat
if GetTickCount - t > 500
then begin
if i mod 2 = 0
then TaxiLogo(Canvas, 20, 20, clYellow, clBlack)
else TaxiLogo(Canvas, 20, 20, clBlack, clYellow);
t := GetTickCount;
Inc(i);
end;
until False;
end; |
|
#15
|
|||
|
|||
|
спс.всё даже эффектнее чем по заданию=))))
|