Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.02.2009, 00:05
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию Странно...

Попробовал такую штуку...
Код:
const 
px = -194; // то кол. пикс. , на которое откланяется компонент
py = -144;

type 
  VertexType = record 
    Form_:TShape;
    Name_:TLabel;
End;

Var 
vertex:array of VertexType;
Now:byte;

procedure TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var xn,yn:integer;
Begin
Inc(now);
SetLength(Vertex,Now);
Vertex[Now-1].Form_:=TShape.Create(Self);
Vertex[Now-1].Name_:=TLabel.Create(Self);
Xn:=Mouse.CursorPos.X+px;
Yn:=Mouse.CursorPos.Y+py;
Vertex[Now-1].Form_.Shape:=stCircle;
Vertex[Now-1].Form_.Width:=30;
Vertex[Now-1].Form_.Height:=Vertex[Now-1].Form_.Width;
Vertex[Now-1].Name_.Caption:=IntToStr(Now);
Vertex[Now-1].Name_.Font.Size:=11;
Vertex[Now-1].Name_.Font.Style:=[FsBold];
Vertex[Now-1].Form_.Parent:=MainForm;
Vertex[Now-1].Name_.Parent:=MainForm;
Vertex[Now-1].Name_.Font.Name:='Comic Sans MS';
Vertex[Now-1].Name_.Height:=Vertex[Now-1].Name_.Height-4;
Vertex[Now-1].Name_.Color:=Vertex[Now-1].Form_.Brush.Color;
Vertex[Now-1].Form_.Left:=Xn;
Vertex[Now-1].Form_.Top:=Yn;
If (Now > 9) then
Begin
Vertex[Now-1].Name_.Left:=Xn-9;
Vertex[Now-1].Name_.Top:=Yn-11;
End
Else
Begin
Vertex[Now-1].Name_.Left:=Xn-5;
Vertex[Now-1].Name_.Top:=Yn-11;
End;
End;

Кликаю я на одну область, а фигура строится на ок. 200 писк. левее и ниже... Почему?

Последний раз редактировалось 4EJIOBEK, 20.02.2009 в 14:15.
Ответить с цитированием
  #2  
Старый 20.02.2009, 07:38
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

А значения переменных px и py чему равны? Если их прибавлять к координатам мышиного курсора вот и получим смещение влево и вниз. Это первое. Второе: Mouse.CursorPos - это глобальные координаты курсора на экране. Т.е. чтобы считать координаты относительно формы вместо Mouse.CursorPos надо применять координаты которые переданы в параметрах процедуры FormMouseDown (так: Xn := X + px);
В третьих (не относится к координатам): а где создание TShape и TLabel при очередном тычке мышкой? В массив добавляется структура с новыми переменными, ссылающимися на классы TShape и TLabel, а создавать экземпляры этих классов никто не собирается.
И четвертое: присваивать свойству Parent компонента переменную указывающую на ту же форму, в которой он создается в общем случае неверно - надо применять self (либо другой компонент).
Приведенный код не работоспособен - ошибки надо исправлять.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 20.02.2009, 14:16
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от san-46
Приведенный код не работоспособен - ошибки надо исправлять.

Сори... Исправил...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025