Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 15:58   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Движение квадратика

Здравствуйте! Не получается сделать следующее. Нужно нажатием клавиш-стрелок на клавиатуре заставить перемещаться квадратик по Image1, и, если квадратик "встречает" на своем пути кружок (или "похожее что-то на кружок), то этот квадратик бы "подгонялся бы под размеры кружочка, тем самым кружочек становился бы вписанным в квадратик. Не получается отследить нажатие клавиш-стрелок на клавиатуре. Подскажите пожалуйста?
Вложения
Тип файла: zip Новая папка (2).zip (6.9 Кб, 13 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.04.2010, 16:01   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

копайте в сторону TapplicationEvents
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 29.04.2010, 16:13   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А может пример есть?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.04.2010, 16:33   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Намекаю:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 KeyPreview:=true;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 case key of
  vk_Left:Shape1.Left:=Shape1.Left-10;
  ...
 end;
end;

end.
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2010, 16:35   #5
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

вот и пример
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if Msg.message = WM_KEYDOWN then
    begin
      if Msg.wParam in [VK_LEFT] then ....;
      if Msg.wParam in [VK_RIGHT] then ....;
      if (Msg.wParam in [VK_SPACE]) then ....;
      if Msg.wParam in [VK_ESCAPE] then
        begin
       ...
end;
end;
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 29.04.2010, 16:46   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

ТС, зделал, все предельно просто до ужаса...
Stilet как всегда прав)
Вложения
Тип файла: rar Canvas.rar (1.1 Кб, 16 просмотров)
W0LF вне форума Ответить с цитированием
Старый 29.04.2010, 17:00   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

W0LF, но в Вашем примере, когда квадратик соприкасается с окружностью, не подгоняется под размеры кружочка, т.е. кружок не вписывается в квадратик. То, что он движется-то стрелками это хорошо.

Цитата:
Идея ясна?
Неа)). Что значит эта строчка?
Код:
KeyPreview:=true;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.04.2010, 17:08   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что значит эта строчка?
Значит что когда ты нажмешь клавищу - первым ее обработает форма, а уж потом передаст контролу, у которого фокус. Короче так твоя форма становится ловцом нажатий.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2010, 17:12   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Значит что когда ты нажмешь клавищу - первым ее обработает форма, а уж потом передаст контролу, у которого фокус. Короче так твоя форма становится ловцом нажатий.
Терь понял тебя
Но вопрос-то о квадратике остается открытым).
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 30.04.2010, 10:08   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Может так. Блин зачем сделали сообщение не менее 10 символов
Вложения
Тип файла: zip Новая папка (2).zip (220.0 Кб, 12 просмотров)
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение dampirik Общие вопросы C/C++ 15 10.10.2009 18:47
движение alex(21) Паскаль, Turbo Pascal, PascalABC.NET 9 20.08.2009 00:08
Броуновское движение DEVIL666 Общие вопросы C/C++ 6 21.03.2009 18:17
Движение Mickle Общие вопросы Delphi 5 19.04.2007 23:24