![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать имя компоненты? [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