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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2009, 00:35   #1
max404
Новичок
Джуниор
 
Регистрация: 18.10.2009
Сообщений: 3
По умолчанию Как объединить объкты TShape

Возможно ли объединить объкты TShape, что бы при проверке одного параметра проверялись все Шейпы?
max404 вне форума Ответить с цитированием
Старый 18.10.2009, 00:54   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Конкретней опишите что именно Вам надо.
p.s Объединить.....ну можно и массив TShape'пов создать.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 18.10.2009, 01:02   #3
max404
Новичок
Джуниор
 
Регистрация: 18.10.2009
Сообщений: 3
По умолчанию

Есть 30 Шейпов. Идет проверка каждого шейпа если
Shape1.Top+17=Shape2.Top; Shape1.Top+17=Shape3.Top ...

Приходится эту проверку делать для каждого шейпа.
Можно ли прописать одну общую строчку сравнения для всех шейпов.
max404 вне форума Ответить с цитированием
Старый 18.10.2009, 01:47   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Первое что приходит на ум, это все же массив (можно список):
Код:
var
  Shape : array[1..3] of TShape;
  i : Integer;

for i:=1 to 3 do
  begin
    Shape[i] := TShape.Create(Self);
    Shape[i].Name := 'Shape' + IntToStr(i);
    Shape[i].Top := 300;
    Shape[i].Left := i*100+50;
    Shape[i].Width := 50;
    Shape[i].Height := 50;
    Shape[i].Parent:= Form1;
  end;

for i:=2 to 3 do
if Shape[1].Top + 17 = Shape[i].Top
  then Caption := '1'
    else Caption :='0';
end;
з.ы. по другому что то не пойму я как. хД
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 18.10.2009, 12:45   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

А через FindComponent и цыклом проверять равные они или нет?

Чото типа такого (за ошипки ногами в живот не бить, писал тут)
Код:
for i:=.. to .. do begin
s:='Shape'+inttostr(i)
if Shape1.Top+17=TShape(FindComponent(s)).Top then
S:=S+1 else S:=S-1;
end;

if S:={количество шейпов} then
W0LF вне форума Ответить с цитированием
Старый 18.10.2009, 21:47   #6
max404
Новичок
Джуниор
 
Регистрация: 18.10.2009
Сообщений: 3
По умолчанию

Вот так вот заработало:

for i:=3 to shape_n do
begin
sn:='Shape'+inttostr(i);
TShape(FindComponent(sn)).Visible:= True;
end;

Ток sn:string;

Спасибо!
max404 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объединить idHTTP1.Get и WebBrowser1? DemonXT Работа с сетью в Delphi 5 09.04.2009 12:04
Как объединить несколько ячеек katlis Microsoft Office Excel 9 12.01.2009 22:29
Как объединить несколько ячеек katlis Microsoft Office Excel 1 02.08.2007 23:31
Как объединить файлы? CMP Помощь студентам 6 07.05.2007 21:52
Как перемещать TShape с помощью мыши? SaCREDO Помощь студентам 1 29.03.2007 00:37