線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1521
推到 Plurk!
推到 Facebook!

Label隨著滑鼠Move而改變顏色??

答題得分者是:Fishman
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-19 11:18:24 IP:61.220.xxx.xxx 未訂閱
請教各方前輩: 我在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-19 11:45:55 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-19 11:58:19 IP:61.220.xxx.xxx 未訂閱
呃....... 我在TLabel物件中找不到MouseLeave的事件...... 是因為版本的關係嗎?? 我是使用D5的.......
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-19 13:20:56 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-19 13:52:32 IP:61.220.xxx.xxx 未訂閱
對丫...... 我印像中好像D6有MouseLeave事件...... 算了.......是我太鑽牛角尖了...... 用前輩您的方法又簡單又明瞭.......Thanks
系統時間:2024-05-19 4:50:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!