компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > Программирование

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 27.04.2005, 12:14   #1
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

Значит есть задача - зделать прогу, в которой есть круг, который ищезает и появляется через секунду (должен мелькать).

Вот мой код:
На форме лежат paintbox1,button1 и timer1

procedure TForm1.Button1Click(Sender: TObject);
begin
with paintbox1.Canvas do
begin
brush.Color:=clred;
pen.Color:=clRed;
ellipse(10,10,50,50);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if paintbox1.Visible=false then paintbox1.Visible:=true
else paintbox1.Visible:=false;
end;

Так же побывал такую процедуру---

procedure TForm1.Timer1Timer(Sender: TObject);
begin
paintbox1.Visible:=not (paintbox1.Visible);
end;

Почему нечего не работает???




vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
27.04.2005, 12:14
Техник
реклама
По умолчанию

Старый 27.04.2005, 15:04   #2
Пользователи
 
Регистрация: 08.04.2004
Сообщений: 798
По умолчанию

2 vxk7m,
ты значение таймера установил ?
MaxFactor вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 27.04.2005, 18:14   #3
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

Цитата:
[b]ты значение таймера установил ?
Все компоненты стандартные, все значения дефолтовые.
Круг появляется, ищезает и больше не появляеться.
vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 27.04.2005, 18:58   #4
Пользователи
 
Регистрация: 07.12.2004
Сообщений: 783
По умолчанию

Ты просто не включил таймер.
Timer1.Enabled := true;
Andy вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 27.04.2005, 20:35   #5
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

Цитата:
[b] Ты просто не включил таймер.
Timer1.Enabled := true;
Цитата:
[b]Все компоненты стандартные, все значения дефолтовые.
По дефолту таймер включён. Грю же - круг появляется, ищезает и больше не появляется.
Мой код правильный? Мож бага в коде?
vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 28.04.2005, 01:07   #6
Пользователи
 
Регистрация: 11.10.2004
Сообщений: 607
По умолчанию

2 vxk7m,
Все очень просто, после появления бокса твоего, тебе нужно перерисовать класс формы. тоесть твой код будет таким:
Простой вариант:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if paintbox1.Visible=false then
paintbox1.Visible:=true
else
paintbox1.Visible:=false;
paintbox1.Canvas.Refresh;
end;
Но при этом варианте возможно мерцание формы...

Вариант второй, правильный:
Код:
unit Unit1;

interface

uses
 *Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 *Dialogs, StdCtrls, ExtCtrls;

type
 *TForm1 = class(TForm)
 * *PaintBox1: TPaintBox;
 * *Timer1: TTimer;
 * *procedure Timer1Timer(Sender: TObject);
 *private
 * *{ Private declarations }
 *public
 * *{ Public declarations }
 *end;

var
 *Form1: TForm1;
 *PShow:boolean;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if PShow=true then begin
with paintbox1.Canvas do
begin
brush.Color:=clred;
pen.Color:=clRed;
ellipse(10,10,50,50);
end;
PShow:=false;
end else begin
with paintbox1.Canvas do
begin
brush.Color:=clBtnFace;
pen.Color:=clBtnFace;
ellipse(10,10,50,50);
end;
PShow:=true;
end;
end;

end.
Здесь все просто. рисуем круг красный, потом ресуем его цветом формы. и он пропадает. Етот вариант более быстрый чем visibly, и к томуже более граматный с точки зрения рисования!
:x:
BooMeR вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 28.04.2005, 08:53   #7
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

2 BooMeR, псиба, пашет =)
vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 28.04.2005, 11:48   #8
Пользователи
 
Регистрация: 23.04.2005
Сообщений: 13
По умолчанию

Народ, Вы же профи, на Вас вся страна смотрит. Рисование на PainBox приводит к тому что лежаший сверху компонент (напимер кнопка) закрывает моргающий кружочек, а поместить PaintBox поверх кнопки не получается.
Предлагаю повесить Shape (кружочек) и уже им орерировать:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape1.Visible := not Shape1.Visible;
end;
DimaBr вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 28.04.2005, 21:20   #9
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

2 DimaBr, епта, чувак, ридап!!!
vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 28.04.2005, 23:11   #10
Пользователи
 
Регистрация: 11.10.2004
Сообщений: 607
По умолчанию

2 vxk7m,
Незафто!
BooMeR вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 07:59. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2