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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2007, 18:06   #11
Klyacksa
 
Регистрация: 04.05.2007
Сообщений: 7
По умолчанию

Начала делать через объеkты shape. Не получается организовать взаимодействие объеkтов и методов. Каk сделать, чтобы двигался именно нужный объеkт, а не все вместе и чтобы они не наkладывались друг на друга? вот kод:

Код:
unit Shape_;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
   Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    Shape1: TShape;
    constructor ShapeCreate(Sender:TObject; var NewShape:TShape);
       procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
  cx,cy,x,y:integer;
  down:boolean=false;
implementation
{$R *.dfm}
constructor TForm2.ShapeCreate(Sender:TObject; var NewShape:TShape);
begin
 NewShape:=TShape.Create(Self);
 with NewShape do
  begin
    Parent:=Form2.GroupBox1;
    Shape:=stCircle;
    OnMouseDown:=Shape1MouseDown;
    OnMouseMove:=Shape1MouseMove;
    OnMouseUp:=Shape1MouseUp;
    Left:=288;
    Top:=11;
  end;
end;
procedure TForm2.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var NewShape:TShape;
begin
 down:=true;
if (Shape1.Left=288) and (Shape1.Top=11) then
                                  ShapeCreate(GroupBox1,NewShape);
cx:=x;
cy:=y;
end;
procedure TForm2.Shape1MouseMove(Sender:TObject;
    Shift:TShiftState;X,Y:Integer);
var Left,Top:integer;
    NewShape:TShape;
begin
 if down=true then
begin
Left:=Shape1.Left-cx+x;
Top:=Shape1.Top-cy+y;
if (Left<Form2.GroupBox1.Width-Shape1.Height) and
    (Left>Form2.GroupBox1.Left-15)
     then Shape1.Left:=Left;
if (Top<Form2.GroupBox1.Height-Shape1.Width) and
    (Top>Form2.GroupBox1.Top-20)
     then Shape1.Top:=Top;
end;
end;
procedure TForm2.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
down:=false;
end;
end.
Klyacksa вне форума Ответить с цитированием
Старый 23.05.2007, 20:39   #12
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,089
По умолчанию

вообще несколько не понял код, но чтобы работать с тем, элементом, по которому тыкнули используй: TShape(Sender)...
pu4koff вне форума Ответить с цитированием
Старый 24.05.2007, 07:41   #13
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

Держи, набросал на скорую руку.
Вложения
Тип файла: rar 111.rar (3.1 Кб, 89 просмотров)
НЕ_АЙС вне форума Ответить с цитированием
Старый 25.05.2007, 21:49   #14
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

норм кодос. Только я не понял вы там список то создаете из фигур?
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 19.06.2008, 12:39   #15
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

Это я удачно зашел. Спасибо всем, кто выложил свои примеры. Это я и искал.
_Инженер_ вне форума Ответить с цитированием
Старый 20.06.2008, 12:58   #16
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Klyacksa, не знаю что от тебя хотят увидеть в универе, может динамическое создание/удаление компонентов, может еще что-то.
Но могу сказать способ вообще без единого компонента, я имею ввиду визуальные компоненты. Из Дельфи объектов понадобиться только TBitmap.
Принцип тот же что Alex21 в начале написал, только вся работа будет с собственными структурами, а сообщения от мыши будут браться с формы, кстати пустой, разве что кнопочек можно пару штук кинуть если надо.

Кстати насчет компонентов, если и использовать в данном случае, то TImage, нужно ведь изображения таскать? Если нет то можно другой.
Динамически созданные компоненты нужно уничтожать самому, если в ходе программы, если они будут до конца работы приложения то не обязательно, при выходе система сама память освободит.
Object.Free;
Object:=nil;
или
FreeAndNil(Object);

Чтобы они не накладывались друг на друга, нужно проверять на столкновения.

Вот пример как я говорил, без визуальных компонентов, это программа для помощи в расшифровке загаданных слов с перепутанными буквами, тут когда то играли в такую игру в свободном общении, некоторые может помнят, это ее исходник.
Вложения
Тип файла: rar drag_sample.rar (9.8 Кб, 69 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 20.06.2008 в 13:15.
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотр графических полей баз данных Vlad_p БД в Delphi 6 17.05.2008 17:46
Построение графических моделей. satanatas Помощь студентам 3 13.01.2008 07:52
Открытия графических файлов Kocapb Общие вопросы C/C++ 3 01.12.2007 19:11
Перемещение рамки по форме Isaev Общие вопросы Delphi 1 16.03.2007 14:57