Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.12.2009, 09:10
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию Как сделать интервал времени?

Кому не сложно помогите:
вот листинг:
Код:
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.
Admin: Пользуемся тегами!

Задача поставлена следующая сделать шашку такси.и чтобы квадратики с интервалом времени появлялись или вылетали.
На 1 надпись не обращайте особого внимания(это я сделал просто для красоты).
далее я тупо указал значения всех label как false, а в программном коде как true. при нажитии кнопки Enter у меня все шашку всю показывает.
и не удивительно - интервал(период)времени не указан.
кто если знает помогите

Последний раз редактировалось Admin, 14.12.2009 в 10:15.
Ответить с цитированием
  #2  
Старый 14.12.2009, 10:27
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Так добавьте TTimer, выставите в нем необходимый интервал и обрабатывайте в событии ваши шашки.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 14.12.2009, 11:16
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

А без Timer сделать можно как нибудь?
преподаватель зараза не разрешает им пользоваться=(
Ответить с цитированием
  #4  
Старый 14.12.2009, 11:46
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Хоть и изврат, но можно.
Примерно так:
Код:
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  
Старый 14.12.2009, 12:01
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

Cпс прикольная вещь=)
только по задании мне надо чтобы шашки(label) появлялись по очереди с интервалом ну допустим в 2секунды.
накачал всяких программ -подобных найти не могу=(
Ответить с цитированием
  #6  
Старый 14.12.2009, 12:39
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Я же для примера окно бегать заставляю. Свой модуль отрисовки шашек туда вставьте и интервал не 100, а 2000 = 2сек поставьте.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 14.12.2009, 13:44
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

легко сказать=)
первый раз слышу че такой модуль отресовки.яж ток начинающий.
ну всё равно спасибо что помог чем смог=)признателен
Ответить с цитированием
  #8  
Старый 14.12.2009, 14:01
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Модуль отрисовки в даном случае - это тот код который должен быть исполнен...раз тебе нужно что то перерисовать, то и прокомментирован как "модуль для отрисовки"...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #9  
Старый 14.12.2009, 14:07
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

мне не нужно перериросовывать.мне тупо нужно между появлениями
label1 и label2 и т.д. сделать интервал времени.
просто вот такую вроде глупость а сделать не могу.
мне бы 1 скрипт связки узнать а там естественно проще будет.
Ответить с цитированием
  #10  
Старый 14.12.2009, 14:18
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну модулем можно назвать любой завершенный блок программы.
В вашем случае отрисовка шашечек такси может быть использована как в вашей программе, так и где-то еще. Это можно назвать модулем.
Сложность в отрисовке?
Ладно, я сегодня добрый, держите:
Код:
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  
Старый 14.12.2009, 14:25
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо ОГРОМНОЕ !!!! Очень выручил!
спс спс спс....
Ответить с цитированием
  #12  
Старый 14.12.2009, 14:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Немножко улучшил, для перемигивания шашечками:
Код:
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  
Старый 14.12.2009, 14:36
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

Спс еще раз.
а вот это:
Ну и вызов соответственно:
Код:
TaxiLogo(Canvas, 20, 20);

после какой фразы записывать?или куда?
просто копирую твоё всё всятавляю .ошибки нет запускается но пустой экран.при нажатие мыши или клавиш ниче не появляется.

Последний раз редактировалось kinderpingui20, 14.12.2009 в 14:39.
Ответить с цитированием
  #14  
Старый 14.12.2009, 14:44
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Смотря куда вставляешь.
Примерно так должно быть:
Код:
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  
Старый 14.12.2009, 14:53
kinderpingui20 kinderpingui20 вне форума
Прохожий
 
Регистрация: 14.12.2009
Сообщения: 11
Репутация: 10
По умолчанию

спс.всё даже эффектнее чем по заданию=))))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025