Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про процедуры   Найти похожие ветки 

 
hgd   (2004-04-02 22:33) [0]

Есть такой текст
//
procedure TForm1.ShapeDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//?
end;

Shape: array [1..20] of TShape;
Shape[ii].OnMouseDown:=ShapeDown;
//
Как видно в тексте создается компонент Shape и присваивается процедура ShapeDown. Но как потом узнать в процедуре ShapeDown, на какой компонент произведен click.


 
Девушка   (2004-04-02 22:40) [1]

Делаешь массив из TMyShape. В TMyShape добавляешь еще свойство, например index, типа целое.
При создании каждого из shap-в в констукторе в свойство index записываешь его номер равный его порядковому номеру в массиве. Потом при вызове любого события обращаешся к index


 
hgd   (2004-04-02 22:57) [2]

Не понял..... я начинающий. Этот тект уже есть, но как при нажатии на TShape узнать индекс нажатого


 
Девушка   (2004-04-02 22:59) [3]

Попробуй что-то типа with sender as TMyShape do a:=sender.index


 
hgd   (2004-04-02 23:45) [4]

Неа не компелирует.


 
Девушка   (2004-04-02 23:49) [5]

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
with sender as TShape do Pen.Color:=clred;
end;

работает.


 
Девушка   (2004-04-02 23:51) [6]

Получишь
with sender as TMyShape do begin
то что нужно получить:=index
                          end;


 
Dimaxx ©   (2004-04-03 00:08) [7]

При создании запихать номер шейпа в свойство Shape.Tag - он доступен всегда. Вот тебе и индекс. Я всегда Tag использую для таких целей.


 
Dimaxx ©   (2004-04-03 00:08) [8]

При создании запихать номер шейпа в свойство Shape.Tag - он доступен всегда. Вот тебе и индекс. Я всегда Tag использую для таких целей.


 
hgd   (2004-04-03 13:56) [9]

А как потом из процедуры ShapeDown вызвать другую процедуру ShapeMove с тем же Shap"om
//
procedure TForm1.ShapeDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin

with sender as TShape
 do
  Width:=X;
//а дальше что-то вроде: запусти процедуру для TShape
//ShapeMove(.... что указать?)
//ShapeMove с такими же параметрами что и ShapeDown

end;

end;
//


 
Девушка   (2004-04-03 14:37) [10]

//ShapeMove(ShapeArray[index])


 
VMcL ©   (2004-04-03 15:04) [11]

>>hgd  (02.04.04 22:33)

>Как видно в тексте создается компонент Shape
Вот чего уж точно в тексте не видно, так это создания компонента. Ну в упор не вижу TShape.Create(...)

>на какой компонент произведен click
А Sender - это, по-твоему, что за зверь?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1080113981
ИМХО
2004-03-24 10:39
2004.04.18
Еще одна задачка для шахматистов


1-1080860209
Феликс
2004-04-02 02:56
2004.04.18
Направление движения.


14-1080378527
Паниковский
2004-03-27 12:08
2004.04.18
Как отсюда выйти?


6-1077183962
NTDim
2004-02-19 12:46
2004.04.18
Маппинг портов


3-1079686617
_Andy_
2004-03-19 11:56
2004.04.18
Datamodule





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский