Label隨著滑鼠Move而改變顏色?? |
答題得分者是:Fishman
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
請教各方前輩:
我在NoteBook上放了二十個Label.......
我希望能在滑鼠移到Label上時.....該Label就會變成紅色......
而滑鼠移開Label時,該Label就變回白色的......
所以我在NoteBook的MouseMove事件中,寫了以上程式碼......
但.....運作起來怪怪的......
就是無法順利變色......可否請各方前輩幫我看看.......
procedure Tmain.Notebook1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i:Integer;
x1,x2,y1,y2:Integer;
begin
for i:=0 to Main.ComponentCount - 1 do
if Main.Components[i] is TLabel then
if Main.Components[i].Tag = 1 then
begin
x1:=TLabel(Main.Components[i]).Left;
x2:=TLabel(Main.Components[i]).Left TLabel(Main.Components[i]).Width;
y1:=TLabel(Main.Components[i]).Top;
y2:=TLabel(Main.Components[i]).Top TLabel(Main.Components[i]).Height;
if (x in [x1..x2]) and (y in [y1..y2]) then
TLabel(Main.Components[i]).Font.Color:=clRed
else
TLabel(Main.Components[i]).Font.Color:=clWhite;
end;
end;
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 在 OnMouseMove 事件更改為你要的顏色,並於 OnMouseLeave 進行還原
procedure TMainForm.Label_PASSWORDMouseLeave(Sender: TObject); begin TLabel(Sender).Color := clBtnFace; TLabel(Sender).Font.Color := clWindowText; end; procedure TMainForm.Label_PASSWORDMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin TLabel(Sender).Color := clRed; TLabel(Sender).Font.Color := clWhite; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: ㄡㄡ,我剛剛看了一下 D6 & D7 都有該項事件,至於 D5 我就不知道了(沒有裝)。 還有一個笨方法,試試在 Label 的 OnMouseMove 去給定該 Label 特定顏色並在 NoteBook 的 OnMouseMove 中去還原所有 Label 的顏色,記得所有 Label 的 OnMouseMove 事件皆為 Label1MouseLeave 即可
procedure TForm1.Label1MouseLeave(Sender: TObject); begin Label1.Color := clBtnFace; Label1.Font.Color := clWindowText; end; procedure TForm1.TabSheet7MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var I : Integer; begin For I := 0 to TTabSheet(Sender).ControlCount - 1 do begin if TTabSheet(Sender).Controls[i].ClassNameIs('TLabel') then begin TLabel(TTabSheet(Sender).Controls[I]).Color := Self.Color; TLabel(TTabSheet(Sender).Controls[I]).Font := Self.Font; end; end; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |