Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
ВнизКак управлять кнопками? Найти похожие ветки
← →
Rradion (2003-04-23 15:59) [0]Таки умудрился нарисовать картиночку, и надо чтоб её можно было двигать кнопками.
...
chr:=TBitMap.Create;
chr.LoadFromFile("chr.bmp");
BOX.Canvas.Draw(dist* X,dist* Y,chr);
...
Надо чтобы при нажатии, на пример, кнопки "в право" Х становисля равен Х+1 , если "в лево" то Х:=Х-1 и т.д.
Спасибо!
← →
Skier (2003-04-23 16:08) [1]1) TForm.KeyPreview := True; (на всякий...)
2) Устанавливаешь начальные значения переменной dist,
X И Y устанавливаешь в 1
3) Создаёшь обработчик OnKeyDown для формы
4) В обработчике :
begin
case Key of
VK_LEFT : begin
Dec(X);
Dec(Y);
BOX.Canvas.Draw(dist + X,dist + Y,chr);
end; //VK_LEFT
end; //case
end;
← →
Rradion (2003-04-23 16:27) [2]Спасибо, написАл...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_LEFT : begin
Dec(X);
Dec(Y);
BOX.Canvas.Draw(dist + X,dist + Y,chr);
Label1.Caption := IntToStr( StrToInt(Label1.Caption) + X);
end; //VK_LEFT
end; //case
end;
http://www.vi2.com/getFile/138851.jpg
...но ворди как не работает. Т.е. работает только когда выбран первый компанент формы ( передвигалка ).
← →
Skier (2003-04-23 16:30) [3]>Rradion
Расскажи подробно что хочешь сделать в конечном итоге...
← →
Rradion (2003-04-23 16:37) [4]В конечном итоге надо сделать чтоб червичок бегал по клеткам управляемый кнопками. При нажатии, на пример, кнопки "в лево" он передвигался на одну клетку в лево и т.д.
Это уже работает, но только когда выделен первый компанент формы... а желательно чтоб управлени работало в любом случии, не зависемо от того, что выделено на форме.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_LEFT : begin
Dec(X);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end; //VK_LEFT
end; //case
case Key of
VK_RIGHT : begin
Inc(X);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end; //VK_RIGHT
end; //case
case Key of
VK_UP : begin
Dec(Y);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end; //VK_UP
end; //case
case Key of
VK_DOWN : begin
Inc(Y);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end; //VK_DOWN
end; //case
end;
Спасибо!
← →
Skier (2003-04-23 16:42) [5]TForm.KeyPreview := True; поставил ?
← →
Rradion (2003-04-23 16:51) [6]поставил, в "properties"...
← →
Skier (2003-04-23 16:53) [7]
> Это уже работает, но только когда выделен первый компанент
> формы...
Поясни...какой компанент ?
BOX-ы должны быть разные или всегда один и тот же ?
← →
Rradion (2003-04-23 17:01) [8]BOX один, большой в PaintBox центре.
Проблема в том, что после нажатия "DRAW!" управлять можно только если курсором выделиш "TrackBar" ( двигалку в групе "Сложность" ), иначи червечок не двигается :( ...
http://www.vi2.com/getFile/138857.jpg
Так же приписал "chr1", это чтоб след остовался.
И "if" что он за рамки поля не выбегал.
VAR
X,Y,dist, vgrid:integer;
chr,chr1:TBitMap;
procedure TForm1.resClick(Sender: TObject);
begin
BOX.Canvas.Pen.Color:=RGB(127,157,185);
vgrid:=0; dist:=30;
Repeat
begin
vgrid:=vgrid+30;
BOX.Canvas.MoveTo(vgrid,0);
BOX.Canvas.LineTo(vgrid,400);
BOX.Canvas.MoveTo(0,vgrid);
BOX.Canvas.LineTo(600,vgrid);
end
Until vgrid=600;
chr:=TBitMap.Create;
chr.LoadFromFile("chr.bmp");
chr1:=TBitMap.Create;
chr1.LoadFromFile("chr1.bmp");
X:=9; Y:=10;
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_LEFT : begin
If X >= 1 then
begin
BOX.Canvas.Draw(dist*X,dist*Y,chr1);
Dec(X);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end;
end; //VK_LEFT
end; //case
case Key of
VK_RIGHT : begin
If X <= 18 then
begin
BOX.Canvas.Draw(dist*X,dist*Y,chr1);
Inc(X);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end;
end; //VK_RIGHT
end; //case
case Key of
VK_UP : begin
If Y >= 1 then
begin
BOX.Canvas.Draw(dist*X,dist*Y,chr1);
Dec(Y);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end;
end; //VK_UP
end; //case
case Key of
VK_DOWN : begin
If Y <= 11 then
begin
BOX.Canvas.Draw(dist*X,dist*Y,chr1);
Inc(Y);
BOX.Canvas.Draw(dist*X,dist*Y,chr);
end;
end; //VK_DOWN
end; //case
end;
end.
← →
Skier (2003-04-23 17:09) [9]>Rradion
> управлять можно только если курсором выделиш "TrackBar"
> ( двигалку в групе "Сложность" ), иначи червечок не двигается
> :( ...
Что-то никак не въеду...
Почему не двигается ? т.е. если не выделен TrackBar, то, я надеюсь, обработчик TForm1.FormKeyDown вызывается ?
← →
Rradion (2003-04-23 17:17) [10]Да именно что не вызывается...
при запуски, TrackBar выделен и при нажатии вызывается, но если в место TrackBara выделить что нибудь другое или вообше снять выделение, то не вызывается.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c