Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать имя компоненты? [D5, WinXP]


Cowboy ©   (2002-07-10 11:31:00) 

Ещё раз здрасьте! Динамически создаётся туева хонна TImage. Я кликаю по одному из них мышой... Как узнать имя компоненты по которой я кликнул? Пробую так:
var
Comp : TComponent;
NameComp : TComponentName;
...
Comp := Self;
NameComp := Comp.Name;

ни фига не получается.
Как быть?


Cowboy   (2002-07-10 12:40:00) [1]

Огромное спа!


Skier   (2002-07-10 12:33:00) [2]

>Cowboy


procedure TForm1.Button1Click(Sender: TObject);

function GetUniqueName(AComponentOwner : TComponent; const ANamePrefix : String) : String;
var
ii : Integer;
ACurrentName : String;
begin
Result := EmptyStr;
if (AComponentOwner = nil) or
(ANamePrefix = EmptyStr) then Exit;
ACurrentName := EmptyStr;
for ii := 1 to MAXINT do begin
ACurrentName := ANamePrefix + IntToStr(ii);
if AComponentOwner.FindComponent(ACurrentName) = nil then begin
Result := ACurrentName;
Exit;
end; //if
end; //for
end; //GetUniqueName

var
ii : Integer;
AComponent : TImage;
begin
for ii := 1 to 5 do begin
AComponent:= TImage.Create(Self);
AComponent.Name:= GetUniqueName(Self, "Image");
AComponent.Parent:= Self;
ShowMessage(AComponent.Name);
end; //for
end;


Cowboy   (2002-07-10 12:29:00) [3]

>Skier
Drag&Drop


Skier   (2002-07-10 12:24:00) [4]

>Cowboy
> перетаскивать этот TImage по форме


То есть ???


Cowboy   (2002-07-10 12:23:00) [5]

>Skier
Не, имя я сам присвоить не могу. Если бы я мог написать функцию, то я не обратился бы за помощью :(. А имя мне нужно для того, что бы я мог перетаскивать этот TImage по форме.


Skier   (2002-07-10 12:07:00) [6]

>Cowboy
И ещё :
тебе обязательно испольовать Name, может быть Tag-ом
можно обойтись ???


Skier   (2002-07-10 12:05:00) [7]

>Cowboy
А ты не можешь написать функцию, которая бы
возвращала тебе уникальное имя компонента ?!


Cowboy   (2002-07-10 12:03:00) [8]

>Kaban
Я пишу прогу для автоматизации инвентаризации компов на фирме (во! :)). Timage это картинка монитора. В зависимости от кол-ва компов на этаже (записей в базе), я динамически создаю столько же TImage (картинок монитора).
>Skier
Создаю я TImage в цикле, поэтому... Хотя постой.


RV   (2002-07-10 12:02:00) [9]

??????
напиши процедуру, повесь ее всем имаджам на онклик....


Skier   (2002-07-10 11:40:00) [10]

>Cowboy
А ащё есть такая вещь как TObjectList


Skier   (2002-07-10 11:39:00) [11]

>Cowboy


procedure TForm1.Button1Click(Sender: TObject);
var
AComponent : TImage;
begin
AComponent:= TImage.Create(self);
try
AComponent.Name:= "YourImage";
AComponent.Parent:= self;
ShowMessage(AComponent.Name); //будет показываться "YourImage"
finally
AComponent.Free;
end; //try
end;


Kaban   (2002-07-10 11:38:00) [12]

Кроме того, создание большого числа TImage трудно назвать хорошим стилем программирования. Да и не совсем понятно, зачем тебе знать их имена


GenBr   (2002-07-10 11:36:00) [13]

1. Ты уверен, что Self-это тот объект, который тебе нужен?
2. Ты уверен, что задал имя нужого тебе компонента?

Из твоего кода ничего не понятно


Skier   (2002-07-10 11:34:00) [14]

>Cowboy
Вообще-то имя компонента следовало бы задать при
создании.


Kaban   (2002-07-10 11:33:00) [15]

в процедуре обработки клика
(Sender as TImage).Name
TImage(Sender).Name


Наверх

Титульная страница Поиск, карта сайта Написать письмо