Delphi
Модератор: Taifun
Вот тебе на примере кнопки
public
MyButton : TButton;
{ Public declarations }
procedure TForm1.FormCreate(Sender: TObject);
begin
MyButton:=TButton.Create(Form1);
With MyButton Do
Begin
Parent:=Form1;
Caption:='Кнопка';
Top:=50;
Left:=50;
OnClick:=Button1Click;
// Тут описываешь все начальные параметры объекта
End;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyButton.Free;
//Эту строку лучше написать по уничтожению формы
end;
Ну а для Image напишешь сам
public
MyButton : TButton;
{ Public declarations }
procedure TForm1.FormCreate(Sender: TObject);
begin
MyButton:=TButton.Create(Form1);
With MyButton Do
Begin
Parent:=Form1;
Caption:='Кнопка';
Top:=50;
Left:=50;
OnClick:=Button1Click;
// Тут описываешь все начальные параметры объекта
End;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyButton.Free;
//Эту строку лучше написать по уничтожению формы
end;
Ну а для Image напишешь сам
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
Как поставить свою кнопку(рисованную)?У меня 3(три)варианта этой кнопки:просто кнопка ,выделенная мышъю,ну и ес-но нажатая.
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
Есть много способов.
Я сначала делал из ресурса. Потом мне понравилось делать так:
Берёшь рисуешь какой нибуди фон и на нее кладешь кнопку. Сохраняешь. Выкладываешь этот рисунак на форму. Потом изменяешь кнопку в проге в которой рисовал. Опять сохраняешь. обрезаешь эту кнопку в том же Paint. Выкладываешь эту кнопку на форму поверх той которая на рисунке и делаешь этому Imag-у Visible:=False
Теперь по таймеру обрабатываешь 4 AND-ами положерие кнопки на экране (которая скрытая) и Visible:=true когда курсор над кнопкой.
If (Curs.X>Form1.Left+Form1.Image3.Left) and
(Curs.X<Form1.Left+Form1.Image3.Left+Form1.Image3.Width) and
(Curs.Y>Form1.Top+Form1.Image3.Top) and
(Curs.Y<Form1.Top+Form1.Image3.Top+Form1.Image3.Height)
then
begin
if Mov=false then Begin
BitMap.Handle:=LoadBitMap(HInstance,'Moved');
Image3.Canvas.Draw(0,0,BitMap);
end;
Mov:=True;
end else гасишь кнопку
end;
Я сначала делал из ресурса. Потом мне понравилось делать так:
Берёшь рисуешь какой нибуди фон и на нее кладешь кнопку. Сохраняешь. Выкладываешь этот рисунак на форму. Потом изменяешь кнопку в проге в которой рисовал. Опять сохраняешь. обрезаешь эту кнопку в том же Paint. Выкладываешь эту кнопку на форму поверх той которая на рисунке и делаешь этому Imag-у Visible:=False
Теперь по таймеру обрабатываешь 4 AND-ами положерие кнопки на экране (которая скрытая) и Visible:=true когда курсор над кнопкой.
If (Curs.X>Form1.Left+Form1.Image3.Left) and
(Curs.X<Form1.Left+Form1.Image3.Left+Form1.Image3.Width) and
(Curs.Y>Form1.Top+Form1.Image3.Top) and
(Curs.Y<Form1.Top+Form1.Image3.Top+Form1.Image3.Height)
then
begin
if Mov=false then Begin
BitMap.Handle:=LoadBitMap(HInstance,'Moved');
Image3.Canvas.Draw(0,0,BitMap);
end;
Mov:=True;
end else гасишь кнопку
end;
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
Ду ю спик инглиш?Мой дельфи7 ду нот понимать слово curs.Или надо какой-то модуль?
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
А как проверить,нажата ли левая мыш,и курсор находится ли на форме(активной и неактивоной)?
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
2 Серый работает.
Да ну,это муть!Там тока 1 вариант,и то он вниз вправо ползет на пиксель при нажатии.SpeedButton тебе в помощь
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
А как заставить компонент вращатся вокруг другово?
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
Песенка про ёлочку. Программисты должны понять.
program Елочка;
Begin
Лес.елочка.create();
While not Лес.елочка.dead do
Begin
лес.елочка.age := лес.елочка.age+1;
if зима or лето then
begin
лес.елочка.plain := true;
лес.елочка.color := cl_green;
end;
метель.filename:=?D:MusicNSYNC - Bye Bye Bye.mp3?;
метель.open;
sleep(1000);
метель.play;
мороз.укутать(лес.елочка);
GetMessage(H, лес.елочка.handle, 0, 0);
if h.uint = wm_замерзла then
dead := true;
end;
лес.заяц.create;
лес.заяц.трусливый := true;
лес.заяц.color := cl_gray;
x := лес.елочка.left;
y := лес.елочка.top;
While x
Begin
лес.заяц.left := x;
inc(x);
лес.заяц.top := y + round( abs(sin(x*pi/180)*10) );
end;
Winexec(?wolf3d.exe /evil?,0);
лес.елочка.cuttoclipboard;
Праздник.pastefromclipboard;
Праздник.елочка.skin.loadfromfile(?нарядная.jpg?);
For i:=1 to SizeOf(Праздник.елочка.радость) do
Прадзник.Дети.Настроение + Праздник.елочка.радость;
End.
program Елочка;
Begin
Лес.елочка.create();
While not Лес.елочка.dead do
Begin
лес.елочка.age := лес.елочка.age+1;
if зима or лето then
begin
лес.елочка.plain := true;
лес.елочка.color := cl_green;
end;
метель.filename:=?D:MusicNSYNC - Bye Bye Bye.mp3?;
метель.open;
sleep(1000);
метель.play;
мороз.укутать(лес.елочка);
GetMessage(H, лес.елочка.handle, 0, 0);
if h.uint = wm_замерзла then
dead := true;
end;
лес.заяц.create;
лес.заяц.трусливый := true;
лес.заяц.color := cl_gray;
x := лес.елочка.left;
y := лес.елочка.top;
While x
Begin
лес.заяц.left := x;
inc(x);
лес.заяц.top := y + round( abs(sin(x*pi/180)*10) );
end;
Winexec(?wolf3d.exe /evil?,0);
лес.елочка.cuttoclipboard;
Праздник.pastefromclipboard;
Праздник.елочка.skin.loadfromfile(?нарядная.jpg?);
For i:=1 to SizeOf(Праздник.елочка.радость) do
Прадзник.Дети.Настроение + Праздник.елочка.радость;
End.
- neXeuse
- Сообщения: 50
- Зарегистрирован: Пт, 21 апр 2006 15:31:34
- Откуда: (указывает вдаль)во-о-он оттуда
Мне надо,чтоб компонент вращался по кругу.Я слышал,там надо синусы и косинусы...Code(R) писал(а):В смысле?neXeuse писал(а):А как заставить компонент вращатся вокруг другово?
Если тебе нужно изменить положение компонента, то есть свойства Left, Top.
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
- BATMEN
- Сообщения: 7786
- Зарегистрирован: Вс, 05 дек 2004 20:05:20
- Откуда: :ɐдʎʞɯО
- Контактная информация:
ну дык формулу окружности помнишь ???
X = radius * sin(angle)
Y = radius * cos(angle)
Ну и допустим делаешь:
Если я правильно понял что тебе нужно.
X = radius * sin(angle)
Y = radius * cos(angle)
Ну и допустим делаешь:
Код: Выделить всё
var
Form1: TForm1;
posX, posY, Angle : integer;
const
R = 50;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(angle);
if angle = 360
then Angle := 0;
shape1.Left :=posX + round( R * sin( Angle * pi/180 ));
shape1.Top :=posY + round( R * cos( Angle * pi/180 ));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
doublebuffered := true;
posX := shape1.Left;
posY := shape1.Top;
end;
end.