私は12の形を持っています
Shape1
Shape2
.....
Shape12
12個のラベルがあります
Label13
Label14
......
Label24
このような関数を作成する方法があるかどうか疑問に思っていました。マウスで図形を入力すると、対応するラベルが別のラベルに割り当てられます。たとえば、Label25:
Label25 :=
OnMouseEnter
shape1 -> label13
shape2 -> label14
...
shape12 -> label24
したがって、マウスが Shape1 に入ると、Label25 は Label13 と等しくなり、マウスが Shape2 に入ると、Label25 は Label14 と等しくなり、マウスが Shape12 に入ると、Label25 は Label24 と等しくなります。
私は書くことができることを知っています
label25 := labelxx
各マウス入力イベントで。しかし、ラベルの名前と形状が対応しているため、より簡単な方法があると考えました。ここで、ラベル番号は形状番号よりも 12 大きくなっています。
提案を追加した後、これを追加しました
procedure TFZone1Mod7.ChangeText(sender: TObject);
var
ShapeOrderNo: integer;
FoundComponent: TComponent;
begin
if TryStrToInt(copy(TShape(Sender).Name,6,MaxInt),ShapeOrderNo) then
begin
FoundComponent := FindComponent('label'+inttostr(ShapeOrderNo+12));
if (FoundComponent is TLabel) then
Label25.Caption := TLabel(FoundComponent).Caption
else
showmessage('not found');
end;
showmessage('failed try');
end;
procedure TFZone1Mod7.Shape1MouseEnter(Sender: TObject);
begin
changetext(self);
end;
end.
しかし、実行されるたびに失敗してしまいます。情報を間違って送信していますか?