PDA

View Full Version : label که با حرکت موس تغییر رنگ دهد



nassim_20
سه شنبه 28 خرداد 1387, 09:52 صبح
من کامپوننت label ی رو می خواهم که با رویدادهای MouseEnter،MouseLeave و Click تغییر رنگ دهد

skmkh6056
سه شنبه 28 خرداد 1387, 13:13 عصر
سومی را نمیدونم ولی جواب اولی و دومیتون :
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Font.Color := clRed
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
Label1.Font.Color := clBlack
end;

nassim_20
سه شنبه 28 خرداد 1387, 15:00 عصر
ممنون از لطفتون اما مشکل من اینست که این label ها قرار است در زمان اجرا ساخته شوند و در سه رنگ مختلف اگه همه یکرنگ بود میشد یه کاری کرد ولی حالا هر کدوم یه رنگ هستند وقرار وقتی موس روش میره تغییر رنگ بده و وقتی موس از روش رفت برگردد به رنگ قبلی اش و وقتی کلیک شد رنگش عوض شود
در ضمن از هیچ پارامتری برای نگهداری نوع رنگ اولیه اش نمی توانم استفاده کنم چون از tag هر label در امر دیگری استفاده کرده ام که اگر خود label یه پارامتر دیگر مثل tag داشت بازم مشکلم حل میشد

Hsimple11
سه شنبه 28 خرداد 1387, 19:33 عصر
با سلام

فکر کنم Label های آماده مثل LMD یا TMS کارتان را راحت تر کند با این حال باید در ابتدا رنگ label ها را بدست بیاورید. اگر رنگ آنها بصورت random در زمان Create تولید میشود و از آنها خبر ندارید باید اول رنگ آنها را بدست آورده و با کمی تغییر رنگ مربوط به mousemove و mouseleave را بسازید :


Edit1.Text:=IntToStr( GetRValue(Label1.Font.Color));
Edit2.Text:=IntToStr( GetGValue(Label1.Font.Color));
Edit3.Text:=IntToStr( GetBValue(Label1.Font.Color));

و بعد این مقادیر را تغییر دهید و کد مربوط به رویدادهای دلخواه خود را بنویسید.

موفق باشید...