ورود

View Full Version : سوال: مشکل با اشاره گر



hector2000
سه شنبه 31 اردیبهشت 1392, 18:47 عصر
سلام
من در فرمم ده لیبل دارم و رویداد کلیک شدن تمام انها را به یک تابع قرار دادم(تابع TClick).می خواهم هر لیبلی که کلیک شد رنگ پس زمینه ان تغییر کند و رنگ پس زمینه لیبل قبلی که کلیک شده به حالت اولیه برگردد ولی موفق نبودم.من اشاره گری تعریف کزدم و ادرس لیبل را در ان می ریزیم و در دفعات بعد که لیبلی کلیک شد ادرس اشاره گر قبلی یادش نیست و ادرس لیبل جدید جایگزین ان شده.من می خواخم هر لیبلی که کلیک شد رنگ پس زمینه لیبل قبلی به حالت اولیه برگرده ولی اشاره گر ادرس ان را ندارد.لطفا راهنمایی کنید


Procedure TForm1.TClick(Sender: TObject);
begin
if P <> nil then
begin
P.Color:=clBtnFace;
end;
P:=@Sender;
P.color :=clblack;
end;


در قسمت public اینگونه اشاره گر را تعریف کردم

var
P:^TLabel;

Felony
سه شنبه 31 اردیبهشت 1392, 20:00 عصر
نیازی به تعریف اشاره گر نیست ، اشیاء در دلفی خودشون اشاره گر هستند ، یعنی به شیئ از نوع کلاس پایه مورد نظر در حافظه اشاره میکنن ، پس اون کد شما یعنی اشاره به اشاره گر یک شئ !

پس اون TLabel^ باید بشه TLabel و کدتون هم اینطور Stable تر هست :


if (Sender IS TLabel) then
begin
TLabel(Sender).Font.Color := clRed;
if Assigned(P) then
P.Font.Color := clblack;
P := TLabel(Sender);
end;

hector2000
سه شنبه 31 اردیبهشت 1392, 22:37 عصر
ممنونم از پاسختون
ایا راهی دارد که با داشتن نام یک ابجکت که در استرینگ ذخیره کردیم ، به ان دسترسی پیدا کنیم؟

Felony
چهارشنبه 01 خرداد 1392, 05:38 صبح
قبل از ارسال جستجو کنید ، بارها در موردش بحث شده .

FindComponent